2007/02/28

Mysql的一般性安全设置

打开/etc/my.cnf文件,修改以下设置,如果没有,可手动添加。

#取消文件系统的外部锁
skip-locking

#不进行域名反解析,注意由此带来的权限/授权问题
skip-name-resolve

#禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。这个命令会利用MySQL把本地文件读到数据库中,然后用户就可以非法获取敏感信息了。网络上流传的一些攻击方法中就有用它的,它也是很多新发现的SQL Injection攻击利用的手段!
local-infile = 0

#关闭远程连接,即3306端口。这是MySQL的默认监听端口。由于此处MySQL只服务于本地脚本,所以不需要远程连接。尽管MySQL内建的安全机制很严格,但监听一个TCP端口仍然是危险的行为,因为如果MySQL程序本身有问题,那么未授权的访问完全可以绕过MySQL的内建安全机制。(你必须确定,你是否真的不需要远程连接mysql)
skip-networking

修改完my.cnf后,还需要对mysql的用户名、帐号、及默认数据库进行调整
首先先登录mysql,在终端窗口输入 /usr/local/mysql/bin/mysql -u root -p
然后会提示输入密码,输入正确密码后,会出现mysql>提示符。

输入以下命令:
mysql>use mysql;
mysql>update user set user="centos" where user="root"; (将mysql的root用户名修改成centos,防止root的密码被暴力破解)
mysql>select Host,User,Password,Select_priv,Grant_priv from user;
mysql>delete from user where user=''; (删除user用户)
mysql>delete from user where password=''; (删除user用户)
mysql>delete from user where host=''; (删除user用户)
mysql>drop database test; (删除默认的test数据库)
mysql>flush privileges; (刷新mysql的缓存,让以上设置立即生效)
mysql>quit;

为了使以上优化和安全设置生效,请重启Mysql服务或Linux。

关于Mysql的安全设置,这篇文章很值得一看
http://www.unixren.com/linux/bencandy.php?fid=21&id=459


一般来说mysql使用这些安全设定就差不多了。

2007/02/22

NTFS-3g稳定版1.0发布

NTFS-3g稳定版1.0发布 

"NTFS-3G是一个开源的项目,目标是为Linux提供非官方的NTFS的驱动程序。稳定版1.0于2007年2月21日释放。相对于以前的ntfs驱动,ntfs-3g提供了高效可靠的写入支持。"

The NTFS-3G driver is an open source, freely available NTFS driver for Linux with read and write support. It provides safe and fast handling of the Windows XP, Windows Server 2003, Windows 2000 and Windows Vista file systems. Most POSIX file system operations are supported, with the exception of full file ownership and access right support.

The purpose of the project is to develop, continuously quality test and support a trustable, feature rich and high performance solution for hardware platforms and operating systems whose users need to reliably interoperate with NTFS. Besides this practical goal, the project also aims to explore the limits of a hybrid, kernel/user space file system driver approach. Performance, reliability and feature richness per invested effort are being examined.

The driver is in STABLE status. Please see our test methods and testimonials on the driver quality page.

二进制包下载链接:
http://www.ntfs-3g.org/ntfs-3g-1.0.tgz

redhat/centos 相应的rpm /src.rpm下载链接:

http://marush.com/category/linux/rpm/ntfs-3g/

ntfs-3g需要 fuse 2.6以上版本的支持。

2007/02/19

CentOS 4.4 postfix2.3+ sasl 2+ dovecot 1.0搭建简洁快速的论坛邮件服务器

在网上找到的postfix加邮件服务器都稿得很复杂,非要什么mysql来管理帐户,我建的就是个论坛用的邮件服务器,一二个用户就行了,根本没有必要用mysql这个大神。所以我搜索了些资料,搭建一个简洁快速的论坛邮件服务器。

在CentOS中,默认的邮件服务器(SMTP方面)是sendmail,但sendmail有若干的缺点,比如,配置复杂、安全漏洞曾被多次发现--并且依然存在隐患、邮件发送速度慢等等,这里就不再一一叙述。而另一个被广泛应用于邮件服务方面的“Postfix”的缺点就少得多,或者说它就是针对于 sendmail的缺点,而被设计的。对应sendmail的短处,它在各方面也比较成熟。所以,无特殊要求,这里不推荐用sendmail来构建邮件服务器。本站介绍的邮件服务器配置方法,也将基于Postfix。

添加MX记录(这里假设使用固定IP域名)

  由于MX记录添加后,可能生效要等待一段时间(通常为数分钟或数十分钟,也可能马上生效),所以在安装配置前,我们首先为动态域名添加MX记录。添加方法也会因域名ISP的不同而不同,但大致信息如下:

     mx mail.cnprint.org. 10
     a mail 服务器的IP地址
然后再设置mail.cnprint.org的域名A记录,否则,即使你用动态IP建成了邮件服务器,也会被大多数ISP邮件服务器视为垃圾邮件服务器,而无法向其发送邮件。
  mail为别名,10为优先度。这个别名指向服务器的IP地址。
  确认MX记录的添加是否生效的方法:

# host -t mx cnprint.org

