lnamp環境搭建
LNAMP+CentOS 6.0(64位)編譯安裝 CentOS 6.0 Apache2、PHP、MySQL、Nginx
一、系統約定
軟體原始碼包存放位置 /usr/local/src
二、系統環境初始化
01. 檢查系統是否正常
# more /var/log/messages(檢查有無系統級錯誤資訊)
# dmesg (檢查硬體裝置是否有錯誤資訊)
# cat /proc/cpuinfo (檢查CPU頻率是否正常)
# top (按1檢測CPU核數是否正常,記憶體大小是否正常)
# ifconfig(檢查網路卡設定是否正確)
# ping
www.163.com (檢查網路是否正常)
02. 關閉不需要的服務
命令:
# ntsysv
以下僅列出需要啟動的服務,未列出的服務一律推薦關閉:
atd
crond
irqbalance
microcode_ctl
network
sendmail
sshd
syslog
03.關閉SElinux
修改/etc/selinux/config檔案中的SELINUX= 為 disabled
命令:
# vi /etc/selinux/config
:1,$s/SELINUX=enforcing/SELINUX=disabled/ge (vi的替換命令)
04.更換快速源:
# cd /etc/yum.repos.d/ (切換至yum.repos.d目錄)
# mv CentOS-Base.repo CentOS-Base.repo.old (將原有CentOS-Base.repo檔案備份並重新命名)
# wget
http://mirrors.163.com/.help/CentOS6-Base-163.repo (下載對應版本的repo檔案,注意區分64位和32位系統)
# mv CentOS6-Base-163.repo CentOS-Base.repo (將下載好的檔案重新命名為CentOS-Base.repo)
# yum update (更新)
05.安裝 vi
# yum -y install vim-enhanced
06. 配置 vim
# vi /root/.bashrc
在 alias mv=’mv -i’ 下面新增一行:
alias vi=`vim`
儲存退出。
# echo `syntax on` > /root/.vimrc
07.定時校正伺服器時鐘,定時與中國國家授時中心授時伺服器同步
# crontab –e
加入一行:(insertr命令)
*/30 * * * * ntpdate 210.72.145.44 > /dev/null 2>&1
08.刪除Centos 多餘元件,並更新及新增LNAMP所需元件:
# cd /etc/yum.repos.d/
# yum -y remove httpd mysql php
# yum -y install gcc gcc-c++ bison patch unzip mlocate flex wget automake gd cpp gettext readline-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel
ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel libidn libidn-devel openldap openldap-devel openldap-clients openldap-servers nss_ldap expat-devel libtool libtool-ltdl-devel bison
安裝autoconf-2.61
cd /usr/local/src
autoconf-2.61
wget -c
http://files.directadmin.com/services/custombuild/autoconf-2.61.tar.gz
tar -zxvf autoconf-2.61.tar.gz
cd autoconf-2.61
./configure –prefix=/usr
make
make install
export PHP_AUTOCONF=/usr/bin/autoconf
export PHP_AUTOHEADER=/usr/bin/autoheader
09.關閉selinux:
/usr/sbin/setenforce 0 //立刻關閉 SELINUX,1為開啟
10.增加系統預設啟動:
echo “/usr/sbin/setenforce 0” >> /etc/rc.local
11. 重新啟動
# init 6
12. 下載程式包
請到各程式官方網站下載最新的穩定版本存放到/usr/local/src/目錄
此次LNAMP包含了:
Apache2、PHP、MySQL、Nginx四個主要程式。
命令:
cd /usr/local/src
Apache-2.4.2:
wget -c
https://lnamp-web-server.googlecode.com/files/httpd-2.4.2.tar.gz
wget -c
https://lnamp-web-server.googlecode.com/files/httpd-2.4.2-deps.tar.gz
PHP-5.4.2:
wget -c
https://lnamp-web-server.googlecode.com/files/php-5.4.2.tar.gz
MySQL-5.5.24:
wget -c
https://lnamp-web-server.googlecode.com/files/mysql-5.5.24.tar.tar.gz
Nginx-1.2.0:
wget -c
https://lnamp-web-server.googlecode.com/files/nginx-1.2.0.tar.gz
其他所需元件:
php5-mail-header.patch(php補丁,有助於防止郵件傳送被濫用)
wget -c
http://www.lancs.ac.uk/~steveb/patches/php-mail-header-patch/php5-mail-header.patch
ioncube_loaders_lin_x86-64
wget
http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.bz2
pcre
wget -c
https://lnamp-web-server.googlecode.com/files/pcre-8.30.tar.gz
字元轉換庫libiconv
wget -c
http://lnamp-web-server.googlecode.com/files/libiconv-1.14.tar.gz
libmcrypt
wget -c
http://lnamp-web-server.googlecode.com/files/libmcrypt-2.5.8.tar.gz
wget -c
http://lnamp-web-server.googlecode.com/files/mcrypt-2.6.8.tar.gz
mhash
wget -c
http://lnamp-web-server.googlecode.com/files/mhash-0.9.9.9.tar.gz
phpMyAdmin
wget -c
http://lnamp-web-server.googlecode.com/files/phpMyAdmin-3.4.2-all-languages.zip
gd
wget -c
http://lnamp-web-server.googlecode.com/files/gd-2.0.35.tar.gz
將eaccelerator換成xcache(xcache 2.0支援php 5.4)
wget
http://xcache.lighttpd.net/pub/Releases/2.0.0/xcache-2.0.0.tar.gz
suhosin
wget -c
http://lnamp-web-server.googlecode.com/files/suhosin-0.9.32.1.tar.gz
ImageMagick
wget -c
https://lnamp-web-server.googlecode.com/files/ImageMagick-6.7.7.tar.gz
imagick
wget -c
https://lnamp-web-server.googlecode.com/files/imagick-3.1.0RC1.tgz
PHP的memcache擴充套件
wget -c
https://lnamp-web-server.googlecode.com/files/memcache-3.0.6.tgz
wget -c
http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz
wget -c
http://pecl.php.net/get/memcached-2.0.1.tgz
memcached快取
wget
http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
libevent
wget
https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
PDO_MYSQL
wget
https://lnamp-web-server.googlecode.com/files/PDO_MYSQL-1.0.2.tgz
cmake
wget -c
http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz
rpaf模組(該模組用於apache做後端時獲取訪客真實的IP)
wget -c
http://lnamp-web-server.googlecode.com/files/mod_rpaf-0.6.tar.gz
Tcmalloc(優化nginx、mysql)
64位作業系統請先安裝 libunwind庫,32位作業系統不要安裝。libunwind庫為基於64位CPU和作業系統的程式提供了基本的堆疊輾轉開解功能,其中包括用於輸出堆疊跟蹤的API、用於以程式設計方式輾轉開解堆疊的API以及支援C++異常處理機制的API
wget
http://mirror.yongbok.net/nongnu/libunwind/libunwind-1.0.1.tar.gz
wget
http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz
三、安裝MySQL
01.安裝
#使用Tcmalloc 優化nginx、mysql
#64位作業系統請先安裝libunwind庫,32位作業系統不要安裝。libunwind庫為基於64位CPU和作業系統的程式提供了基本的堆疊輾轉開解功能,其中包括用於輸出堆疊跟蹤的API、用於以程式設計方式輾轉開解堆疊的API以及支援C++異常處理機制的API
cd /usr/local/src
tar -zxvf libunwind-1.0.1.tar.gz
cd libunwind-1.0.1
./configure
make;make install
cd ../
tar -zxvf gperftools-2.0.tar.gz
cd gperftools-2.0
./configure
make;make install
echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
cd ../
tar -zxvf cmake-2.8.8.tar.gz
cd cmake-2.8.8
./bootstrap
gmake
gmake install
cd ../
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql -s /sbin/nologin
mkdir -p /data/mysql/{data,binlog,relaylog,mysql}
chown -R mysql:mysql /data/mysql
cd /usr/local/src
tar zxvf mysql-5.5.24.tar.tar.gz
cd mysql-5.5.24
rm -rf CMakeCache.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;make install
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
02.編輯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
03.初始化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
#在# executing mysqld_safe的下一行,加上:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
#或者通sed新增
sed -i `/# executing mysqld_safe/aexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so` /usr/local/mysql/bin/mysqld_safe
04.設定mysql啟動檔案
cp support-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 `46 s#basedir=#basedir=/usr/local/mysql#` /etc/rc.d/init.d/mysqld
sed -i `47 s#datadir=#datadir=/data/mysql/data#` /etc/rc.d/init.d/mysqld
chmod 700 /etc/rc.d/init.d/mysqld
/etc/rc.d/init.d/mysqld start
#使用lsof命令檢視tcmalloc是否起效(64位線沒有效果,需要研究一下)
/usr/sbin/lsof -n | grep tcmalloc
#設定mysql開機啟動
/sbin/chkconfig –add mysqld
/sbin/chkconfig –level 2345 mysqld on
ln -s /usr/local/mysql/bin/mysql /sbin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
#設定root密碼(753951)
/sbin/mysqladmin -u root password 753951
#配置庫檔案搜尋路徑
echo “/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf
/sbin/ldconfig
#新增/usr/local/mysql/bin到環境變數PATH中
echo “export PATH=$PATH:/usr/local/mysql/bin” >> /etc/profile
source /etc/profile
#新增mysql管理帳戶 (參看這裡)
mysql -h localhost -u root -p
#msqyl> use mysql;
#msqyl> grant all on *.* to `lilei`@`localhost` identified by `hanmeimei2`;
#msqyl> flush privileges;
#msqyl> exit;
四.安裝apache 2.4.2:
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www -s /sbin/nologin
mkdir -p /data/www/{kerry,king}
mkdir -p /data/logs/{kerry,king}
chown -R www:www /data/www
chown -R www:www /data/logs
cd /usr/local/src
wget
http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz
rpm -e libtool-1.5.22-7.el5_4 (解除安裝舊版本)
tar -zxvf libtool-2.4.2.tar.gz
cd libtool-2.4.2
./configure
make;make install
cd /usr/local/src
tar -zxvf pcre-8.30.tar.gz
cd pcre-8.30
./configure –prefix=/usr/local/pcre
make;make install
cd ../
tar -zxvf httpd-2.4.2.tar.gz
tar -zxvf httpd-2.4.2-deps.tar.gz
cd httpd-2.4.2
#隱藏apache版本資訊
sed -i `s/#define AP_SERVER_BASEPRODUCT “Apache”/#define AP_SERVER_BASEPRODUCT “Microsoft-IIS 5.0″/` include/ap_release.h
sed -i `s/#define PLATFORM “Unix”/#define PLATFORM “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;make install
#make的時候報錯,“/usr/lib/libexpat.so: could not read symbols: File in wrong format”
#解決方法:
cp /usr/lib64/libexpat.* /usr/lib/
#配置自啟動檔案
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
#在首行#!/bin/sh下新增
# Startup script for the Apache Web Server
#
# chkconfig: – 85 15
# description: web server. It is used to serve
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache/logs/httpd.pid
# config: /usr/local/apache/conf/httpd.conf
#或者直接使用sed新增
sed -i `/#!/bin/sh/a# chkconfig: – 85 15
# description: web server
# processname: httpd
# pidfile: /usr/local/apache/logs/httpd.pid
# config: /usr/local/apache/conf/httpd.conf` /etc/init.d/httpd
#修改apache配置檔案
cd /usr/local/apache/conf/
mv httpd.conf httpd.conf.bak
cat >> httpd.conf <<EOF
ServerRoot “/usr/local/apache”
Listen 80
Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5
UseCanonicalName Off
AccessFileName .htaccess
TraceEnable Off
ServerTokens ProductOnly
FileETag None
ServerSignature Off
HostnameLookups Off
# LoadModule foo_module modules/mod_foo.so
#
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_dbd_module modules/mod_authz_dbd.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_form_module modules/mod_auth_form.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule allowmethods_module modules/mod_allowmethods.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule cache_disk_module modules/mod_cache_disk.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule socache_dbm_module modules/mod_socache_dbm.so
#LoadModule socache_memcache_module modules/mod_socache_memcache.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule dumpio_module modules/mod_dumpio.so
#LoadModule buffer_module modules/mod_buffer.so
#LoadModule ratelimit_module modules/mod_ratelimit.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule request_module modules/mod_request.so
#LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule sed_module modules/mod_sed.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_debug_module modules/mod_log_debug.so
#LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
#LoadModule remoteip_module modules/mod_remoteip.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_express_module modules/mod_proxy_express.so
#LoadModule session_module modules/mod_session.so
#LoadModule session_cookie_module modules/mod_session_cookie.so
#LoadModule session_dbd_module modules/mod_session_dbd.so
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#LoadModule ssl_module modules/mod_ssl.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule unixd_module modules/mod_unixd.so
#LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule cgi_module modules/mod_cgi.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
<IfModule unixd_module>
User www
Group www
</IfModule>
ServerAdmin king_819@163.com
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot “/usr/local/apache/htdocs”
<Directory “/usr/local/apache/htdocs”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
<Files “.ht*”>
Require all denied
</Files>
ErrorLog “logs/error_log”
LogLevel warn
<IfModule log_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
<IfModule logio_module>
LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i” %I %O” combinedio
</IfModule>
CustomLog “logs/access_log” common
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ “/usr/local/apache/cgi-bin/”
</IfModule>
<IfModule cgid_module>
#Scriptsock logs/cgisock
</IfModule>
<Directory “/usr/local/apache/cgi-bin”>
AllowOverride None
Options None
Require all granted
</Directory>
RewriteEngine on
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .php3 .php4 .php5 .php6
AddType application/x-httpd-php-source .phps
</IfModule>
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
EOF
#配置mpm_prefork_module
mv extra/httpd-mpm.conf extra/httpd-mpm.conf.bak
cat >> extra/httpd-mpm.conf <<EOF
<IfModule mpm_prefork_module>
ServerLimit 10000
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 10000
MaxConnectionsPerChild 10000
</IfModule>
EOF
#配置虛擬主機(apache虛擬主機,通過IP訪問預設會訪問到第一個虛擬主機上,那麼就第一個虛擬主機定義為127.0.0.1,目錄指到/usr/local/apache/htdocs)
mv extra/httpd-vhosts.conf extra/httpd-vhosts.conf.bak
cat >> extra/httpd-vhosts.conf <<EOF
#Vhosts
<VirtualHost *:81>
ServerAdmin king_819@163.com
DocumentRoot “/usr/local/apache/htdocs”
<Directory “/usr/local/apache/htdocs”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ServerName 127.0.0.1
</VirtualHost>
<VirtualHost *:81>
ServerAdmin king_819@163.com
DocumentRoot “/data/www/kerry”
<Directory “/data/www/kerry”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ServerName
www.kerry.com
ErrorLog “logs/kerry-error_log”
CustomLog “|/usr/local/apache/bin/rotatelogs /data/logs/kerry/%y_%m_%d.access_log 86400” common
</VirtualHost>
<VirtualHost *:81>
ServerAdmin king_819@163.com
DocumentRoot “/data/www/king”
<Directory “/data/www/king”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ServerName
www.king.com
ErrorLog “logs/king-error_log”
CustomLog “|/usr/local/apache/bin/rotatelogs /data/logs/king/%y_%m_%d.access_log 86400” common
</VirtualHost>
EOF
#設定apache自啟動
chmod 700 /etc/init.d/httpd
/etc/init.d/httpd start
/sbin/chkconfig –add httpd
/sbin/chkconfig –level 2345 httpd on
cd ../
五、安裝PHP 5.4.2
#編譯安裝相關支援庫
libiconv
cd /usr/local/src
tar -zxvf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure
make;make install
cd ../
libmcrypt
tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make;make install
/sbin/ldconfig
cd libltdl/
./configure –enable-ltdl-install
make;make install
mhash
cd /usr/local/src
tar -zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make;make install
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
mcrypt
cd /usr/local/src
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
make;make install
編譯php
這裡我們為php打入補丁.有助於防止郵件傳送被濫用(多使用者)以及在郵件中提供有價值的資訊.補丁介紹資訊請點選:http://www.lancs.ac.uk/~steveb/patches/php-mail-header-patch/
cd /usr/local/src/
tar -zxvf php-5.4.2.tar.gz
patch -d php-5.4.2 -p1 < php5-mail-header.patch
cd php-5.4.2
./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
#如果報錯誤:configure: error: Cannot find ldap libraries in /usr/lib
先執行:
cp -frp /usr/lib64/libldap* /usr/lib/
再繼續./configure…… …..
make ZEND_EXTRA_LIBS=`-liconv`
make install
cp php.ini-production /usr/local/php/etc/php.ini
cd ../
安裝php擴充套件模組
cd /usr/local/src
tar -zxvf memcache-3.0.6.tgz
cd memcache-3.0.6/
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –with-zlib-dir –enable-memcache
make;make install
make test
cd ../
memcached擴充套件
#php的擴充套件memcache,不支援cas,所以我們要裝memcached擴充套件,memcached擴充套件是基於libmemcached,所以要先安裝libmemcached
#安裝memcached的服務端支援庫
cd /usr/local/src
tar -zxvf libevent-2.0.18-stable.tar.gz
cd libevent-2.0.18-stable
./configure
make;make install
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib
#安裝Memcached服務端
cd /usr/local/src
tar -zxvf memcached-1.4.13.tar.gz
cd memcached-1.4.13
./configure –prefix=/usr/local/memcached –with-libevent=/usr
make;make install
cd /usr/local/src
tar -zxvf libmemcached-1.0.2.tar.gz
cd libmemcached-1.0.2
./configure –prefix=/usr/local/libmemcached –with-memcached
make;make install
#安裝php的memcached擴充套件庫
cd /usr/local/src
tar -zxvf memcached-2.0.1.tgz
cd memcached-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;make install
#因eaccelerator-0.9.6.1不支援php 5.4.0,所以就改用XCache 2.0.0
cd /usr/local/src
tar -zxvf xcache-2.0.0.tar.gz
cd xcache-2.0.0
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make;make install
#安裝pdo擴充套件
cd /usr/local/src/php-5.4.2/ext/pdo_mysql/
pdo_mysql.c
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql
make;make install
cd /usr/local/src
tar -zxvf ImageMagick-6.7.7.tar.gz
cd ImageMagick-6.7.7-0
./configure –prefix=/usr/local/imagemagick
make;make install
#imagick最新正式版為imagick-3.0.1.tgz,但imagick-3.0.1.tgz在make的時候會出現大量的報錯資訊,所以就改用imagick-3.1.0RC1.tgz
cd /usr/local/src
tar -zxvf imagick-3.1.0RC1.tgz
cd imagick-3.1.0RC1/
export PKG_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
cd /usr/local/src
tar -jxf ioncube_loaders_lin_x86-64.tar.bz2
cd ioncube
mkdir /usr/local/ioncube
mv ioncube_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/”
extension = “memcache.so”
extension = “pdo_mysql.so”
extension = “memcached.so”
extension = “imagick.so”
#` /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/httpd restart
安裝 Nginx
cd /usr/local/src
tar -zxvf nginx-1.2.0.tar.gz
cd nginx-1.2.0
./configure –user=www –group=www –prefix=/usr/local/nginx –with-pcre=/usr/local/src/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;make install
cd ../
#新增nginx啟動指令碼
cat >> /etc/init.d/nginx <<EOF
#! /bin/sh
ulimit -n 65535
# Description: Startup script for nginx
# chkconfig: 2345 55 25
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC=”nginx daemon”
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” ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n “nginx already running”
}
do_stop() {
kill -QUIT `cat $PIDFILE` || echo -n “nginx not running”
}
do_reload() {
kill -HUP `cat $PIDFILE` || echo -n “nginx can`t reload”
}
case “$1” in
start)
echo -n “Starting $DESC: $NAME”
do_start
echo “.”
/etc/init.d/httpd start
;;
stop)
echo -n “Stopping $DESC: $NAME”
do_stop
echo “.”
/etc/init.d/httpd stop
;;
reload)
echo -n “Reloading $DESC configuration…”
do_reload
echo “.”
/etc/init.d/httpd restart
;;
restart)
echo -n “Restarting $DESC: $NAME”
do_stop
sleep 1
do_start
echo “.”
/etc/init.d/httpd restart
;;
*)
echo “Usage: $SCRIPTNAME {start|stop|reload|restart}” >&2
exit 3
;;
esac
exit 0
EOF
#新增nginx配置檔案
mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
cat >> /usr/local/nginx/conf/nginx.conf <<EOF
user www www;
worker_processes 8;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
#使用Tcmalloc優化nginx效能
google_perftools_profiles /var/tmp/tcmalloc;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
#工作模式及連線數上限
events
{
use epoll;
worker_connections 65535;
}
#設定http伺服器,利用它的反向代理功能提供負載均衡支援
http
{
#設定mime型別
include mime.types;
default_type application/octet-stream;
#charset gb2312;
#設定請求緩衝
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 30m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
server_tokens off;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_send_timeout 60;
proxy_read_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
# fastcgi_connect_timeout 300;
# fastcgi_send_timeout 300;
# fastcgi_read_timeout 300;
# fastcgi_buffer_size 64k;
# fastcgi_buffers 4 64k;
# fastcgi_busy_buffers_size 128k;
# fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
#定義訪問日誌的寫入格式
log_format wwwlog `$remote_addr – $remote_user [$time_local] “$request” `
`$status $body_bytes_sent “$http_referer” `
`”$http_user_agent” $http_x_forwarded_for`;
log_format bbslog `$remote_addr – $remote_user [$time_local] “$request” `
`$status $body_bytes_sent “$http_referer” `
`”$http_user_agent” $http_x_forwarded_for`;
###禁止通過ip訪問站點
server{
server_name _;
return 404;
}
server
{
listen 81;
server_name
www.kerry.com;
index index.html index.htm index.php;#設定訪問的預設首頁地址
root /data/www/kerry;#設定網站的資源存放路徑
#limit_conn crawler 20;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$
http://$host/$1$2/ permanent;
}
#所有jsp的頁面均交由tomcat處理
location ~ .(php)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass
http://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
{
expires 30d;
}
location ~ .*.(js|css)?$
{
expires 1h;
}
access_log /data/logs/kerry/kerry_nginx.log wwwlog;#設定訪問日誌的存放路徑
}
server
{
listen 80;
server_name
www.king.com;
index index.html index.htm index.php;#設定訪問的預設首頁地址
root /data/www/king;#設定網站的資源存放路徑
#limit_conn crawler 20;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$
http://$host/$1$2/ permanent;
}
#所有jsp的頁面均交由tomcat處理
location ~ .(php)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass
http://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
{
expires 30d;
}
location ~ .*.(js|css)?$
{
expires 1h;
}
access_log /data/logs/king/king_nginx.log bbslog;#設定訪問日誌的存放路徑
}
server
{
listen 80;
server_name status.www.kerry.com;
location / {
stub_status on;
access_log off;
}
}
}
EOF
#將nginx新增到啟動服務中
chmod 700 /etc/init.d/nginx
/etc/init.d/nginx start
/sbin/chkconfig –add nginx
/sbin/chkconfig –level 2345 nginx on
#每天定時切割Nginx日誌
cat >>/usr/local/nginx/sbin/cut_nginx_log.sh<< EOF
#!/bin/bash
# This script run at 00:00
# The Nginx logs path
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
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh
#為apache安裝rpaf模組,該模組用於apache做後端時獲取訪客真實的IP
#使用apxs安裝模組.這裡要使用此前apache編譯安裝後的apxs
cd /usr/local/src
tar -zxf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
#錯誤提示:
mod_rpaf-2.0.c: In function `rpaf_cleanup`:
mod_rpaf-2.0.c:150: error: `conn_rec` has no member named `remote_ip`
mod_rpaf-2.0.c:151: error: `conn_rec` has no member named `remote_addr`
mod_rpaf-2.0.c:151: warning: implicit declaration of function `inet_addr`
mod_rpaf-2.0.c:151: error: `conn_rec` has no member named `remote_ip`
mod_rpaf-2.0.c: In function `change_remote_ip`:
mod_rpaf-2.0.c:164: error: `conn_rec` has no member named `remote_ip`
mod_rpaf-2.0.c:183: error: `conn_rec` has no member named `remote_ip`
mod_rpaf-2.0.c:186: error: `conn_rec` has no member named `remote_ip`
mod_rpaf-2.0.c:187: error: `conn_rec` has no member named `remote_addr`
mod_rpaf-2.0.c:187: error: `conn_rec` has no member named `remote_ip`
apxs:Error: Command failed with rc=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,新增模組引數,查詢LoadModule php5_module modules/libphp5.so,在下方新增:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
#Mod_rpaf settings
RPAFenable On
#上面出現的192.168.9.9請修改為你本機所監聽web服務的ip.多個IP用空格空開
RPAFproxy_ips 127.0.0.1 192.168.9.9
RPAFsethostname On
RPAFheader X-Forwarded-For
相關文章
- 環境搭建2024-03-24
- windows環境下Django環境搭建2012-12-22WindowsDjango
- react環境搭建2020-07-21React
- LNMP 環境搭建2020-04-27LNMP
- 搭建Java環境2020-05-20Java
- Vagrant 環境搭建2020-07-11
- Flutter環境搭建2019-12-18Flutter
- swoft 環境搭建2019-09-17
- OpenGL 環境搭建2019-05-19
- 搭建gym環境2019-03-30
- 搭建lnmp環境2019-02-16LNMP
- Angular環境搭建2018-08-28Angular
- JDK環境搭建2018-10-02JDK
- keil環境搭建2020-12-16
- Dubbo環境搭建2020-11-07
- mac搭建環境2022-04-12Mac
- FNA 環境搭建2020-10-14
- FNA環境搭建2020-09-25
- Maven 環境搭建2020-10-05Maven
- spark環境搭建2017-08-24Spark
- Hive環境搭建2017-06-14Hive
- centosLAMP環境搭建2017-11-15CentOSSLAMLAMP
- lnmp環境搭建2014-02-17LNMP
- ZooKeeper環境搭建2016-05-08
- java 環境 搭建2012-11-04Java
- MAVEN環境搭建2011-02-16Maven
- App環境搭建2024-06-25APP
- gogs環境搭建2024-07-15Go
- Windows環境下的Nginx環境搭建2018-04-20WindowsNginx
- window環境下testlink環境搭建(xammp)2022-05-07
- 以太坊-Win環境下remix環境搭建2021-07-27REM
- 【環境搭建】RocketMQ叢集搭建2022-12-24MQ
- Flutter Engine環境搭建2020-02-22Flutter
- iOS逆向環境搭建2020-03-23iOS
- docker搭建php環境2020-08-22DockerPHP
- Supervisor 環境搭建2020-02-12
- Mac 新環境搭建2019-11-08Mac
- Flutter 環境搭建 For Mac2019-09-19FlutterMac