apache官方宣称apache2.4在性能上提升了很多,所以就把第一版的LNAMP进行了升级,nginx、apache、mysql、php全部采用最新版本,php5.4有很多扩展没有跟进,这个是比较大的遗憾,比如:ZendGuardLoade、accelerator、Suhosin
一、系统初始化
chmod+x/opt/init_system.sh
/opt/init_system.sh
二、更新组件
#yum源修改
cd/etc/yum.repos.d/
mvCentOS-Base.repoCentOS-Base.repo.backup
wgethttp://mirrors.163.com/.help/CentOS5-Base-163.repo
yummakecache
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
三、LANMP安装配置(nginx、apache整合)
#===============downloadsoftware=============#
cd/opt
wgethttp://nginx.org/download/nginx-1.2.0.tar.gz
#2.4.2分成两个包,把apr单独做成一个dep包
wgethttp://www.apache.org/dist/httpd/httpd-2.4.2.tar.bz2
wgethttp://mirror.bjtu.edu.cn/apache/httpd/httpd-2.4.2-deps.tar.bz2
wgethttp://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz
wgethttp://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.23.tar.gz/from/http://mysql.he.net/
#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.14.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://cn.php.net/get/php-5.4.0.tar.bz2/from/this/mirror
#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-3.0.6.tgz
wgethttps://launchpadlibrarian.net/103487645/libmemcached-1.0.2.tar.gz
wgethttp://pecl.php.net/get/memcached-2.0.1.tgz
#将eaccelerator换成xcache(xcache2.0支持php5.4)
wgethttp://xcache.lighttpd.net/pub/Releases/2.0.0/xcache-2.0.0.tar.gz
wgethttp://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2/download
#ImageMagick完美代替GB类库处理图像
wgetftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.7.6-7.tar.bz2
wgethttp://pecl.php.net/get/imagick-3.1.0RC1.tgz
wgethttp://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.bz2
wgethttp://sourceforge.net/projects/pcre/files/pcre/8.30/pcre-8.30.tar.bz2/download
#memcached缓存
wgethttp://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
wgethttps://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
#Tcmalloc优化nginx、mysql
#64位操作系统请先安装libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API
wgethttp://mirror.yongbok.net/nongnu/libunwind/libunwind-1.0.1.tar.gz
wgethttp://gperftools.googlecode.com/files/gperftools-2.0.tar.gz
#==============Installmysql5.5.23==================#
#使用Tcmalloc优化nginx、mysql
#64位操作系统请先安装libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API
cd/opt
tar-zxvflibunwind-1.0.1.tar.gz
cdlibunwind-1.0.1
./configure
make;makeinstall
cd../
tar-zxvfgperftools-2.0.tar.gz
cdgperftools-2.0
./configure
make;makeinstall
echo"/usr/local/lib">/etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
cd../
tar-zxvfcmake-2.8.8.tar.gz
cdcmake-2.8.8
./bootstrap
gmake
gmakeinstall
cd../
/usr/sbin/groupaddmysql
/usr/sbin/useradd-gmysqlmysql-s/sbin/nologin
mkdir-p/data/mysql/{data,binlog,relaylog,mysql}
chown-Rmysql:mysql/data/mysql
cd/opt
tarzxvfmysql-5.5.23.tar.gz
cdmysql-5.5.23/
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配置文件
cat>>/etc/my.cnf<<EOF
[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
EOF
#初始化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
#或者通sed添加
sed-i'/#executingmysqld_safe/a\exportLD_PRELOAD=/usr/local/lib/libtcmalloc.so'/usr/local/mysql/bin/mysqld_safe
#设置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
#或者通sed修改
sed-i'46s#basedir=#basedir=/usr/local/mysql#'/etc/rc.d/init.d/mysqld
sed-i'47s#datadir=#datadir=/data/mysql/data#'/etc/rc.d/init.d/mysqld
chmod700/etc/rc.d/init.d/mysqld
/etc/rc.d/init.d/mysqldstart
#使用lsof命令查看tcmalloc是否起效(如下图)
/usr/sbin/lsof-n|greptcmalloc
#设置mysql开机启动
/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中
echo"exportPATH=$PATH:/usr/local/mysql/bin">>/etc/profile
source/etc/profile
#添加mysql管理帐户
#mysql-hlocalhost-uroot-p753951
#msqyl>usemysql;
#msqyl>grantallon*.*to'kerry'@'192.168.9.100'identifiedby'852741';
#msqyl>flushprivileges;
#msqyl>exit;
#=================Installapache2.4.2==============#
/usr/sbin/groupaddwww
/usr/sbin/useradd-gwwwwww-s/sbin/nologin
mkdir-p/data/www/{kerry,king}
mkdir-p/data/logs/{kerry,king}
chown-Rwww:www/data/www
chown-Rwww:www/data/logs
cd/opt
wgethttp://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz
rpm-elibtool-1.5.22-7.el5_4
tar-zxvflibtool-2.4.2.tar.gz
cdlibtool-2.4.2
./configure
make;makeinstall
tar-jxvfpcre-8.30.tar.bz2
cdpcre-8.30
./configure--prefix=/usr/local/pcre
make;makeinstall
cd../
tar-jxvfhttpd-2.4.2.tar.bz2
tar-jxvfhttpd-2.4.2-deps.tar.bz2
cdhttpd-2.4.2
#隐藏apache版本信息
sed-i's/#defineAP_SERVER_BASEPRODUCT"Apache"/#defineAP_SERVER_BASEPRODUCT"Microsoft-IIS5.0"/'include/ap_release.h
sed-i's/#definePLATFORM"Unix"/#definePLATFORM"win32"/'os/unix/os.h
./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-pcre=/usr/local/pcre/bin/pcre-config\
--with-mpm=prefork\
--with-ssl=/usr
make;makeinstall
#make的时候报错,“/usr/lib/libexpat.so:couldnotreadsymbols:Fileinwrongformat”
#解决方法:
\cp/usr/lib64/libexpat.*/usr/lib/
#配置自启动文件
cp/usr/local/apache/bin/apachectl/etc/init.d/httpd
vi/etc/init.d/httpd
#在首行#!/bin/sh下添加
#StartupscriptfortheApacheWebServer
#
#chkconfig:-8515
#description:webserver.Itisusedtoserve\
#HTMLfilesandCGI.
#processname:httpd
#pidfile:/usr/local/apache/logs/httpd.pid
#config:/usr/local/apache/conf/httpd.conf
#或者直接使用sed添加
sed-i'/#!\/bin\/sh/a\#chkconfig:-8515\n#description:webserver\n#processname:httpd\n#pidfile:/usr/local/apache/logs/httpd.pid\n#config:/usr/local/apache/conf/httpd.conf'/etc/init.d/httpd
#修改apache配置文件
cd/usr/local/apache/conf/
mvhttpd.confhttpd.conf.bak
cat>>httpd.conf<<EOF
ServerRoot"/usr/local/apache"
Listen80
Timeout300
KeepAliveOff
MaxKeepAliveRequests100
KeepAliveTimeout5
UseCanonicalNameOff
AccessFileName.htaccess
TraceEnableOff
ServerTokensProductOnly
FileETagNone
ServerSignatureOff
HostnameLookupsOff
#LoadModulefoo_modulemodules/mod_foo.so
#
LoadModuleauthn_file_modulemodules/mod_authn_file.so
#LoadModuleauthn_dbm_modulemodules/mod_authn_dbm.so
#LoadModuleauthn_anon_modulemodules/mod_authn_anon.so
#LoadModuleauthn_dbd_modulemodules/mod_authn_dbd.so
#LoadModuleauthn_socache_modulemodules/mod_authn_socache.so
LoadModuleauthn_core_modulemodules/mod_authn_core.so
LoadModuleauthz_host_modulemodules/mod_authz_host.so
LoadModuleauthz_groupfile_modulemodules/mod_authz_groupfile.so
LoadModuleauthz_user_modulemodules/mod_authz_user.so
#LoadModuleauthz_dbm_modulemodules/mod_authz_dbm.so
#LoadModuleauthz_owner_modulemodules/mod_authz_owner.so
#LoadModuleauthz_dbd_modulemodules/mod_authz_dbd.so
LoadModuleauthz_core_modulemodules/mod_authz_core.so
LoadModuleaccess_compat_modulemodules/mod_access_compat.so
LoadModuleauth_basic_modulemodules/mod_auth_basic.so
#LoadModuleauth_form_modulemodules/mod_auth_form.so
#LoadModuleauth_digest_modulemodules/mod_auth_digest.so
#LoadModuleallowmethods_modulemodules/mod_allowmethods.so
#LoadModulefile_cache_modulemodules/mod_file_cache.so
#LoadModulecache_modulemodules/mod_cache.so
#LoadModulecache_disk_modulemodules/mod_cache_disk.so
#LoadModulesocache_shmcb_modulemodules/mod_socache_shmcb.so
#LoadModulesocache_dbm_modulemodules/mod_socache_dbm.so
#LoadModulesocache_memcache_modulemodules/mod_socache_memcache.so
#LoadModuledbd_modulemodules/mod_dbd.so
#LoadModuledumpio_modulemodules/mod_dumpio.so
#LoadModulebuffer_modulemodules/mod_buffer.so
#LoadModuleratelimit_modulemodules/mod_ratelimit.so
LoadModulereqtimeout_modulemodules/mod_reqtimeout.so
#LoadModuleext_filter_modulemodules/mod_ext_filter.so
#LoadModulerequest_modulemodules/mod_request.so
#LoadModuleinclude_modulemodules/mod_include.so
LoadModulefilter_modulemodules/mod_filter.so
#LoadModulesubstitute_modulemodules/mod_substitute.so
#LoadModulesed_modulemodules/mod_sed.so
#LoadModuledeflate_modulemodules/mod_deflate.so
LoadModulemime_modulemodules/mod_mime.so
LoadModulelog_config_modulemodules/mod_log_config.so
#LoadModulelog_debug_modulemodules/mod_log_debug.so
#LoadModulelogio_modulemodules/mod_logio.so
LoadModuleenv_modulemodules/mod_env.so
#LoadModulemime_magic_modulemodules/mod_mime_magic.so
#LoadModuleexpires_modulemodules/mod_expires.so
LoadModuleheaders_modulemodules/mod_headers.so
#LoadModuleunique_id_modulemodules/mod_unique_id.so
LoadModulesetenvif_modulemodules/mod_setenvif.so
LoadModuleversion_modulemodules/mod_version.so
#LoadModuleremoteip_modulemodules/mod_remoteip.so
LoadModuleproxy_modulemodules/mod_proxy.so
LoadModuleproxy_connect_modulemodules/mod_proxy_connect.so
LoadModuleproxy_ftp_modulemodules/mod_proxy_ftp.so
LoadModuleproxy_http_modulemodules/mod_proxy_http.so
LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so
LoadModuleproxy_scgi_modulemodules/mod_proxy_scgi.so
LoadModuleproxy_ajp_modulemodules/mod_proxy_ajp.so
#LoadModuleproxy_balancer_modulemodules/mod_proxy_balancer.so
LoadModuleproxy_express_modulemodules/mod_proxy_express.so
#LoadModulesession_modulemodules/mod_session.so
#LoadModulesession_cookie_modulemodules/mod_session_cookie.so
#LoadModulesession_dbd_modulemodules/mod_session_dbd.so
#LoadModuleslotmem_shm_modulemodules/mod_slotmem_shm.so
#LoadModulessl_modulemodules/mod_ssl.so
LoadModulelbmethod_byrequests_modulemodules/mod_lbmethod_byrequests.so
LoadModulelbmethod_bytraffic_modulemodules/mod_lbmethod_bytraffic.so
LoadModulelbmethod_bybusyness_modulemodules/mod_lbmethod_bybusyness.so
LoadModulelbmethod_heartbeat_modulemodules/mod_lbmethod_heartbeat.so
LoadModuleunixd_modulemodules/mod_unixd.so
#LoadModuledav_modulemodules/mod_dav.so
LoadModulestatus_modulemodules/mod_status.so
LoadModuleautoindex_modulemodules/mod_autoindex.so
#LoadModuleinfo_modulemodules/mod_info.so
#LoadModulesuexec_modulemodules/mod_suexec.so
#LoadModulecgi_modulemodules/mod_cgi.so
#LoadModuledav_fs_modulemodules/mod_dav_fs.so
LoadModulevhost_alias_modulemodules/mod_vhost_alias.so
#LoadModulenegotiation_modulemodules/mod_negotiation.so
LoadModuledir_modulemodules/mod_dir.so
#LoadModuleactions_modulemodules/mod_actions.so
#LoadModulespeling_modulemodules/mod_speling.so
#LoadModuleuserdir_modulemodules/mod_userdir.so
LoadModulealias_modulemodules/mod_alias.so
LoadModulerewrite_modulemodules/mod_rewrite.so
<IfModuleunixd_module>
Userwww
Groupwww
</IfModule>
<Directory/>
AllowOverridenone
Requirealldenied
</Directory>
DocumentRoot"/usr/local/apache/htdocs"
<Directory"/usr/local/apache/htdocs">
OptionsIndexesFollowSymLinks
AllowOverrideNone
Requireallgranted
</Directory>
<IfModuledir_module>
DirectoryIndexindex.htmlindex.php
</IfModule>
<Files".ht*">
Requirealldenied
</Files>
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>
<IfModulecgid_module>
#Scriptsocklogs/cgisock
</IfModule>
<Directory"/usr/local/apache/cgi-bin">
AllowOverrideNone
OptionsNone
Requireallgranted
</Directory>
RewriteEngineon
<IfModulemime_module>
TypesConfigconf/mime.types
AddTypeapplication/x-compress.Z
AddTypeapplication/x-gzip.gz.tgz
AddTypeapplication/x-httpd-php.php.php3.php4.php5.php6
AddTypeapplication/x-httpd-php-source.phps
</IfModule>
#Server-poolmanagement(MPMspecific)
Includeconf/extra/httpd-mpm.conf
#Virtualhosts
Includeconf/extra/httpd-vhosts.conf
#Configuremod_proxy_htmltounderstandHTML4/XHTML1
<IfModuleproxy_html_module>
Includeconf/extra/proxy-html.conf
</IfModule>
#Secure(SSL/TLS)connections
#Includeconf/extra/httpd-ssl.conf
<IfModulessl_module>
SSLRandomSeedstartupbuiltin
SSLRandomSeedconnectbuiltin
</IfModule>
EOF
#配置mpm_prefork_module
mvextra/httpd-mpm.confextra/httpd-mpm.conf.bak
cat>>extra/httpd-mpm.conf<<EOF
<IfModulempm_prefork_module>
ServerLimit10000
StartServers5
MinSpareServers5
MaxSpareServers10
MaxRequestWorkers10000
MaxConnectionsPerChild10000
</IfModule>
EOF
#配置虚拟主机(apache虚拟主机,通过IP访问默认会访问到第一个虚拟主机上,那么就第一个虚拟主机定义为127.0.0.1,目录指到/usr/local/apache/htdocs)
mvextra/httpd-vhosts.confextra/httpd-vhosts.conf.bak
cat>>extra/httpd-vhosts.conf<<EOF
#Vhosts
<VirtualHost*:81>
DocumentRoot"/usr/local/apache/htdocs"
<Directory"/usr/local/apache/htdocs">
OptionsIndexesFollowSymLinks
AllowOverrideNone
Requireallgranted
</Directory>
ServerName127.0.0.1
</VirtualHost>
<VirtualHost*:81>
DocumentRoot"/data/www/kerry"
<Directory"/data/www/kerry">
OptionsIndexesFollowSymLinks
AllowOverrideNone
Requireallgranted
</Directory>
ServerNamewww.kerry.com
ErrorLog"logs/kerry-error_log"
CustomLog"|/usr/local/apache/bin/rotatelogs/data/logs/kerry/%y_%m_%d.access_log86400"common
</VirtualHost>
<VirtualHost*:81>
DocumentRoot"/data/www/king"
<Directory"/data/www/king">
OptionsIndexesFollowSymLinks
AllowOverrideNone
Requireallgranted
</Directory>
ServerNamewww.king.com
ErrorLog"logs/king-error_log"
CustomLog"|/usr/local/apache/bin/rotatelogs/data/logs/king/%y_%m_%d.access_log86400"common
</VirtualHost>
EOF
#设置apache自启动
chmod700/etc/init.d/httpd
/etc/init.d/httpdstart
/sbin/chkconfig--addhttpd
/sbin/chkconfig--level2345httpdon
cd../
#===================InstallPHP5.4.0===============#
#编译安装相关支持库
cd/opt
tar-zxvflibiconv-1.14.tar.gz
cdlibiconv-1.14/
./configure
make;makeinstall
cd../
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.4.0.tar.gz
patch-dphp-5.4.0-p1<php5-mail-header.patch
cdphp-5.4.0
./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-bcmath\
--enable-shmop\
--enable-sysvsem\
--enable-inline-optimization\
--with-curl\
--with-curlwrappers\
--enable-mbregex\
--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-production/usr/local/php/etc/php.ini
cd../
#安装php扩展模块
cd/opt
tar-zxvfmemcache-3.0.6.tgz
cdmemcache-3.0.6/
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config--with-zlib-dir--enable-memcache
make;makeinstall
cd../
#make时出错(如下图)
#解决办法:修改memcache.c
将721行:
zend_list_insert(mmc,le_memcache_server);
改为:
zend_list_insert(mmcTSRMLS_CC,le_memcache_server);
将738行:
zend_list_insert(mmc,le_memcache_server);
改为:
zend_list_insert(mmcTSRMLS_CC,le_memcache_server);
将778行:
list_id=zend_list_insert(pool,le_memcache_pool);
改为:
list_id=zend_list_insert(poolTSRMLS_CC,le_memcache_pool);
将839行:
list_id=zend_list_insert(poolTSRMLS_CC,le_memcache_pool);
改为:
list_id=zend_list_insert(pool,le_memcache_pool);
#用sed修改
sed-i's#zend_list_insert(mmc,le_memcache_server);#zend_list_insert(mmcTSRMLS_CC,le_memcache_server);#'memcache.c
sed-i's#list_id=zend_list_insert(pool,le_memcache_pool);#list_id=zend_list_insert(poolTSRMLS_CC,le_memcache_pool);#'memcache.c
#php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached
#安装memcached的服务端支持库
cd/opt
tar-xzflibevent-2.0.18-stable.tar.gz
cdlibevent-2.0.18-stable
./configure
make;makeinstall
ln-s/usr/local/lib/libevent-2.0.so.5/usr/lib
#安装Memcached服务端
cd/opt
tar-xzfmemcached-1.4.13.tar.gz
cdmemcached-1.4.13
./configure--prefix=/usr/local/memcached--with-libevent=/usr
make;makeinstall
cd/opt
tar-zxvflibmemcached-1.0.2.tar.tar
cdlibmemcached-1.0.2
./configure--prefix=/usr/local/libmemcached--with-memcached
make;makeinstall
#安装php的memcached扩展库
cd/opt
tar-zxvfmemcached-2.0.1.tgz
cdmemcached-2.0.1
/usr/local/php/bin/phpize
./configure--enable-memcached--with-php-config=/usr/local/php/bin/php-config--with-libmemcached-dir=/usr/local/libmemcached--with-memcached--with-zlib
make;makeinstall
#因eaccelerator-0.9.6.1不支持php5.4.0,所以就改用XCache2.0.0
cd/opt
tar-zxvfxcache-2.0.0.tar.gz
cdxcache-2.0.0
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config
make;makeinstall
#安装pdo扩展
cd/opt
php-5.4.0/ext/pdo_mysql
/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-6.7.6-7.tar.bz2
cdImageMagick-6.7.6-7
./configure--prefix=/usr/local/imagemagick
make;makeinstall
#imagick最新正式版为imagick-3.0.1.tgz,但imagick-3.0.1.tgz在make的时候会出现大量的报错信息,所以就改用imagick-3.1.0RC1.tgz
cd/opt
tar-zxvfimagick-3.1.0RC1.tgz
cdimagick-3.1.0RC1/
exportPKG_CONFIG_PATH=/usr/local/imagemagick/lib/pkgconfig
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config--with-imagick=/usr/local/imagemagick
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/
#修改php.ini添加php扩展
sed-i's#;extension_dir="./"#extension_dir="/usr/local/php/lib/php/extensions/no-debug-zts-20100525/"\nextension="memcache.so"\nextension="pdo_mysql.so"\nextension="memcached.so"\nextension="imagick.so"\n#'/usr/local/php/etc/php.ini
cat>>/usr/local/php/etc/php.ini<<EOF
[xcache-common]
extension=xcache.so
[xcache]
xcache.shm_scheme="mmap"
xcache.size=256M
xcache.count=8
xcache.slots=8K
xcache.ttl=0
xcache.gc_interval=0
xcache.var_size=8M
xcache.var_count=8
xcache.var_slots=8K
xcache.var_ttl=0
xcache.var_maxttl=0
xcache.var_gc_interval=300
xcache.test=Off
xcache.readonly_protection=Off
xcache.mmap_path="/dev/zero"
xcache.coredump_directory=""
xcache.cacher=On
xcache.stat=On
xcache.optimizer=Off
[xcache.coverager]
xcache.coverager=Off
xcache.coveragedump_directory=""
EOF
#隐藏php版本
sed-i's#expose_php=On#expose_php=Off#'/usr/local/php/etc/php.ini
#php安全设置,禁用函数
sed-i's#disable_functions=#disable_functions=phpinfo,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source#'/usr/local/php/etc/php.ini
#重启apache,查看php扩展加载的情况
/etc/init.d/httpdrestart
#=============InstallNginx===================#
cd/opt
tar-zxvfnginx-1.2.0.tar.gz
cdnginx-1.2.0
./configure--user=www--group=www--prefix=/usr/local/nginx--with-pcre=/opt/pcre-8.30--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启动脚本
cat>>/etc/init.d/nginx<<EOF
#!/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
EOF
#添加nginx配置文件
mv/usr/local/nginx/conf/nginx.conf/usr/local/nginx/conf/nginx.conf.bak
cat>>/usr/local/nginx/conf/nginx.conf<<EOF
userwwwwww;
worker_processes8;
error_log/usr/local/nginx/logs/nginx_error.logcrit;
pid/usr/local/nginx/logs/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;
#定义访问日志的写入格式
log_formatwwwlog'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent"$http_x_forwarded_for';
log_formatbbslog'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent"$http_x_forwarded_for';
###禁止通过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;
}
#所有jsp的页面均交由tomcat处理
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;#转向tomcat处理
}
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;
}
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;
}
#所有jsp的页面均交由tomcat处理
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;#转向tomcat处理
}
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;
}
access_log/data/logs/king/king_nginx.logbbslog;#设定访问日志的存放路径
}
server
{
listen80;
server_namestatus.www.kerry.com;
location/{
stub_statuson;
access_logoff;
}
}
}
EOF
#将nginx添加到启动服务中
chmod700/etc/init.d/nginx
/etc/init.d/nginxstart
/sbin/chkconfig--addnginx
/sbin/chkconfig--level2345nginxon
#每天定时切割Nginx日志
cat>>/usr/local/nginx/sbin/cut_nginx_log.sh<<EOF
#!/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`
EOF
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
#错误提示:
mod_rpaf-2.0.c:Infunction'rpaf_cleanup':
mod_rpaf-2.0.c:150:error:'conn_rec'hasnomembernamed'remote_ip'
mod_rpaf-2.0.c:151:error:'conn_rec'hasnomembernamed'remote_addr'
mod_rpaf-2.0.c:151:warning:implicitdeclarationoffunction'inet_addr'
mod_rpaf-2.0.c:151:error:'conn_rec'hasnomembernamed'remote_ip'
mod_rpaf-2.0.c:Infunction'change_remote_ip':
mod_rpaf-2.0.c:164:error:'conn_rec'hasnomembernamed'remote_ip'
mod_rpaf-2.0.c:183:error:'conn_rec'hasnomembernamed'remote_ip'
mod_rpaf-2.0.c:186:error:'conn_rec'hasnomembernamed'remote_ip'
mod_rpaf-2.0.c:187:error:'conn_rec'hasnomembernamed'remote_addr'
mod_rpaf-2.0.c:187:error:'conn_rec'hasnomembernamed'remote_ip'
apxs:Error:Commandfailedwithrc=65536
#解决办法:
#http://httpd.apache.org/docs/trunk/developer/new_api_2_4.html
#将150、151、164、183、186、187这几行的remote_ip修改成client_ip,remote_addr修改成client_addr
#编辑/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