cnprint.org mail is handled by 10 mail.cnprint.org.  // 确认MX记录生效
# dig mail.cnprint.org //再查询mail.cnprint.org的域名A记录,已经找到了。
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62310
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; QUESTION SECTION: ;mail.cnprint.org. IN A ;;
ANSWER SECTION: mail.cnprint.org. 227 IN A 125.83.88.7 // 已经查找到mail.cnprint.org的域名A记录在125.83.88.7这个IP上。

安装Postfix

我们这里下载最新的postfix 2.3 的src rpm自己进行编译,postfix 2.3默认已经不支持sasl2验证了,所以我们要自己重新编译加入对sasl2的支持。

下载并安装Postfix。

cd /usr/local/src
wget ftp://ftp.wl0.org/official/2.3/SRPMS/postfix-2.3.7-1.src.rpm

rpm -i postfix-2.3.7-1.src.rpm

cd /usr/src/redhat/SPECS

vi postfix.specs

搜索并找到下面几行修改如下:

%define with_cdb 0
%define with_ldap 0
%define with_mysql 0
%define with_mysql_redhat 0
%define with_pcre 0
%define with_pgsql 0
%define with_sasl 2
%define with_spf 0
%define with_dovecot 1
%define with_tls 1
%define with_tlsfix 2
%define with_vda 0

编译postfix rpm

rpmbuild -ba postfix.sepc

编译完成后安装postfix:

cd ../RPMS/i386/

rpm -ivh postfix-2.3.7-1.rhel4.i386.rpm

配置Postfix及相关组件

[1] 对Postfix进行配置。

# vi /etc/postfix/main.cf  // 编辑Postfix的配置文件

#myhostname = host.domain.tld  // 找到此行,将等号后面的部分改写为主机名
myhostname = sample.cnprint.org  // 变为此状态,设置系统的主机名

#mydomain = domain.tld  // 找到此行,将等号后面的部分改写为域名

mydomain = cnprint.org  // 变为此状态,设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)

#myorigin = $mydomain  // 找到此行,将行首的#去掉

myorigin = $mydomain  // 变为此状态,将发信地址“@”后面的部分设置为域名(非系统主机名)

#inet_interfaces = all  // 找到此行,将行首的#去掉
inet_interfaces = all  // 变为此状态,接受来自所有网络的请求

#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  // 找到此行,将行首的#去掉

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  // 变为此状态,指定发给本地邮件的域名

#relay_domains = $mydestination  // 找到此行,将行首的#去掉

relay_domains = $mydestination  // 变为此状态,定义允许转发的域名

#mynetworks = 168.100.189.0/28, 127.0.0.0/8  // 找到此行,依照自己的内网情况修改
mynetworks = 168.100.189.0/28, 127.0.0.0/8  // 变为此状态,指定内网和本地的IP地址范围

#home_mailbox = Maildir/  // 找到这一行,去掉行首的#

home_mailbox = Maildir/  // 变为此状态,指定用户邮箱目录

# SHOW SOFTWARE VERSION OR NOT #

# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server's greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version. #

# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care. #

#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)  // 找到这一行,接此行添加如下行:

smtpd_banner = $myhostname ESMTP unknow  // 添加这一行,不显示SMTP服务器的相关信息

在配置文件的文尾,添加如下行:

smtpd_sasl_auth_enable = yes  // 服务器使用SMTP认证

smtpd_sasl_local_domain = $myhostname  // 指定SMTP认证的本地域名(主机名)
smtpd_sasl_security_options = noanonymous   // 不允许匿名的方式认证
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,
reject_unauth_destination message_size_limit = 15728640  // 规定邮件最大尺寸为15MB [2]

配置SMTP认证的相关选项

为了提高安全性,我们不将系统用户的密码作为相应用户SMTP认证的密码,而将在后面为用户建立SMTP认证专用的密码。

# vi /usr/lib/sasl2/smtpd.conf  // 编辑SMTP认证的配置文件

pwcheck_method: saslauthd  // 找到此行,将“saslauthd”改为“auxprop”
pwcheck_method: auxprop  // 不使用系统用户密码作为用户的SMTP认证密码

# vi /etc/sysconfig/saslauthd

MECH=shadow  // 找到这一行,在前面加#

#MECH=shadow  //不使用shadow机制

FLAGS=  // 找到此行,在等号后面添加“sasldb”

FLAGS=sasldb   // 定义认证方式为sasldb2

[3] 建立用户的邮箱目录

首先建立用户模板下的邮箱目录,以便于建立新用户时,相应用户的邮箱目录自动被建立。

# mkdir /etc/skel/Maildir  // 在用户模板下建立用户邮箱目录

# chmod 700 /etc/skel/Maildir  // 设置用户邮箱目录属性为700 然后再为已经存在的用户建立相应邮箱目录。

# mkdir /home/cnprintorg/Maildir  // 为用户(这里以cnprintorg用户为例)建立邮箱目录

# chmod 700 /home/cnprintorg/Maildir  // 设置该用户邮箱目录属性为700

# chown cnprintorg. /home/cnprintorg/Maildir  // 设置该用户邮箱目录为该用户所有

[4] 为用户设置SMTP认证密码

