介紹nginx之前我們先領略一種技術:
Fastcgi是一種動态的、開放、安全的網絡伺服器接口技術。是由CGI(common gateway interface通用網關接口的技術)更新過來的。
<a href="http://blog.51cto.com/attachment/201206/102144200.png" target="_blank"></a>
CGI就是圖示的應用程序,它反複加載來完成響應,而fastCGI同時啟動多個CGI并且讓程序常駐記憶體,使得fastcgi的效率是cgi的數倍。
支援fastcgi的web伺服器有:nginx,apache(需要加入mod_fastcgi子產品,并且隻支援單程序是以效果一般)、lighttpd、IIS等。
下面我們來搭建:centos+nginx+mysql+php
Nginx簡介:是俄羅斯人igor sysoev(伊戈爾。賽索耶夫)編寫的一款高性能的HTTP和反向代理伺服器。Nginx應該是web伺服器軟體中的一匹黑馬,自從出世便表現不凡。
Centos安裝php,openbsd安裝nginx,實作分布安裝。
Pcre下載下傳:http;//pcre.org (使nginx支援正規表達式rewrite規則)
先安裝pcre庫:
Tar zxvf pcre-8.21.tar.gz
Cd /pcre-8.21
./configure
Make && make install
安裝nginx:
Tar zxvf nginx-1.2.0.tar.gz
cd /nginx-1.2.0
./configure –prefix=/usr/local/nginx (指定安裝目錄)
<a href="http://blog.51cto.com/attachment/201206/102317459.png" target="_blank"></a>
注:安裝過程中可以執行./configure –help 會介紹詳細的安裝選項
nginx配置檔案:/usr/local/nginx/conf/nginx.conf
啟動nginx:cd /usr/local/nginx/sbin
./nginx
Ps –aux|grep nginx 檢視程序
<a href="http://blog.51cto.com/attachment/201206/102439191.png" target="_blank"></a>
關閉nginx:cd /usr/local/nginx/logs
cat nginx.pid
kill –QUIT 程序号
重新開機nginx:kill –HUP 程序号 當然我們也可以用下面這個指令重新開機nginx
kill -HUP `cat /usr/local/nginx/sbin/nginx.pid`
安裝php:
Tar php-5.2.17.tar.gz
Gzip –cd php-5,2,17-fpm-0.5.14.diff.gz| patch –d php-5.2.17 –p1 将更新檔打入php
Cd php-25.2.17
./configure –prefix=/opt/php-5.2.17 –enable-fastcgi –enable-fpm
<a href="http://blog.51cto.com/attachment/201206/102605584.png" target="_blank"></a>
注當然還有好多的選項可以配置如:--with-http_ssl_module –with-http_stub_status --with-mysql=/usr/local/mysql 還有一些GD庫的支援都可以打上
如果遇到<b>configure- error- XML configuration could not be found</b>
可執行yum -y install libxml2 libxml2-devel修複,應該是我安裝包時缺少包才出現這個問提。
啟動php-cgi:
一般啟動php要先執行:cp php.ini-recommended /usr/local/lib/php.ini
Php-fpm配置檔案:/opt/php-5.2.17/etc/php-fpm.conf
如果分布式安裝,這個配置檔案需要修改一下:
<a href="http://blog.51cto.com/attachment/201206/102725581.png" target="_blank"></a>
如果是别的機器安裝,需要将預設的127.0.0.1改成自己的ip
<a href="http://blog.51cto.com/attachment/201206/102935120.png" target="_blank"></a>
這個是增加需要認證的ip,多個ip用逗号隔開
Cd /opt/php-5.2.17/sbin
./php-fpm start
Ps ef|grep php
Netstat –ntl |grep 9000
修改一下nginx配置檔案
Vi /usr/local/nginx/conf/nginx.conf
<a href="http://blog.51cto.com/attachment/201206/103047287.png" target="_blank"></a>
我們将127.0.0.1:9000改成需要php支援的主機ip
修改Root後面我們接我們需要指定的解析php檔案路徑,
修改fastcgi-param SCRIPT_FILENAME /opt/php/www/$fastcgi_script_name;
注:預設的html檔案是在nginx目錄下的/usr/local/nginx/html目錄
啟動nginx:cd /usr/local/nginx/sbin -> ./nginx
建立網頁測試檔案
Cd /opt/php
Mkdir www
Cd www
Vi info.php
<?php phpinfo(); ?>
測試:
<a href="http://ip/info.php">http://ip/info.php</a>
<a href="http://blog.51cto.com/attachment/201206/103148111.png" target="_blank"></a>
配置開機自動重新開機nginx:
Vi /etc/rc.local
ulimit -SHu 65535
/opt/php-5.2.17/sbin/php-fpm start
/usr/local/nginx/sbin/nginx
檢查配置檔案:
/usr/local/nginx/sbin/nginx -t -nginx.conf
安裝Discuz:
Cd /opt/php-5.2.17/www
unzip Discuz_X2.5_SC_UTF8.zip
Mysql>create database discuz;
Mysql>grant all privileges on discuz.* to 'saisai'@'localhost' indentified '123456';
Mysql>flush privileges;
Mysql>quit
<a href="http://192.168.213.129/upload">http://192.168.213.129/upload</a>
<a href="http://blog.51cto.com/attachment/201206/103314874.png" target="_blank"></a>
總結:對于配置檔案,我們會發現server用于記錄伺服器資訊,location用于記錄網頁檔案的所在路徑,我們設定多個server和location便可以代理多台伺服器了,反向代理這個我就不探讨了,如果有需要再進行進一步的探讨。
本文轉自zsaisai 51CTO部落格,原文連結:http://blog.51cto.com/3402313/885882