天天看點

nginx的部署

 介紹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 &amp;&amp; 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    -&gt;   ./nginx

建立網頁測試檔案

Cd /opt/php

Mkdir www

Cd www

Vi info.php

&lt;?php phpinfo(); ?&gt;

測試:

<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&gt;create database discuz;

Mysql&gt;grant all privileges on discuz.* to 'saisai'@'localhost' indentified '123456';

Mysql&gt;flush privileges;

Mysql&gt;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