測試環境:centos-2.6.32.x86_64+nginx-1.2.5+php-5.4.6
總體來說nginx的有以下八大優點:
1.高併發連接:官方測試能支撐5萬併發連接,在實際生產環境中跑到2,~3W併發連接。
2.內存消耗少:在3W併發連接下,開啓的10個NGINX進程才消耗150M內存(15M*10=150M)
3.配置文件非常簡單:風格跟程序一樣通俗易懂。
4.成本低廉:Nginx作爲開源軟件,可以免費使用,而購買F5 BIG-IP、NetScaler
等硬件負載均衡交換機則需要十多萬至幾十萬人民幣。
5.支持rewrite重寫規則:能夠根據域名、URL的不同,將HTTP請求分發到不同的後端服務器羣組。
6.內置的健康檢查功能:如果Nginx Proxy後端的後臺web服務器宕機了,不會音響前端訪問。
7.節省帶寬:支持GZIP壓縮,可以添加瀏覽器本地緩存的Header頭。
8.穩定性高:用於反向代理,宕機的概率微乎其微。
nginx安裝配置:
安裝前準備環境:
yum install gcc openssl-devel pcre-devel lib-devel openssl
下載PCRE:
添加用戶www:
useradd www
安裝:
安裝PCRE:
cd /data/tools/pcre-8.32
./configure
make && make install
安裝nginx
./configure --user=www --group=www --prefix=/data/app/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-pcre=../pcre-8.32 && make && make install
修改配置文件:
cp nginx.conf.default nginx.conf
增加PHP解析配置:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/app/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
設置開機自啓:
vi /etc/rc.d/rc.local ,添加如下內容:
/data/app/nginx/sbin/nginx &
或:
添加服務列表,並設置開機自動啓動
#chkconfig --add nginx
#chkconfig nginx on
查看配置文件:
[root@dns02 conf]# ps -ef|grep nginx
root 990 1 0 Feb27 ? 00:00:00 nginx: master process /data/app/nginx/sbin/nginx
www 21052 990 0 15:51 ? 00:00:00 nginx: worker process
www 21053 990 0 15:51 ? 00:00:00 nginx: worker process
www 21054 990 0 15:51 ? 00:00:00 nginx: worker process
www 21055 990 0 15:51 ? 00:00:00 nginx: worker process
默認測試頁面:
常用命令:
關閉nginx:
./nginx -S stop
pkill -9 nginx(關閉所有nginx進程)
重新加載不重啓nginx:
./nginx -s reload
平滑重啓nginx:
kill -HUP Nginx 主進程號
或kill -HUP ‘cat /Data/app/nginx/nginx.pid’
檢查配置文件:./nginx -t
開放防火牆80端口:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
----------------------------------------------------------------------------------------------
PHP安裝配置:
配置基礎環境:yum install bzip* libxml* curl curl-devel libpng* libxslt-devel(即使如此,也可能還會缺少其它庫或軟件)
編譯:
'./configure' '--prefix=/data/app/php' '--with-openssl' '--with-kerberos' '--enable-mbstring' '--enable-exif' '--enable-calendar' '--with-curl' '--disable-debug' '--enable-inline-optimization' '--enable-ctype' '--with-bz2' '--with-zlib' '--with-gd' '--with-gettext' '--enable-force-cgi-redirect' '--with-iconv=/usr/local/libiconv' '--enable-gd-native-ttf' '--enable-sockets' '--with-xsl' '--enable-fastcgi' '--with-ldap' '--with-ldap-sasl' '--with-xmlrpc' '--with-jpeg-dir=/usr/local/jpeg' '--with-png-dir=/usr/lib64' '--enable-ctype' '--with-bz2' '--with-zlib' '--with-gd' '--with-iconv' '--with-libxml-dir=/usr/lib64' '--with-config-file-path=/data/app/php/etc' '--enable-fpm'
一路遇到各種報錯,編譯報錯解決辦法:
configure: error: Cannot find ldap libraries in /usr/lib.
解決: cp -frp /usr/lib64/libldap* /usr/lib/
configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 d
解決:yum install libxslt-devel
configure: error: jpeglib.h not found.
解決:yum install libjpeg*
configure: error: Cannot find ldap.h
解決:yum install openldap openldap-devel
修改配置文件:
複製:cp php-fpm.conf.default php-fpm.conf
修改:
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 35
啓動PHP:
/data/app/php/sbin/php-fpm &
添加到啓動項:
vi /etc/rc.d/rc.local ,添加如下內容:
/data/app/php/sbin/php-fpm &
查看進程:
[root@dns01 etc]# ps -ef|grep php
root 1217 1 0 11:08 ? 00:00:00 php-fpm: master process (/data/app/php/etc/php-fpm.conf)
nobody 1218 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1219 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1220 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1221 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1222 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1223 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1224 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1225 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1226 1217 0 11:08 ? 00:00:00 php-fpm: pool www
nobody 1227 1217 0 11:08 ? 00:00:00 php-fpm: pool www
測試PHP頁面php.php:
php信息:
<? phpinfo(); ?>
至此已基本完成環境部署。