# saslpasswd2 -u sample.cnprint.org -c cnprintorg  // 为cnprintorg用户设置SMTP认证密码
Password:  // 在这里输入密码(不会显示)

Again (for verification):  // 再次输入密码

[5] 改变SALS的属性及归属

# chgrp postfix /etc/sasldb2  // 将数据库归属改为postfix,

# chmod 640 /etc/sasldb2  // 将数据库属性改为640

[6] 关闭sendmail服务及设置默认MTA

因为在用Postfix作为SMTP服务器的前提下,我们不准备再用sendmail,所以将sendmail服务关掉,以确保安全及节省系统资源。


# /etc/rc.d/init.d/sendmail stop  // 关闭sendmail服务

Shutting down sendmail:         [ OK ] Shutting down sm-client: [ OK ]

# chkconfig sendmail off  // 关闭sendmail自启动

# chkconfig --list sendmail  // 确认sendmail自启动已被关闭(都为off就OK)

sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off

然后再将默认的MTA设置为Postfix。

# alternatives --config mta  // 设置默认MTA

There are 2 programs which provide 'mta'.
Selection Command
-----------------------------------------------

*+ 1 /usr/sbin/sendmail.sendmail  // 当前状态:sendmail为默认MTA
2 /usr/sbin/sendmail.postfix


Enter to keep the current selection[+], or type selection number: 2  // 在这里输入2,使Postfix成为默认MTA 启动相应服务

最后,启动SMTP认证及Postfix服务,并设置相应服务为自启动。

# chkconfig saslauthd on  // 将SMTP-Auth设置为自启动

# chkconfig --list saslauthd  // 确认SMTP-Auth服务状态

saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off  // 确认2~5为on的状态就OK

# /etc/rc.d/init.d/saslauthd start  // 启动SMTP-Auth Starting saslauthd:           [ OK ]

# chkconfig postfix on// 将Postfix设置为自启动

# chkconfig --list postfix  // 确认Postfix服务状态

postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off  // 确认2~5为on的状态就OK

# /etc/rc.d/init.d/postfix start  // 启动Postfix Starting postfix:            [ OK ]

至此,就完成了SMTP服务器方面的配置,但目前只具从备客户端通过服务器发送邮件的功能。做为完整的邮件服务器,还需具备从客户端通过POP/IMAP协议接受邮件到本地的功能。

POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。 其中,与 POP3 是从邮件服务器中下载邮件比起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。这里,我们用 Dovecot 来实现对 POP3 及 IMAP4 等协议支持的邮件接收服务器的搭建。 Dovecot 是一个比较新的软件,由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。另外,Dovecot 支持多种认证方式,所以在功能方面也比较符合一般的应用。

安装 Dovecot 首先,安装 Dovecot 。

cd /usr/local/src

wget http://download.fedora.redhat.com/pub/fedora/linux/core/updates/6/SRPMS/dovecot-1.0-1.1.rc15.fc6.src.rpm

rpm -i dovecot-1.0-1.1.rc15.fc6.src.rpm

cd /usr/src/redhat/SPECS

由于dovecot默认支持mysql,postgresql,而我们不需要,所以我们编译源代码,去掉对mysql,postgresql的支持。如果现在不编译。等一会儿要求你安装mysql 4.1.20,否则,不会你安装。呵呵。这样mysql 4.1.20可能跟我们手动安装的mysql 5.0冲突,为了系统的稳定,所以我们取消了那些不需要的认证方式。

vi dovecot.spec

搜索以下语句:

%define build_postgres 1
%define build_mysql 1
%define upstream 1.0.rc15

修改为:

%define build_postgres 0
%define build_mysql 0
%define upstream 1.0.rc15


降低对openssl的版本要求,查找:

Prereq: openssl >= 0.9.7f4, /sbin/chkconfig, /usr/sbin/useradd

修改为:
change to Prereq: openssl >= 0.9.7a, /sbin/chkconfig, /usr/sbin/useradd


编译rpm 文件。
rpmbuild -ba dovecot.spec


cd ../RPMS/i386/

rpm -ivh dovecot-1.0-1.1.rc15.i386.rpm

OK.

配置 Dovecot

然后,修改相应配置文件,配置 Dovecot 。
# vi /etc/dovecot.conf  // 编辑Dovecot 的配置文件

#protocols = imap imaps pop3 pop3s  // 找到这一行,去掉行首的#
 
protocols = imap imaps pop3 pop3s  // 变为此状态

# mail_location = maildir:~/Maildir  // 找到这一行,定义邮件目录
 
mail_location = maildir:~/Maildir  // 定义邮件目录为用户目录下的Maildir目录

添加防火墙规则

  由于 POP3 协议与 IMAP4 协议要分别用到110号和143号端口,所以在启动服务前,配置防火墙,开通这两个端口。
# vi /usr/local/sbin/fw.sh  // 编辑防火墙规则

/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT //
/sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT // 允许POP使用的110号端口
/sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT // 允许IMAP使用的143号端口

# /etc/rc.d/init.d/iptables restart  // 重新启动防火墙,使新的设置生效

Flushing firewall rules:          [ OK ]
Setting chains to policy ACCEPT: filter   [ OK ]
Unloading iptables modules:       [ OK ]
Applying iptables firewall rules:      [ OK ]

