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

[email protected]

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>

[email protected]

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>

[email protected]

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

相关推荐