編譯安裝nginx
tar -zxvf nginx-1.0.9.tar.gz -C /usr/local/src
./configure --prefix=/usr/local/nginx109 --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx
make && make install
/usr/local/nginx/sbin/nginx start
netstat -anplt | grep :80
elinks 127.0.0.1
編譯安裝mysql
tar –xzvf mysql-mysql-5.1.34.tar.gz –C /usr/local/src
如果不存在mysql 用戶,則建立之
./configure --prefix=/usr/local/mysql
make && make install
rm -rf /etc/my.cnf
/usr/local/mysql/bin/mysql_install_db
chown -R mysql:mysql /usr/local/mysql/
./mysqld_safe --user=mysql &啓動mysql服務器
/usr/local/mysql/bin/mysql 連接測試
編譯安裝php
tar -jxvf php-5.2.9.tar.bz2 -C /usr/local/src
cp php-5.2.8-fpm-0.5.10.diff.gz /usr/local/src
cd /usr/local/src
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.9/ -p1
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql/ --enable-fastcgi --enable-fpm
make && make install
cp php.ini-dist /usr/local/php/php.ini
vim /usr/local/php/etc/php-fpm.conf
Unix user of processes
<value name="user">nobody</value>
Unix group of processes
<value name="group">nobody</value>
取消註釋.標籤user和group用於設置運行FastCGI進程的用戶和用戶組。需要注意的是,這裏指定的用戶和用戶組要和Nginx配置文件中指定的用戶和用戶組一致。
其他選項的解釋
標籤listen_address是配置fastcgi進程監聽的IP地址以及端口,默認是127.0.0.1:9000。
<value name="listen_address">127.0.0.1:9000</value>
標籤display_errors用來設置是否顯示PHP錯誤信息,默認是0,不顯示錯誤信息,設置爲1可以顯示PHP錯誤信息。
<value name="display_errors">0</value>
標籤max_children用於設置FastCGI的進程數。根據官方建議,小於2GB內存的服務器,可以只開啓64個進程,4GB以上內存的服務器可以開啓200個進程。
<value name="max_children">5</value>
標籤request_terminate_timeout用於設置FastCGI執行腳本的時間。默認是0s,也就是無限執行下去,可以根據情況對其進行修改。
<value name="request_terminate_timeout">0s</value>
標籤rlimit_files用於設置PHP-FPM對打開文件描述符的限制,默認值爲1024。這個標籤的值必須和Linux內核打開文件數關聯起來,例如要將此值設置爲65535,就必須在Linux命令行執行'ulimit -HSn 65536'。
<value name="rlimit_files">1024</value>
標籤max_requests指明瞭每個children最多處理多少個請求後便會被關閉,默認的設置是500。
<value name="max_requests">500</value>
標籤allowed_clients用於設置允許訪問FastCGI進程解析器的IP地址。如果不在這裏指定IP地址,Nginx轉發過來的PHP解析請求將無法被接受。
<value name="allowed_clients">127.0.0.1</value>
管理FastCGI進程
在配置完php-fpm後,就可以啓動FastCGI進程了。啓動fastcgi進程有兩種方式:
/usr/local/php/bin/php-cgi --fpm
或者
/usr/local/php/sbin/php-fpm start
建議採用第二種方式啓動FastCGI進程。
/usr/local/php/sbin/php-fpm還有其他參數,具體爲start|stop|quit|restart|reload|logrotate。
每個啓動參數的含義如下:
? start,啓動PHP的FastCGI進程。
? stop,強制終止PHP的FastCGI進程。
? quit,平滑終止PHP的FastCGI進程。
? restart, 重啓PHP的FastCGI進程。
? reload, 重新加載PHP的php.ini。
? logrotate, 重新啓用log文件。
reload是個很重要的參數,它可以在PHP的FastCGI進程不中斷的情況下重新加載改動過的php.ini,因此通過php-fpm可以平滑變更FastCGI模式下的PHP設置。
在FastCGI進程啓動後,其監聽的IP地址和端口也隨即啓動,可以通過ps和netstat查看相關信息。
配置Nginx來支持PHP
Nginx的安裝特別簡單,前面已經對此進行了詳細介紹,這裏不再進行講述。下面重點介紹Nginx如何通過php-fpm的FastCGI進程對PHP進行解析處理。
由於Nginx本身不會對PHP進行解析,因此要實現Nginx對PHP的支持,其實是將對PHP頁面的請求交給fastCGI進程監聽的IP地址及端口。如果把php-fpm當做動態應用服務器,那麼Nginx其實就是一個反向代理服務器。Nginx通過反向代理功能實現對PHP的解析,這就是Nginx實現PHP動態解析的原理。
取消掉下端註釋
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
}
fastcgi_param指令指定放置PHP動態程序的主目錄,也就是$fastcgi_script_name前面指定的路徑
fastcgi_params文件是FastCGI進程的一個參數配置文件,在安裝Nginx後,會默認生成一個這樣的文件,這裏通過include指令將FastCGI參數配置文件包含了進來。
接下來,啓動nginx服務。
/usr/local/nginx/sbin/nginx
到此爲止,Nginx+PHP已經配置完成。
測試php
mkdir /scripts
touch /scripts/wdostest.php
vim /scripts/wdostest.php
<? phpinfo(); ?>
firefox 127.0.0.1/wdostest.php
測試php連接mysql
touch /scripts/testmysql.php
vim /scripts/testmysql.php
<?
$link=mysql_connect('localhost','root');
if(!$link)
echo "sorry,faild";
else
echo "oh yes!!!!!";
mysql_close();
?>
firefox 127.0.0.1/testmysql.php
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
root /scripts;
if (-f $request_filename) {
expires 1d;
break;
}
}