启动 Dovecot

最后,启动 Dovecot ,并将其设置为自启动。

# chkconfig dovecot on  // 设置Dovecot为自启动

# chkconfig --list dovecot
dovecot 0:off 1:off 2:on 3:on 4:on 5:on 6:off  // 确认2~5为on的状态就OK

# /etc/rc.d/init.d/dovecot start  // 启动Dovecot服务

Starting Dovecot Imap:        [ OK ]

test

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix
ehlo dd
250-localhost.localdomain
250-PIPELINING
250-SIZE 15728640
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN //
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
dfdf
334 UGFzc3dvcmQ6

telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.


这样我们利用postfix和 dovecot两个RPM包就成功的安装了我们的邮件服务器了。而不会装其他很多无价值的东西。真是又快又简单。

2007/02/12

建立了一个CentOS qq 交流群

有兴趣的兄弟可以共同进来交流下。

QQ群号:28910308

请注明centos

2007/02/11

CentOS 4.4 编译安装 apache 2.2.4(mod_ssl)+php 5.2.1 with Suhosin-Patch+mysql 5.0.33+Zend Optimizer v3.2.2+eaccelerator-0.9.5+phpmyadmin 2.10笔记 v1.2

v1.2 2007年2月12日 apache 更新为2.2.4版本,增加mod_ssl和openssl支持,增加apr和apr-util的编译, php更新为5.2.1,增加集成Suhosin补丁,mysql 更新为5.0.33, Zend Optimizer 更新为3.2.2, 增加phpmyadmin.修改一些文字错误。
v1.0 2007年1月11日

先声明,我绝对是个Linux的菜鸟,以下的这些文字个人的安装笔记,是参考了网上许多高手的成功经验组合而成的,说实话我自己的东西不多 :)我想把这些经验写下来,既可以对其他跟我一样摸索的兄弟一个经验,也可以防止以后自己都忘记了,嘿嘿。

所以如果某个大虾看到我借用了你的资源,请你不要生气。也欢迎大家进行指点。

1、下载centos 4.4
我是下载的DVD版本,大家也可以下载服务器CD安装版本,其实都差不多。大家可以到这儿下载,速度很快的。
http://ftp.iasi.roedu.net/mirrors/centos.org/4.4/isos/i386/

下载后当然就刻录成光盘。我建议你刻录DVD啦,如果是菜鸟,也可以在图形界面进行学习,不会这么抓不住头脑。

2、(1)安装CentOS4.4
作为服务器,不安装不需要的组件,所以在选择组件的时候,除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动编译安装。


系统约定RPM包和源码包存放位置

RPM包和源码包存放位置 /usr/local/src
源码包编译安装位置(prefix) /usr/local/xxx
脚本以及维护程序存放位置 /usr/local/sbin
MySQL 数据库位置 /var/lib/mysql
Apache 网站根目录 /home/www
Apache 虚拟主机日志根目录 /data/logs/www
yum RPM包信息文件 /etc/yum.list

(2)更新系统,此处我们使用up2date,先修改up2date镜像。
vi /etc/sysconfig/rhn/sources

我把源修改成这样了:

yum centos4-Base http://mirror.be10.com/centos/4/os/$ARCH/
yum centos4-Updates http://mirror.be10.com/centos/4/updates/$ARCH/
yum centos4-extras http://mirror.be10.com/centos/4/extras/$ARCH/
yum centos4-contrib http://mirror.be10.com/centos/4/contrib/$ARCH/
yum centos4-addons http://mirror.be10.com/centos/4/addons/$ARCH/
yum centos4-centosplus http://mirror.be10.com/centos/4/centosplus/$ARCH/

然后执行:
# up2date -l //列出更新
# up2date -uf //更新包括版本的所有程序。如果不包括内核,则用up2date -u


3、系统环境部署及调整

(1). 检查系统是否正常
# more /var/log/messages //检查有无系统内核级错误信息
# demesg //检查硬件设备是否有错误信息
# ifconfig //检查网卡设置是否正确
# ping www.163.com // 检查网络是否正常

(2). 关闭不需要的服务
# export LANG='en_US' //设置语言
# setup //选择启动的服务
进入system service 选项。
以space 键选定所需服务。
以下仅列出需要启动的服务,未列出的服务一律关闭:
crond
irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
microcode_ctl
network
vsftpd
sshd
syslog

(3)、修改/etc/yum.repos.d/CentOS-Base.repo,将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下:

# CentOS-Base.repo
#
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
http://mirror.be10.com/centos/$releasever/os/$basearch/
http://centos.hostlink.com.hk/$releasever/os/$basearch/
http://ftp.hostrino.com/pub/centos/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#released updates
[update]
name=CentOS-$releasever - Updates
baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
http://mirror.be10.com/centos/$releasever/os/$basearch/
http://centos.hostlink.com.hk/$releasever/os/$basearch/
http://ftp.hostrino.com/pub/centos/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
http://mirror.be10.com/centos/$releasever/os/$basearch/
http://centos.hostlink.com.hk/$releasever/os/$basearch/
http://ftp.hostrino.com/pub/centos/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
http://mirror.be10.com/centos/$releasever/os/$basearch/
http://centos.hostlink.com.hk/$releasever/os/$basearch/
http://ftp.hostrino.com/pub/centos/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

