LVS+keeplived+nginx+apache搭建高可用、高性能php集群
http://kerry.blog.51cto.com/172631/600590
基于PHP的运行环境大家用的比较多的是以apache做中间件的LAMP(linux+apache+mysql+php)环境和以nginx做中间件的LNMP(linux+nginx+mysql+php)环境,apache是世界排名第一的web服务器,apache可以整合大多数应用,比如jsp,php,cgi,python等等,但是apache过于臃肿以及对静态文件响应过于缓慢是让人很不满意的;而nginx作为后起之秀,大有超越前辈的势头,从最近很多门户网站选用nginx就可见一斑,nginx速度快,占用资源少,高性能转发,很高的稳定性,支持热部署,杀手级的proxy和rewrite,但nginx对于php处理依托于fastcgi,fastcgi不够稳定,经常出现502错误,生成相对复杂的页面没有优势,反而会使php-cgi进程变为僵尸进程,多用户多站点的安全性不高,对于其它开发语言的整合,apache表现的更好;综上述对比,为了搭建高性能的php运行环境,就要考虑对apache、nginx进行整合,各取所长,nginx在处理静态内容上的效率较apache强很大,那么就用nginx在前端处理静态文件,把基于php的动态文件转发到后端的apache来处理,接下来我们就开始布署LNAMP(linux+nginx+apache+mysql+php)环境
一、网络拓扑:
lvs-master:192.168.9.221
LVS-backup:192.168.9.222
LVS-VIP:192.168.9.220
web_server_1:192.168.9.223
web_server_2:192.168.9.224
nfs_server_1:192.168.9.228
nfs_server_1:192.168.9.229
nfs_vip:192.168.9.230
mysql_master:192.168.9.226
mysql_backup:192.168.9.227
mysql_vip:192.168.9.225
目的:搭建高可用、高性能的php集群
二、初始化系统
#initsystem
系统环境:CentOS5.5(最小化安装)
./init_system.sh#此脚本参见http://kerry.blog.51cto.com/172631/555535
#更新组件
sudo-s
LANG=C
yum-yinstallgccgcc-c++bisonpatchunzipmlocateflexwgetautomakeautoconfgdcppgettextreadline-devellibjpeg\
libjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglibcglibc-develglib2\
glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-devellibidnlibidn-developenldap\
openldap-developenldap-clientsopenldap-serversnss_ldapexpat-devellibtoollibtool-ltdl-develbison
三、LVS+keeplived
#关于LVS+keeplived的配置请参考我的另一篇博文《CentOS5.5环境下布署LVS+keepalived》http://kerry.blog.51cto.com/172631/401253
四、web_server安装配置(nginx、apache整合)
#downloadsoftware
cd/opt
wgethttp://nginx.org/download/nginx-1.0.4.tar.gz
wgethttp://www.apache.org/dist/httpd/httpd-2.2.19.tar.gz
wgethttp://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
wgethttp://mysql.he.net/Downloads/MySQL-5.5/mysql-5.5.13.tar.gz
wgethttp://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
#rpaf模块,该模块用于apache做后端时获取访客真实的IP
wgethttp://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
#字符转换库libiconv
wgethttp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
wgethttp://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download
wgethttp://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz/download
wgethttp://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2/download
wgethttp://cn.php.net/distributions/php-5.2.17.tar.bz2
#php5-mail-header.patch为php被丁,有助于防止邮件发送被滥用
wgethttp://www.lancs.ac.uk/~steveb/patches/php-mail-header-patch/php5-mail-header.patch
#PHP的memcache扩展
wgethttp://pecl.php.net/get/memcache-2.2.6.tgz
#eaccelerator加速
wgethttp://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
wgetftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.bz2
#PHP的imagick扩展
wgethttp://pecl.php.net/get/imagick-3.0.1.tgz
#Suhosin是一个PHP程序的保护系统
wgethttp://download.suhosin.org/suhosin-0.9.32.1.tar.gz
wgethttp://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.bz2
wgethttp://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz#32位
wgethttp://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz#64位
wgethttp://monkey.org/~provos/libevent-2.0.11-stable.tar.gz
wgethttp://sourceforge.net/projects/pcre/files/pcre/8.12/pcre-8.12.tar.bz2/download
wgethttp://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
#PHP的PDO扩展
wgethttp://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
#Tcmalloc优化nginx、mysql
wgethttp://google-perftools.googlecode.com/files/google-perftools-1.7.tar.gz
#----------------------------使用cmake编译安装mysql----------------------------------
#使用Tcmalloc优化nginx、mysql
cd/opt
tar-zxvfgoogle-perftools-1.7.tar.gz
cdgoogle-perftools-1.7/
./configure
make;makeinstall
echo"/usr/local/lib">/etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
cd../
tar-zxvfcmake-2.8.4.tar.gz
cdcmake-2.8.4
./bootstrap
gmake
gmakeinstall
cd../
/usr/sbin/groupaddmysql
/usr/sbin/useradd-gmysqlmysql-s/sbin/nologin
mkdir-p/data/mysql/data
mkdir-p/data/mysql/binlog
mkdir-p/data/mysql/relaylog
mkdir-p/data/mysql/mysql
chown-Rmysql:mysql/data/mysql
cd/opt
tarzxvfmysql-5.5.13.tar.gz
cdmysql-5.5.13/
rm-rfCMakeCache.txt
cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock\
-DDEFAULT_CHARSET=utf8\
-DDEFAULT_COLLATION=utf8_general_ci\
-DEXTRA_CHARSETS=all\
-DWITH_MYISAM_STORAGE_ENGINE=1\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_READLINE=1\
-DENABLED_LOCAL_INFILE=1\
-DMYSQL_DATADIR=/data/mysql/data\
-DMYSQL_TCP_PORT=3306
make;makeinstall
chmod+w/usr/local/mysql
chown-Rmysql:mysql/usr/local/mysql
ln-s/usr/local/mysql/lib/libmysqlclient.so.18/usr/lib/libmysqlclient.so.18
#编辑mysql配置文件
vi/etc/my.cnf
[client]
port=3306
socket=/data/mysql/mysql.sock
[mysqld]
character_set_server=utf8
collation-server=utf8_general_ci
replicate-ignore-db=mysql
replicate-ignore-db=test
replicate-ignore-db=information_schema
user=mysql
port=3306
socket=/data/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/data/mysql/data
log-error=/data/mysql/mysql_error.log
pid-file=/data/mysql/mysql.pid
open_files_limit=10240
back_log=600
max_connections=5000
max_connect_errors=6000
table_cache=512
external-locking=FALSE
max_allowed_packet=32M
sort_buffer_size=6M
join_buffer_size=8M
thread_cache_size=300
thread_concurrency=8
query_cache_size=512M
query_cache_limit=2M
query_cache_min_res_unit=2k
default-storage-engine=MyISAM
thread_stack=256K
transaction_isolation=READ-COMMITTED
tmp_table_size=256M
max_heap_table_size=256M
long_query_time=3
log-slave-updates
log-bin=/data/mysql/binlog/binlog
binlog_cache_size=4M
binlog_format=MIXED
max_binlog_cache_size=8M
max_binlog_size=100M
relay-log-index=/data/mysql/relaylog/relaylog
relay-log-info-file=/data/mysql/relaylog/relaylog
relay-log=/data/mysql/relaylog/relaylog
expire_logs_days=30
key_buffer_size=384M
read_buffer_size=4M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M
myisam_sort_buffer_size=128M
myisam_max_sort_file_size=10G
myisam_repair_threads=1
myisam_recover
interactive_timeout=120
wait_timeout=120
skip_external_locking
skip-name-resolve
#master-connect-retry=10
slave-skip-errors=1032,1062,126,1114,1146,1048,1396
#master-host=192.168.1.2
#master-user=username
#master-password=password
#master-port=3306
server-id=1
skip-innodb
#log-slow-queries=/data/mysql/slow.log
#long_query_time=10
[mysqldump]
quick
max_allowed_packet=32M
#初始化mysql
/usr/local/mysql/scripts/mysql_install_db--basedir=/usr/local/mysql--datadir=/data/mysql/data--user=mysql
#利用TCMalloc提高mysql在高并发下的性能
vi/usr/local/mysql/bin/mysqld_safe
#在#executingmysqld_safe的下一行,加上:
exportLD_PRELOAD=/usr/local/lib/libtcmalloc.so
#使用lsof命令查看tcmalloc是否起效
/usr/sbin/lsof-n|greptcmalloc
#设置mysql启动文件
cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
vi/etc/rc.d/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql/data
chmod700/etc/rc.d/init.d/mysqld
/etc/rc.d/init.d/mysqldstart
/sbin/chkconfig--addmysqld
/sbin/chkconfig--level2345mysqldon
ln-s/usr/local/mysql/bin/mysql/sbin/mysql
ln-s/usr/local/mysql/bin/mysqladmin/sbin/mysqladmin
#设置root密码(753951)
/sbin/mysqladmin-urootpassword753951
#配置库文件搜索路径
echo"/usr/local/mysql/lib/mysql">>/etc/ld.so.conf
/sbin/ldconfig
#添加/usr/local/mysql/bin到环境变量PATH中
exportPATH=$PATH:/usr/local/mysql/bin
#添加mysql管理帐户
#mysql-hlocalhost-uroot-p753951
#msqyl>usemysql;
#msqyl>grantallon*.*to'kerry'@'192.168.9.100'identifiedby'852741';
#msqyl>flushprivileges;
#msqyl>exit;
#-----------------------------------编译安装apache-------------------------------------
/usr/sbin/groupaddwww
/usr/sbin/useradd-gwwwwww-s/sbin/nologin
mkdir-p/data/www/kerry
mkdir-p/data/logs/kerry
mkdir-p/data/www/king
mkdir-p/data/logs/king
chown-Rwww:www/data/www
chown-Rwww:www/data/logs
cd/opt
tar-zxvfhttpd-2.2.19.tar.gz
cdhttpd-2.2.19
cdsrclib/apr
./configure--prefix=/usr/local/apr--enable-threads--enable-other-child--enable-static
make;makeinstall
cd../apr-util
./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr
make;makeinstall
cd../../
./configure--prefix=/usr/local/apache\
--enable-deflate\
--enable-headers\
--enable-mime-magic\
--enable-proxy\
--enable-ssl\
--enable-so\
--enable-rewrite\
--enable-suexec\
--with-suexec-bin=/usr/sbin/suexec\
--with-suexec-caller=www\
--with-apr=/usr/local/apr\
--with-apr-util=/usr/local/apr-util\
--with-mpm=prefork\
--with-ssl=/usr
make;makeinstall
cp/usr/local/apache/bin/apachectl/etc/init.d/httpd
vi/etc/init.d/httpd
#在首行#!/bin/sh下添加
#StartupscriptfortheApacheWebServer
#
#chkconfig:-8515
#description:ApacheisaWorldWideWebserver.Itisusedtoserve\
#HTMLfilesandCGI.
#processname:httpd
#pidfile:/usr/local/apache/logs/httpd.pid
#config:/usr/local/apache/conf/httpd.conf
#修改apache配置文件
cd/usr/local/apache/conf/
mvhttpd.confhttpd.conf.bak
vihttpd.conf
PidFilelogs/httpd.pid
LockFilelogs/accept.lock
ServerRoot"/usr/local/apache"
Listen0.0.0.0:81
Userwww
Groupwww
ServerNamewww.kerry.com
Timeout300
KeepAliveOff
MaxKeepAliveRequests100
KeepAliveTimeout5
UseCanonicalNameOff
AccessFileName.htaccess
TraceEnableOff
ServerTokensProductOnly
FileETagNone
ServerSignatureOff
HostnameLookupsOff
#LoadModuleperl_modulemodules/mod_perl.so
DocumentRoot"/usr/local/apache/htdocs"
<Directory"/">
OptionsExecCGIFollowSymLinksIncludesIncludesNOEXEC-Indexes-MultiViewsSymLinksIfOwnerMatch
Orderallow,deny
Allowfromall
AllowOverrideAll
</Directory>
<Directory"/usr/local/apache/htdocs">
OptionsIncludes-IndexesFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfromall
</Directory>
DefaultTypetext/plain
RewriteEngineon
AddTypetext/html.shtml
AddHandlercgi-script.cgi.pl.plx.ppl.perl
AddHandlerserver-parsed.shtml
<IfModulemime_module>
TypesConfigconf/mime.types
AddTypeapplication/perl.pl.plx.ppl.perl
AddTypeapplication/x-img.img
AddTypeapplication/x-httpd-php.php.php3.php4.php5.php6
AddTypeapplication/x-httpd-php-source.phps
AddTypeapplication/cgi.cgi
AddTypetext/x-sql.sql
AddTypetext/x-log.log
AddTypetext/x-config.cnfconf
AddTypetext/x-registry.reg
AddTypeapplication/x-compress.Z
AddTypeapplication/x-gzip.gz.tgz
AddTypetext/html.shtml
AddTypeapplication/x-tar.tgz
AddTypeapplication/rar.rar
AddTypeapplication/x-compressed.rar
AddTypeapplication/x-rar.rar
AddTypeapplication/x-rar-compressed.rar
AddTypetext/vnd.wap.wml.wml
AddTypeimage/vnd.wap.wbmp.wbmp
AddTypetext/vnd.wap.wmlscript.wmls
AddTypeapplication/vnd.wap.wmlc.wmlc
AddTypeapplication/vnd.wap.wmlscriptc.wmlsc
</IfModule>
<IfModuledir_module>
DirectoryIndexindex.htmlindex.htmindex.shtmlindex.php
</IfModule>
<Files~"^error_log$">
Orderallow,deny
Denyfromall
SatisfyAll
</Files>
<FilesMatch"^\.ht">
Orderallow,deny
Denyfromall
SatisfyAll
</FilesMatch>
ErrorLog"logs/error_log"
LogLevelwarn
<IfModulelog_config_module>
LogFormat"%h%l%u%t\"%r\"%>s%b\"%{Referer}i\"\"%{User-Agent}i\""combined
LogFormat"%h%l%u%t\"%r\"%>s%b"common
<IfModulelogio_module>
LogFormat"%h%l%u%t\"%r\"%>s%b\"%{Referer}i\"\"%{User-Agent}i\"%I%O"combinedio
</IfModule>
CustomLog"logs/access_log"common
</IfModule>
<IfModulealias_module>
ScriptAlias/cgi-bin/"/usr/local/apache/cgi-bin/"
</IfModule>
<Directory"/usr/local/apache/cgi-bin">
AllowOverrideNone
OptionsNone
Orderallow,deny
Allowfromall
</Directory>
<IfModulempm_prefork_module>
StartServers3
MinSpareServers3
MaxSpareServers5
MaxClients150
MaxRequestsPerChild1024
</IfModule>
<IfModulemod_headers.c>
<FilesMatch"\.(html|htm|shtml)$">
HeadersetCache-Control"max-age=3600,must-revalidate"
</FilesMatch>
</IfModule>
ReadmeNameREADME.html
HeaderNameHEADER.html
IndexIgnore.??**~*#HEADER*README*RCSCVS*,v*,t
Includeconf/extra/httpd-languages.conf
<Location/server-status>
SetHandlerserver-status
Orderdeny,allow
Denyfromall
Allowfrom127.0.0.1
</Location>
ExtendedStatusOn
<Location/server-info>
SetHandlerserver-info
Orderdeny,allow
Denyfromall
Allowfrom127.0.0.1
</Location>
<IfModulessl_module>
Listen0.0.0.0:443
AddTypeapplication/x-x509-ca-cert.crt
AddTypeapplication/x-pkcs7-crl.crl
SSLCipherSuiteALL:!ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
SSLPassPhraseDialogbuiltin
SSLSessionCachedbm:/usr/local/apache/logs/ssl_scache
SSLSessionCacheTimeout300
SSLMutexfile:/usr/local/apache/logs/ssl_mutex
SSLRandomSeedstartupbuiltin
SSLRandomSeedconnectbuiltin
</IfModule>
#Vhosts
NameVirtualHost127.0.0.1:81
<VirtualHost127.0.0.1:81>
DocumentRoot/data/www/kerry
ServerNamewww.kerry.com
ErrorLoglogs/kerry-error_log
CustomLog"|/usr/local/apache/bin/rotatelogs/data/logs/kerry/%y_%m_%d.access_log86400"common
</VirtualHost>
<VirtualHost127.0.0.1:81>
DocumentRoot/data/www/king
ServerNamewww.king.com
ErrorLoglogs/king-error_log
CustomLog"|/usr/local/apache/bin/rotatelogs/data/logs/king/%y_%m_%d.access_log86400"common
</VirtualHost>
chmod700/etc/init.d/httpd
/etc/init.d/httpdstart
/sbin/chkconfig--addhttpd
/sbin/chkconfig--level2345httpdon
#-------------------------------------编译安装PHP-------------------------------------
#编译安装相关支持库
cd/opt
tar-zxvflibiconv-1.13.1.tar.gz
cdlibiconv-1.13.1/
./configure
make;makeinstall
cd/opt
tar-jxvflibmcrypt-2.5.8.tar.bz2
cdlibmcrypt-2.5.8/
./configure
make;makeinstall
/sbin/ldconfig
cdlibltdl/
./configure--enable-ltdl-install
make;makeinstall
cd/opt
tar-jxvfmhash-0.9.9.9.tar.bz2
cdmhash-0.9.9.9/
./configure
make;makeinstall
ln-s/usr/local/lib/libmcrypt.la/usr/lib/libmcrypt.la
ln-s/usr/local/lib/libmcrypt.so/usr/lib/libmcrypt.so
ln-s/usr/local/lib/libmcrypt.so.4/usr/lib/libmcrypt.so.4
ln-s/usr/local/lib/libmcrypt.so.4.4.8/usr/lib/libmcrypt.so.4.4.8
ln-s/usr/local/lib/libmhash.a/usr/lib/libmhash.a
ln-s/usr/local/lib/libmhash.la/usr/lib/libmhash.la
ln-s/usr/local/lib/libmhash.so/usr/lib/libmhash.so
ln-s/usr/local/lib/libmhash.so.2/usr/lib/libmhash.so.2
ln-s/usr/local/lib/libmhash.so.2.0.1/usr/lib/libmhash.so.2.0.1
cd/opt
tar-zxvfmcrypt-2.6.8.tar.gz
cdmcrypt-2.6.8/
/sbin/ldconfig
./configure
make;makeinstall
#编译php,这里我们为php打入补丁.有助于防止邮件发送被滥用(多用户)以及在邮件中提供有价值的信息.补丁介绍信息请点击:http://www.lancs.ac.uk/~steveb/patches/php-mail-header-patch/
cd/opt
tar-jxvfphp-5.2.17.tar.gz
patch-dphp-5.2.17-p1<php5-mail-header.patch
cdphp-5.2.17
./configure--prefix=/usr/local/php\
--with-config-file-path=/usr/local/php/etc\
--with-apxs2=/usr/local/apache/bin/apxs\
--with-mysql=/usr/local/mysql\
--with-mysqli=/usr/local/mysql/bin/mysql_config\
--with-iconv-dir=/usr/local\
--with-freetype-dir\
--with-jpeg-dir\
--with-png-dir\
--with-zlib\
--with-libxml-dir=/usr\
--enable-xml\
--disable-rpath\
--enable-discard-path\
--enable-safe-mode\
--enable-bcmath\
--enable-shmop\
--enable-sysvsem\
--enable-inline-optimization\
--with-curl\
--with-curlwrappers\
--enable-mbregex\
--enable-force-cgi-redirect\
--enable-mbstring\
--with-mcrypt\
--with-gd\
--enable-gd-native-ttf\
--with-openssl\
--with-mhash\
--enable-pcntl\
--enable-sockets\
--with-ldap\
--with-ldap-sasl\
--with-xmlrpc\
-enable-zip\
--enable-soap
makeZEND_EXTRA_LIBS='-liconv'
makeinstall
cpphp.ini-dist/usr/local/php/etc/php.ini
#安装php扩展模块
cd/opt
tar-zxvfmemcache-2.2.6.tgz
cdmemcache-2.2.6/
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config--with-zlib-dir--enable-memcache
make;makeinstall
cd/opt
tar-jxvfeaccelerator-0.9.6.1.tar.bz2
cdeaccelerator-0.9.6.1/
/usr/local/php/bin/phpize
./configure--enable-eaccelerator=shared--with-php-config=/usr/local/php/bin/php-config
make;makeinstall
cd/opt
tar-zxvfPDO_MYSQL-1.0.2.tgz
cdPDO_MYSQL-1.0.2/
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config--with-pdo-mysql=/usr/local/mysql
make;makeinstall
cd/opt
tar-jxvfImageMagick.tar.bz2
cdImageMagick-6.6.9-8
./configure
make;makeinstall
cd/opt
tar-zxfimagick-3.0.1.tgz
cdimagick-3.0.1/
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config
make;makeinstall
cd/opt
tar-zxfsuhosin-0.9.32.1.tgz
cdsuhosin-0.9.32.1
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config
make;makeinstall
cd/opt
tar-jxfioncube_loaders_lin_x86.tar.bz2
cdioncube
mkdir/usr/local/ioncube
mvioncube_loader_lin_5.2.so/usr/local/ioncube/
cd/opt
tar-zxfZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
mkdir-p/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.17
cpZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.17/ZendOptimizer.so
#修改php.ini.
sed-i's#extension_dir="./"#extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension="memcache.so"\nextension="pdo_mysql.so"\nextension="suhosin.so"\nextension="imagick.so"\n#'/usr/local/php/etc/php.ini
sed-i's#output_buffering=Off#output_buffering=On#'/usr/local/php/etc/php.ini
sed-i"s#;always_populate_raw_post_data=On#always_populate_raw_post_data=On#g"/usr/local/php/etc/php.ini
sed-i"s#;cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g"/usr/local/php/etc/php.ini
#配置eAccelerator加速PHP
mkdir-p/data/eaccelerator_cache
chmod-R777/data/eaccelerator_cache
cat>>/usr/local/php/etc/php.ini<<EOF
[eaccelerator]
zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.2.so"
zend_extension="/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.17/ZendOptimizer.so"
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/data/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.keys=shm
eaccelerator.sessions=shm
eaccelerator.content=shm
EOF
#安装Memcached(可选)
cd/opt
tar-xzflibevent-2.0.11-stable.tar.gz
cdlibevent-2.0.11-stable
./configure
make;makeinstall
ln-s/usr/local/lib/libevent-1.4.so.2/usr/lib
cd/opt
tar-xzfmemcached-1.4.5.tar.gz
cdmemcached-1.4.5
./configure--prefix=/usr/local/memcached--with-libevent=/usr
make;makeinstall
#基本使用方法:
启动:
/usr/local/memcached/bin/memcached-d-m64-p11211-uwww-llocalhost
关闭:
killall-9memcached
#----------------------------------安装配置nginx----------------------------------------
#安装pcre
/opt
tar-jxvfpcre-8.12.tar.gz
cdpcre-8.12/
./configure
make;makeinstall
#安装nginx
cd/opt
tar-zxvfnginx-1.0.4.tar.gz
cdnginx-1.0.4/
./configure--user=www--group=www--prefix=/usr/local/nginx--with-http_stub_status_module--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_module--with-google_perftools_module
make;makeinstall
cd../
#添加nginx启动脚本
vi/etc/init.d/nginx
#!/bin/sh
ulimit-n65535
#Description:Startupscriptfornginx
#chkconfig:23455525
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginxdaemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/nginx.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set-e
[-x"$DAEMON"]||exit0
do_start(){
$DAEMON-c$CONFIGFILE||echo-n"nginxalreadyrunning"
}
do_stop(){
kill-QUIT`cat$PIDFILE`||echo-n"nginxnotrunning"
}
do_reload(){
kill-HUP`cat$PIDFILE`||echo-n"nginxcan'treload"
}
case"$1"in
start)
echo-n"Starting$DESC:$NAME"
do_start
echo"."
/etc/init.d/httpdstart
;;
stop)
echo-n"Stopping$DESC:$NAME"
do_stop
echo"."
/etc/init.d/httpdstop
;;
reload)
echo-n"Reloading$DESCconfiguration..."
do_reload
echo"."
/etc/init.d/httpdrestart
;;
restart)
echo-n"Restarting$DESC:$NAME"
do_stop
sleep1
do_start
echo"."
/etc/init.d/httpdrestart
;;
*)
echo"Usage:$SCRIPTNAME{start|stop|reload|restart}">&2
exit3
;;
esac
exit0
#添加nginx配置文件
mv/usr/local/nginx/conf/nginx.conf/usr/local/nginx/conf/nginx.conf.bak
vi/usr/local/nginx/conf/nginx.conf
userwwwwww;
worker_processes8;
error_log/usr/local/nginx/logs/nginx_error.logcrit;
pid/usr/local/nginx/nginx.pid;
#使用Tcmalloc优化nginx性能
google_perftools_profiles/var/tmp/tcmalloc;
#Specifiesthevalueformaximumfiledescriptorsthatcanbeopenedbythisprocess.
worker_rlimit_nofile65535;
#工作模式及连接数上限
events
{
useepoll;
worker_connections65535;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http
{
#设定mime类型
includemime.types;
default_typeapplication/octet-stream;
#charsetgb2312;
#设定请求缓冲
server_names_hash_bucket_size128;
client_header_buffer_size32k;
large_client_header_buffers432k;
client_max_body_size30m;
sendfileon;
tcp_nopushon;
keepalive_timeout60;
tcp_nodelayon;
server_tokensoff;
client_body_buffer_size512k;
proxy_connect_timeout5;
proxy_send_timeout60;
proxy_read_timeout5;
proxy_buffer_size16k;
proxy_buffers464k;
proxy_busy_buffers_size128k;
proxy_temp_file_write_size128k;
#fastcgi_connect_timeout300;
#fastcgi_send_timeout300;
#fastcgi_read_timeout300;
#fastcgi_buffer_size64k;
#fastcgi_buffers464k;
#fastcgi_busy_buffers_size128k;
#fastcgi_temp_file_write_size128k;
gzipon;
gzip_min_length1k;
gzip_buffers416k;
gzip_http_version1.1;
gzip_comp_level2;
gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;
gzip_varyon;
#limit_zonecrawler$binary_remote_addr10m;
###禁止通过ip访问站点
server{
server_name_;
return404;
}
server
{
listen80;
server_namewww.kerry.com;
indexindex.htmlindex.htmindex.php;#设定访问的默认首页地址
root/data/www/kerry;#设定网站的资源存放路径
#limit_conncrawler20;
if(-d$request_filename)
{
rewrite^/(.*)([^/])$http://$host/$1$2/permanent;
}
#所有php的页面均交由apache处理
location~\.(php)?${
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_passhttp://127.0.0.1:81;#转向apache处理
}
location~.*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$#设定访问静态文件直接读取不经过apache
{
expires30d;
}
location~.*\.(js|css)?$
{
expires1h;
}
#定义访问日志的写入格式
log_formatwwwlog'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent"$http_x_forwarded_for';
access_log/data/logs/kerry/kerry_nginx.logwwwlog;#设定访问日志的存放路径
}
server
{
listen80;
server_namewww.king.com;
indexindex.htmlindex.htmindex.php;#设定访问的默认首页地址
root/data/www/king;#设定网站的资源存放路径
#limit_conncrawler20;
if(-d$request_filename)
{
rewrite^/(.*)([^/])$http://$host/$1$2/permanent;
}
#所有php的页面均交由apache处理
location~\.(php)?${
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_passhttp://127.0.0.1:81;#转向apache处理
}
location~.*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$#设定访问静态文件直接读取不经过apache
{
expires30d;
}
location~.*\.(js|css)?$
{
expires1h;
}
#定义访问日志的写入格式
log_formatbbslog'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent"$http_x_forwarded_for';
access_log/data/logs/king/king_nginx.logbbslog;#设定访问日志的存放路径
}
server
{
listen80;
server_namestatus.www.kerry.com;
location/{
stub_statuson;
access_logoff;
}
}
}
#将nginx添加到启动服务中
chmod700/etc/init.d/nginx
/etc/init.d/nginxstart
/sbin/chkconfig--addnginx
/sbin/chkconfig--level2345nginxon
#每天定时切割Nginx日志
vi/usr/local/nginx/sbin/cut_nginx_log.sh
#!/bin/bash
#Thisscriptrunat00:00
#TheNginxlogspath
logs_path_kerry="/data/logs/kerry/"
logs_path_kerry="/data/logs/king/"
mv${logs_path_kerry}kerry_nginx.log${logs_path_kerry}$kerry_nginx_$(date-d"yesterday"+"%Y%m%d").log
mv${logs_path_king}king_nginx.log${logs_path_king}king_nginx_$(date-d"yesterday"+"%Y%m%d").log
kill-USR1`cat/usr/local/nginx/nginx.pid`
chmod+x/usr/local/nginx/sbin/cut_nginx_log.sh
#添加计划任务,每天凌晨00:00切割nginx访问日志
crontab-e
0000***/bin/bash/usr/local/nginx/sbin/cut_nginx_log.sh
#为apache安装rpaf模块,该模块用于apache做后端时获取访客真实的IP
#使用apxs安装模块.这里要使用此前apache编译安装后的apxs
cd/opt
tar-zxfmod_rpaf-0.6.tar.gz
cdmod_rpaf-0.6
/usr/local/apache/bin/apxs-i-c-nmod_rpaf-2.0.somod_rpaf-2.0.c
#编辑/usr/local/apache/conf/httpd.conf,添加模块参数,查找LoadModulephp5_modulemodules/libphp5.so,在下方添加:
LoadModulerpaf_modulemodules/mod_rpaf-2.0.so
#Mod_rpafsettings
RPAFenableOn
#上面出现的192.168.9.9请修改为你本机所监听web服务的ip.多个IP用空格空开
RPAFproxy_ips127.0.0.1192.168.9.9
RPAFsethostnameOn
RPAFheaderX-Forwarded-For