CentOS5.0 编译安装 apache 2.2.8+php 5.2.5+mysql 5.0.45+google-perftools +Zend Optimizer v3.3.0+eaccelerator
----------------------------------------------------------------------------------------------------------------
优化Linux内核参数
vi /etc/sysctl.conf
在末尾增加以下内容:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
使配置立即生效:
/sbin/sysctl -p
----------------------------------------------------------------------------------------------------------------
定时校正服务器时间
# yum install ntp
# crontab -e
0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1
以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。
----------------------------------------------------------------------------------------------------------------
修改yum源
[base]
name=CentOS-5 - Base
repo=os
baseurl=http://mirror.lib.tsinghua.edu.cn/centos/5/os/$basearch/
http://mirror.tini4u.net/centos/5/os/$basearch/
http://ftp.daum.net/centos/5/os/$basearch/
http://mirror.secuidc.com/centos/5/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[update]
name=CentOS-5 - Updates
baseurl=http://mirror.lib.tsinghua.edu.cn/centos/5/updates/$basearch/
http://ftp.daum.net/centos/5/updates/$basearch/
http://mirror.secuidc.com/centos/5/updates/$basearch/
http://mirror.tini4u.net/centos/5/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[addons]
name=CentOS-5 - Addons
baseurl=http://mirror.lib.tsinghua.edu.cn/centos/5/addons/$basearch/
http://ftp.daum.net/centos/5/addons/$basearch/
http://mirror.secuidc.com/centos/5/addons/$basearch/
http://mirror.tini4u.net/centos/5/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[extras]
name=CentOS-5 - Extras
baseurl=http://mirror.lib.tsinghua.edu.cn/centos/5/extras/$basearch/
http://ftp.daum.net/centos/5/extras/$basearch/
http://mirror.secuidc.com/centos/5/extras/$basearch/
http://mirror.tini4u.net/centos/5/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[centosplus]
name=CentOS-5 - Plus
baseurl=http://mirror.lib.tsinghua.edu.cn/centos/5/centosplus/$basearch/
http://ftp.daum.net/centos/5/centosplus/$basearch/
http://mirror.secuidc.com/centos/5/centosplus/$basearch/
http://mirror.tini4u.net/centos/5/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[contrib]
name=CentOS-5 - Contrib
baseurl=http://mirror.lib.tsinghua.edu.cn/centos/5/contrib/$basearch/
http://ftp.daum.net/centos/5/contrib/$basearch/
http://mirror.secuidc.com/centos/5/contrib/$basearch/
http://mirror.tini4u.net/centos/5/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
然后导入key升级相应yum数据
# rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
# yum list | tee /etc/yum.list //读取yum list 数据,将其输出到 /etc/yum.list。
---------------------------------------------------------------------------------------------------------------
安装支持文件
yum install -y zlib zlib-devel libxml2-devel curl curl-devel libidn-devel e2fsprogs-devel keyutils-libs-devel libselinux-devel libsepol-devel krb5-devel openssl-devel
---------------------------------------------------------------------------------------------------------------
使用 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
----------------------------------------------------------------------------------------------------------------
GD2
# tar xzvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure --prefix=/usr/local/gd2 --mandir=/usr/share/man
# make
# make install
-----------------------------------------------------------------------------------------------------------------
Apache 日志截断程序
# tar xzvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure --prefix=/usr/local/cronolog
# make
# make install
-----------------------------------------------------------------------------------------------------------------
libxml 库程序
# tar zjvf libxml2-2.6.26.tar.gz
# cd libxml2-2.6.26
# ./configure --prefix=/usr/local/libxml2
# make
# make install
------------------------------------------------------------------------------------------------------------------
编译mysql 5.0.45
cd /usr/local/src
# wget http://mysql.oss.eznetsols...
# tar xzvf mysql-5.0.45.tar.gz
# cd mysql-5.0.45
# 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 --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 --enable-assembler --without-innodb --without-ndb-debug
# 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-huge.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
-------------------------------------------------------------------------------------------------------------------
安装google-perftools:
wget http://google-perftools.googlecode.com/files/google-perftools-0.97.tar.gz
tar zxvf google-perftools-0.97.tar.gz
cd google-perftools-0.97/
./configure
make && make install
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
修改MySQL启动脚本(根据你的MySQL安装位置而定):
vi /usr/local/mysql/bin/mysqld_safe
在# executing mysqld_safe的下一行,加上:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
保存后退出,然后重启MySQL服务器。
使用lsof命令查看tcmalloc是否起效:
/usr/sbin/lsof -n | grep tcmalloc
如果发现以下信息,说明tcmalloc已经起效:
mysqld 10847 mysql mem REG 8,5 1203756 20484960 /usr/local/lib/libtcmalloc.so.0.0.0
-----------------------------------------------------------------------------------------------------------------
编译安装 Apache
# tar zxvf httpd-2.2.8.tar.gz
# cd httpd-2.2.8
# 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-module=so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --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 --disable-userdir --with-mpm=worker --enable-authn-dbm=shared --enable-authn-anon=shared --enable-authn-dbd=shared --enable-auth-basic=shared
# make
# make install
# echo '/usr/local/apache2/bin/apachectl start ' >> /etc/rc.local
-----------------------------------------------------------------------------------------------------------------
编译php 5.2.5
# tar zxvf php-5.2.5.tar.gz
# cd php-5.2.5
# 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 --with-openssl --with-xmlrpc --with-curl
# make && make install
cp php.ini-dist /etc/php.ini
-------------------------------------------------------------------------------------------------------------------
整合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
保存httpd.conf,退出。
# /usr/local/apache2/bin/apachectl restart //重启 Apache
-------------------------------------------------------------------------------------------------------------------
安装 Zend Optimizer
# tar xzvf ZendOptimizer-3.2.0-linux-glibc21-i386.tar.gz
# ./ZendOptimizer-3.2.0-linux-glibc21-i386/install.sh
按照它的提示一步步进行就行了。
-------------------------------------------------------------------------------------------------------------------
安装eaccelerator
# tar -jxvf eaccelerator-0.9.5.tar.bz2
# cd eaccelerator-0.9.5
export PHP_PREFIX="/usr/local/php"
$PHP_PREFIX/bin/phpize
# ./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之前,不然可能会出现不可预期的服务器问题。添加下列信息:
extension_dir="/usr/local/php/lib/php/extensions/no-debug-zts-20060613/"
extension="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"
# mkdir /tmp/eaccelerator
# chmod 0777 /tmp/eaccelerator
最后重新启动apachectl
-------------------------------------------------------------------------------------------------------------------