保存。

然后导入key升级相应yum数据

# rpm --import /usr/share/doc/centos-release-4/RPM-GPG-KEY-centos4
# yum list tee /etc/yum.list //读取yum list 数据,将其输出到 /etc/yum.list。


(4)、定时校正服务器时间
# yum install ntp
# crontab -e
0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1

以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。

(5). 对TCP/IP网络参数进行调整,加强抗SYN Flood能力
# echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件
# sysctl -p //查看

(6)、FTP服务器的配置
vi /etc/vsftpd/vsftpd.conf
把anonymous_enable=YES注释掉不允许匿名登录。
把chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
前的注释去掉。
把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)
然后保存,service vsftpd start就可以了。

这时应当添加用户,因为root默认不能通过FTP方式登录。

# adduser username
# passwd userpassword

这样对于我们上传一些文件到系统中很方便。


4. 重新启动系统
# init 6


5. 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)
# yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel

#这里我们将编译GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg等先用RPM的方式一并安装好,避免手动编译浪费时间,同时也能避免很多错误,这几个小软件的编译很麻烦。这几个小软件编译错误了,GD当然安装不了,php5的编译当然也没戏了。所以我们抓大放小,对这些小牛鬼蛇神采取快速简洁的方式进行安装。并且对服务器的性能也不能产生什么影响。

6. 源码编译安装所需包 (Source)
(1) GD2
# cd /usr/local/src
# wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
# tar xzvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure --prefix=/usr/local/gd2 --mandir=/usr/share/man //./configure 配置。
# make //make 是用来编译的,它从 Makefile 中读取指令,然后编译。
# make install //make install 是用来安装的,它也从 Makefile 中读取指令,安装到指定的位置。

(2) Apache 日志截断程序
# cd /usr/local/src
# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
# tar xzvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure --prefix=/usr/local/cronolog
# make
# make install

(3) libxml 库程序
# cd /usr/local/src
# wget http://ftp.gnome.org/pub/gnome/sources/libxml2/2.6/libxml2-2.6.26.tar.gz
# tar zxvf libxml2-2.6.26.tar.gz
# cd libxml2-2.6.26
# ./configure --prefix=/usr/local/libxml2
# make
# make install

7、编译mysql 5.0.33

cd /usr/local/src
# wget http://mysql.oss.eznetsols.org/Downloads/MySQL-5.0/mysql-5.0.33.tar.gz
# tar xzvf mysql-5.0.33.tar.gz
# cd mysql-5.0.33

修改mysql 客户端最大连接数, 默认的只有100,远远达不到我们的要求。

# vi sql/mysqld.cc

搜索找到下面一行:
{"max_connections", OPT_MAX_CONNECTIONS,
"The number of simultaneous clients allowed.", (gptr*) &max_connections,
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,
0},

将其中的100改为1500, 当然小点也可以,根据你的需要来,不建议改的太大。

{"max_connections", OPT_MAX_CONNECTIONS,
"The number of simultaneous clients allowed.", (gptr*) &max_connections,
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,
0},

保存。

# CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-comment=Source --with-server-suffix=-Community-Server --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=latin1 --with-collation=latin1_swedish_ci --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-innodb --without-ndb-debug --without-isam


配置成功会提示:

MySQL has a Web site at [URL="http://www.mysql.com/"][COLOR=#000000]http://www.mysql.com/[/COLOR][/URL] which carries details on the
latest release, upcoming features, and other information to make your
work or play with MySQL more productive. There you can also find
information about mailing lists for MySQL discussion.

Remember to check the platform specific part of the reference manual for
hints about installing MySQL on your platform. Also have a look at the
files in the Docs directory.

Thank you for choosing MySQL!

// 注意 ,CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" 这个环境参数只针对intel P4 芯片,如果你的CPU是AMD的,注意不能使用。请查看相应的编译优化参数。否则程序会无法编译,即使编译成功也无法运行,嘿嘿。

# make
编译的时间可能会比较长,毕竟优化的比较厉害。

# make install

编译安装完成后执行后续操作:
# useradd mysql //添加 mysql 用户
# cd /usr/local/mysql
# bin/mysql_install_db --user=mysql
# chown -R root:mysql . //设置权限,注意后面有一个 "."
# chown -R mysql /var/lib/mysql //设置 mysql 目录权限
# chgrp -R mysql . //注意后面有一个 "."
# cp share/mysql/my-medium.cnf /etc/my.cnf
# cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# /etc/rc.d/init.d/mysqld start //启动 MySQL
# bin/mysqladmin -u root password "password_for_root"
# service mysqld stop //关闭 MySQL

8. 编译安装 Apache
# cd /usr/local/src
# wget http://www.ip97.com/apache.org/httpd/httpd-2.2.4.tar.gz
# tar zxvf httpd-2.2.4.tar.gz
# cd httpd-2.2.4

依次安装apr和apr-util

# cd srclib/apr
# ./configure --prefix=/usr/local/apr --enable-threads --enable-other-child USE=ipv6
# make && make install

# cd ../apr-util
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-mysql=/usr/local/mysql
# make && make install

cd /usr/local/src/httpd-2.2.4
# CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate=shared --with-mysql=/usr/local/mysql --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-static-support --enable-static-htpasswd --enable-static-htdigest --enable-static-rotatelogs --enable-static-logresolve --enable-static-htdbm --enable-static-ab --enable-static-checkgid --disable-cgid --disable-cgi --with-mpm=worker --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --enable-ssl --with-ssl=/usr/include/openssl

# make
# make install
# echo '/usr/local/apache2/bin/apachectl start ' >> /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。

注解:
./configure //配置源代码树
--prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。
--enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
--enable-mods-shared=all //编译全部的模板,对于不需要我们可以在httpd.conf去掉。
--enable-cache //支持缓存
--enable-file-cache //支持文件缓存
--enable-mem-cache //支持记忆缓存
--enable-disk-cache //支持磁盘缓存
--enable-static-support //支持静态连接(默认为动态连接)
--enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
--enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
--enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序
--enable-static-logresolve //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名
--enable-static-htdbm //使用静态连接编译 htdbm - 操作 DBM 密码数据库
--enable-static-ab //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具
--enable-static-checkgid //使用静态连接编译 checkgid
--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本
--disable-cgi //禁止编译 CGI 版本的 PHP
--with-mpm=worker // 让apache以worker方式运行
--enable-ssl // 编译 ssl模块。

将apache设置成开机自启动:

在/etc/rc.d/rc.local文件中加入一行
/usr/local/apache2/bin/apachectl start
这样每次重新启动系统以后,apache也会随系统一起启动.

或者
# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)
# chkconfig: 2345 10 90
# description: Activates/Deactivates Apache Web Server
最后,运行chkconfig把Apache添加到系统的启动服务组里面:
# chkconfig --add httpd
# chkconfig httpd on


9、编译php 5.2.1并打上Suhosin Patch。
Suhosin是php增强型安全补丁,可以编译到静态内核中,也可以编译成php动态扩展。我个人强烈你建议安装成静态内核。Suhosin已经进入freebsd和gentoo的ports。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。

# cd /usr/local/src
# wget http://cn.php.net/get/php-5.2.1.tar.gz/from/this/mirror
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.1-0.9.6.2.patch.gz
# tar zxvf php-5.2.1.tar.gz
# gunzip suhosin-patch-5.2.1-0.9.6.2.patch.gz
# cd php-5.2.1
patch -p 1 -i ../suhosin-patch-5.2.1-0.9.6.2.patch

#./buildconf --force

# CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-zlib-dir --with-bz2 --with-tiff-dir --with-libxml-dir=/usr/local/libxml2 --with-gd=/usr/local/gd2 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-ttf --enable-mbstring --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/etc --with-iconv --disable-ipv6 --enable-static --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte --enable-inline-optimization --enable-zend-multibyte --enable-sockets --enable-soap --enable-suhosin --with-openssl

# make

# make install

# cp php.ini-recommended /etc/php.ini


在这里也顺便说一下将suhosin安装成为php的动态扩展的方法。毕竟网上根本不见它的中文安装教程。

虽然我个人不推荐这种方式。

wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.16.tgz
tar zxvf suhosin-0.9.16.tgz
cd suhosin-0.9.16
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

会提示编译的模块存在的目录,记住它。
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

然后在php.ini中增加一行下列语句。
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so

10 、整合apache 与php
# vi /usr/local/apache2/conf/httpd.conf
在最后一行加上:
AddType application/x-httpd-php .php

查找:(设置 WEB 默认文件)
DirectoryIndex index.html
替换为:
DirectoryIndex index.php index.html index.htm //在 WEB 目录不到默认文件,httpd 就会执行 /var/www/error/noindex.html

找到这一段:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride none

更改为AllowOverride all
允许apache rewrite

# 监听443端口,支持https连接
取消注释 httpd.conf 中的 Include conf/extra/httpd-ssl.conf

保存httpd.conf,退出。

# /usr/local/apache2/bin/apachectl restart //重启 Apache

11. 查看确认 L.A.M.P 环境信息
vi /usr/local/apache2/htdocs/phpinfo.php
增加下面一行,并保存。

# chmod 755 /usr/local/apache2/htdocs/phpinfo.php

用浏览器打开 [URL="http://127.0.0.1/phpinfo.php"][COLOR=#000000]http://127.0.0.1/phpinfo.php[/COLOR][/URL]


# echo ' ' > /usr/local/apache2/htdocs/testdb.php
# chmod 755 /usr/local/apache2/htdocs/testdb.php
# service mysqld start
用浏览器打开 [URL="http://127.0.0.1/testdb.php"][COLOR=#000000]http://127.0.0.1/testdb.php[/COLOR][/URL]
检查 phpinfo 中的各项信息是否正确。

12、设置SSL并创建自己的CA

# cd /usr/share/ssl/misc

# ./CA -newca

屏幕上出现如下的提示:CA certificate filename (or enter to create)

这是要求输入要创建的CA的证书文件名, 可以直接回车或输入证书文件名。

Making CA certificate ...
Generating a 1024 bit RSA private key
.........++++++
................................++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase:

Verifying password - Enter PEM pass phrase:-

此时要求输入和验证CA的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。

至此,在当前目录下生成了demoCA的目录,CA的证书就在该目录下,文件名为cacert.pem

生成服务器的证书请求

# ./CA -newreq

屏幕上出现如下的提示:

Generating a 1024 bit RSA private key
.....................................................++++++
.....++++++
writing new private key to 'newreq.pem'
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:

此时要求输入和验证服务器的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。

Please enter the following 'extra' attributes

to be sent with your certificaterequest

A challenge password []:

An optional company name []:

.Request (and private key) is in newreq.pem

这是要求输入服务器的相关信息。

此时,在当前目录下生成了一个名为newreq.pem的文件,包含了要生成服务器数字证书的请求。

签署证书

# ./CA -sign

屏幕上出现如下的提示:

Using configuration from /usr/share/ssl/openssl.cnf

Enter PEM pass phrase:

此时一样需要输入CA的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。

Certificate is to be certified until Nov 19 13:46:19 2002 GMT (365 days)

Sign the certificate? [y/n]:y

这时显示证书请求文件中的各项信息,并询问是否要签署证书,回答y,进行签署。

1 out of 1 certificate requests certified, commit? [y/n]y

回答y,会显示已经签署的证书的信息,并在当前目录下生成服务器的证书文件newcert.pem。

# mkdir /usr/local/apache2/conf/ssl.crt/
# mkdir /usr/local/apache2/conf/ssl.key/
# cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.pem
# cp newreq.pem /usr/local/apache2/conf/ssl.key/server.pem


更改服务器的证书文件的相关配置
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf

查找并修改

# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.pem
#SSLCertificateFile /usr/local/apache2/conf/server-dsa.crt

# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.pem
#SSLCertificateKeyFile /usr/local/apache2/conf/server-dsa.key


示例文件

在SSL的根目录中生成一个index.html,它是如下所示:

<html>

这是SSL示例!

</html>

测试

假如Web服务器的DNS名称是www.cnprint.org.

在浏览器的URL地址栏里输入 http://www.cnprint.org/,浏览器便会显示APACHE安装时确省的Test Page.

在浏览器的URL地址栏里输入 https://www.cnprint.org/,注意:是 https 而不是http !

浏览器会提示站点已经采用了SSL进行数据的加密传输.由于我们的CA证书不是浏览器缺省的信任的根证书,所以,浏览器会说无法确认服务器的证书可信。暂时不管,一直NEXT,最后,浏览器会显示:这是SSL示例!

可以把CA的证书放在非SSL的站点上,让浏览器下载并安装CA证书,并将其设置成可信任的根证书,便可解决上面的问题.8 解除HTTPD起动时的口令输入。

由于安全的原因,Web服务器的私钥是口令加密了的,每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。

如果要解除HTTPD起动时的口令输入,可以这样:

# cd /usr/local/apache2/conf/ssl.key/
# cp server.pem server.pem.org
# openssl rsa -in server.pem.org -out server.pem
# chmod 400 server.pem

另外在网上看到一个方法,我没有试。有兴趣的可以试下。

创建SSL密码自动应答文件,否则每次Apache启动的时候,都会要求你输入SSL的密码.
创建 /usr/local/apache2/conf/ssl.key/sendsslpwd ,内容如下.

#!/bin/bash
SSLpasswd="YOUR PASSPHRASE"
echo $SSLpasswd
chmod 755 /usr/local/apache2/conf/ssl.key/sendsslpwd

此时,Web服务器的私钥已经没有口令加密,一定要确保server.pem文件除root外,任何用户均无权读取它。


13、安装 Zend Optimizer
# cd /usr/local/src
# wget http://downloads.zend.com/optimizer/3.2.2/ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
# tar xzvf ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
# ./ZendOptimizer-3.2.2-linux-glibc21-i386/install.sh
按照它的提示一步步进行就行了。

14、安装eaccelerator // eaccelerator是php的加速软件,使用后php的执行效率会有较大幅度的提升。目前eaccelerator 0.9.5已经和ZendOptimizer-3.2.2能够很好兼容啦。不过我个人觉得,ZendOptimizer-3.2.2没有加速的功能,只是起到了运行zend加密文件的作用而已。闲话不多说了,大家有兴趣的,可以去google下。

# cd /usr/local/src
# wget http://bart.eaccelerator.net/source/0.9.5/eaccelerator-0.9.5.tar.bz2
# tar -jxvf eaccelerator-0.9.5.tar.bz2
# cd eaccelerator-0.9.5

export PHP_PREFIX="/usr/local/php"
$PHP_PREFIX/bin/phpize //指定一下php的目录

# ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config // 设置

# make & make install

编译安装后我们会看到屏幕提示的eaccelerator.so所在的目录,比如我得到的是/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so,记住这个路径,待会要用到。

修改php.ini(安装完zend之后,php.ini存放于/usr/local/Zend/etc)
在文件最后,zend之前,注意,这部分内容务必放在zend之前,不然可能会出现不可预期的服务器问题。添加下列信息:

[eaccelerator]
extension="/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

解释:
zend_extension 是安装完程序自动指示给我们的
eaccelerator.shm_size="32" 缓存大小单位MB
eaccelerator.cache_dir="/tmp/eaccelerator" 缓存路径

# mkdir /tmp/eaccelerator // 建立目录
# chmod 0777 /tmp/eaccelerator // 修改目录属性

最后重新启动apachectl

重启apache,phpinfo显示:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
with eAccelerator v0.9.5, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies
with Zend Optimizer v3.2.2, Copyright (c) 1998-2006, by Zend Technologies

也会有eAccelerator的具体信息。

15、安装phpmyadmin,管理mysql数据库

# cd /usr/local/apache2/htdocs/
# wget http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.10.0-beta1-all-languages.tar.bz2

# tar jxvf phpMyAdmin-2.10.0-beta1-all-languages.tar.bz2
# mv phpMyAdmin-2.10.0-beta1-all-languages phpmyadmin

# cd phpmyadmin/libraries

修改配置文件
# vi config.default.php

找到这几行进行修改:
$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (valid choices: config, http, HTTP, signon or cookie)
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'PASSWORD'; // MySQL password (only needed

经过这几个步骤,我们一个比较安全的LAMP服务器就环境基本建立成功啦。感觉上也不是很难,是吧?
当然对于打造基于动态IP的网站,以上的信息还不够,还有建立ADSL拨号,NAT,动态域名更新,防火墙,安装论坛程序等一系列的工作,我会慢慢地写出自己的心得与大家分享。毕竟这对我来说,也是个学习的过程。

2007/02/10

修改 Linux 下面mysql 5.0.xx 的默认连接数

这段时间服务器崩溃2次,一直没有找到原因,今天看到论坛发出的错误信息邮件,想起可能是mysql的默认连接数引起的问题,一查果然,老天,默认连接数才100, 怎么够呀,在网上找了半天资料,有说修改my.cnf的,有说修改safe_mysqld,试了,前者无用,后者文件找不到:)原来是以前的版本跟现在的版本有所不同。

言归正传。我以centos 4.4 下面的mysql 5.0.27 手工编译版本为例说明:

vi /usr/local/mysql/bin/mysqld_safe

找到safe_mysqld编辑它,找到mysqld启动的那两行,在后面加上参数 :
-O max_connections=1500

具体一点就是下面的位置:

用红字特别说明:

then $NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file --skip-external-locking -O max_connections=1500 >> $err_log 2>&1 else eval "$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file --skip-external-locking $args -O max_connections=1500 >> $err_log 2>&1"

保存。
# service mysqld restart
# /usr/local/mysql/bin/mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到
max_connections 1000 即新改动已经生效。

还有一种方法,
修改原代码:

解开MySQL的原代码,进入里面的sql目录修改mysqld.cc找到下面一行:

{"max_connections", OPT_MAX_CONNECTIONS,
"The number of simultaneous clients allowed.", (gptr*) &max_connections,
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,
0},

把它改为:

{"max_connections", OPT_MAX_CONNECTIONS,
"The number of simultaneous clients allowed.", (gptr*) &max_connections,
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,
0},

存盘退出,然后./configure ;make;make install可以获得同样的效果

2007/02/07

最新的Codeweavers CrossOver Office Professional 6.0下载

6.0才出来,真不好找,找了半天才在0day里面找到。可是却下载不了。
终于发现了BT,能够下载,提供给大家。

Codeweavers.CrossOver.Office.Professional.v6.0.LINUX-SHOCK

http://www.mininova.org/get/571009

CrossOver Office 6.0的特色是对微软office系统2003的支持。新"Bottles" 能力CrossOver Office, 版本5.0 提供全新的虚拟化技术称Bottles 。

"Bottles为它提供巨大的可靠的和便利的未实施CrossOver Office的用户更容易的安装。Bottles创造一个有利环境为所有公司的重要软件。 管理员能有效地现在安装, 处理, 并且更新他们公司的整个窗口应用存货在CrossOver Office之内。

"其它操作的改善对CrossOver Office5.0 包括一个更好的整体视觉介绍, 例如, 更加光滑的页刷新和少量图表人工制品。 新软件为DirectX 并且提供更好的API支持 。最新的wine技术wine项目是全世界开放来源编程的社区致力创造Win32 的实用实施API 在Unix 之下。 由工作在旁边, 并且贡献对, wine项目, CodeWeavers 能提供CrossOver Office5.0 用户实际上所有改善被发现在新wine 0.9 里。

wine0.9 是主要发行和wine中具有历史性的版本。 它提供健壮和充分功能核心, 以对微软组分的最小对没有依赖。 这是在CodeWeavers 的工作安置者(微软安置者) 并且使窗口能应用增加的可能wine的COM (组分对象模型) 部份安装在wine0.9 和CrossOver Office5.0 。

定价, 折扣CrossOver Office5.0 标准版现在是可利用的为$39.95 。 CrossOver Office5.0 专家版, 产品的企业版本, 定价在$69.95, 以总量折扣可利用。 下载任何产品CrossOver Office5.0 家庭, 或学会更多, 参观www.codeweavers.com