前面我已經(jīng)寫了debian下如何快速部署nginx,這里我再說下nginx如何支持php網(wǎng)站,適合新手。
1、首先修改nginx的配置文件(標色的為我修改過或添加過的內(nèi)容)
vim /etc/nginx/conf/nginx.conf
#user? nobody;
worker_processes? 1;
worker_processes? 1;
#error_log? logs/error.log;
#error_log? logs/error.log? notice;
#error_log? logs/error.log? info;
#error_log? logs/error.log? notice;
#error_log? logs/error.log? info;
#pid??????? logs/nginx.pid;
worker_rlimit_nofile 51200;???????????????????????????//需要在shell下執(zhí)行ulimit? -SHn? 512?00?????????
events {
??? use epoll;
??? worker_connections? 51200;
}
events {
??? use epoll;
??? worker_connections? 51200;
}
http {
??? include?????? mime.types;
??? default_type? application/octet-stream;
??? server_names_hash_bucket_size 128;
??? client_header_buffer_size 32k;
??? large_client_header_buffers 4 32k;
??? log_format? access? '$remote_addr - $remote_user [$time_local] "$request" '
????????????????????? '"$status" $body_bytes_sent "$http_referer" '
????????????????????? '"$http_user_agent" "$http_x_forwarded_for"';
????????????????????? '"$status" $body_bytes_sent "$http_referer" '
????????????????????? '"$http_user_agent" "$http_x_forwarded_for"';
??? access_log? logs/access.log? access;
??? sendfile??????? on;
??? tcp_nopush???? on;
??? tcp_nopush???? on;
??? #keepalive_timeout? 0;
??? keepalive_timeout? 60;
??? keepalive_timeout? 60;
?? tcp_nodelay on;
??? #gzip? on;
??? server {
??????? listen?????? 80;
??????? server_name? localhost;
??????? listen?????? 80;
??????? server_name? localhost;
??????? #charset koi8-r;
??????? #access_log? logs/host.access.log? main;
??????? location / {
??????????? root?? /home/web;
??????????? index? index.php index.html index.htm;
??????????? root?? /home/web;
??????????? index? index.php index.html index.htm;
????????
if (-f $request_filename/index.html){
???????? rewrite (.*) $1/index.html break;??????
???????? }
???????? if (-f $request_filename/index.php){
???????? rewrite (.*) $1/index.php;
????????? }
???????? if (-f $request_filename){
???????? rewrite (.*) /index.php;
????????? }
??????? }
???????? rewrite (.*) $1/index.html break;??????
???????? }
???????? if (-f $request_filename/index.php){
???????? rewrite (.*) $1/index.php;
????????? }
???????? if (-f $request_filename){
???????? rewrite (.*) /index.php;
????????? }
??????? }
??????? #error_page? 404????????????? /404.html;
??????? # redirect server error pages to the static page /50x.html
??????? #
??????? error_page?? 500 502 503 504? /50x.html;
??????? location = /50x.html {
??????????? root?? html;
??????? }
??????? #
??????? error_page?? 500 502 503 504? /50x.html;
??????? location = /50x.html {
??????????? root?? html;
??????? }
??????? # proxy the PHP scripts to Apache listening on 127.0.0.1:80
??????? #
??????? #location ~ \.php$ {
??????? #??? proxy_pass?? ;
??????? #}
??????? #
??????? #location ~ \.php$ {
??????? #??? proxy_pass?? ;
??????? #}
??????? # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
???????
??????? location ~ \.php$ {
??????????? root?????????? html;
??????????? fastcgi_pass?? 127.0.0.1:9000;
??????????? fastcgi_index? index.php;
??????????? fastcgi_param? SCRIPT_FILENAME? /home/web$fastcgi_script_name;??? //home/web?為php網(wǎng)站的目錄
??????????? include??????? fastcgi_params;
??????? }
???????
??????? location ~ \.php$ {
??????????? root?????????? html;
??????????? fastcgi_pass?? 127.0.0.1:9000;
??????????? fastcgi_index? index.php;
??????????? fastcgi_param? SCRIPT_FILENAME? /home/web$fastcgi_script_name;??? //home/web?為php網(wǎng)站的目錄
??????????? include??????? fastcgi_params;
??????? }
??????? # deny access to .htaccess files, if Apache's document root
??????? # concurs with nginx's one
??????? #
??????? #location ~ /\.ht {
??????? #??? deny? all;
??????? #}
??? }
??????? # concurs with nginx's one
??????? #
??????? #location ~ /\.ht {
??????? #??? deny? all;
??????? #}
??? }
??? # another virtual host using mix of IP-, name-, and port-based configuration
??? #
??? #server {
??? #??? listen?????? 8000;
??? #??? listen?????? somename:8080;
??? #??? server_name? somename? alias? another.alias;
??? #??? location / {
??? #??????? root?? html;
??? #??????? index? index.html index.htm;
??? #??? }
??? #}
??? #??????? root?? html;
??? #??????? index? index.html index.htm;
??? #??? }
??? #}
??? # HTTPS server
??? #
??? #server {
??? #??? listen?????? 443;
??? #??? server_name? localhost;
??? #??? ssl????????????????? on;
??? #??? ssl_certificate????? cert.pem;
??? #??? ssl_certificate_key? cert.key;
??? #??? ssl_certificate????? cert.pem;
??? #??? ssl_certificate_key? cert.key;
??? #??? ssl_session_timeout? 5m;
??? #??? ssl_protocols? SSLv2 SSLv3 TLSv1;
??? #??? ssl_ciphers? ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
??? #??? ssl_prefer_server_ciphers?? on;
??? #??? ssl_ciphers? ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
??? #??? ssl_prefer_server_ciphers?? on;
??? #??? location / {
??? #??????? root?? html;
??? #??????? index? index.html index.htm;
??? #??? }
??? #}
??? #??????? root?? html;
??? #??????? index? index.html index.htm;
??? #??? }
??? #}
}
以上是我的nginx.conf文件內(nèi)容
2、安裝php5-cgi模塊
apt-get install php5-cgi php5-gd php5-curl
修改/etc/php5/cgi/php.ini文件,里面有一項cgi.fix_pathinfo數(shù)據(jù)為1,默認為0 cgi.fix_pathinfo=1; 這樣php5-cgi方能正常使用SCRIPT_FILENAME這個變量。
這里還要裝一個php加速的軟件ZendOptimizer,在輸入php.ini位置的時候輸入
/etc/php5/cgi/
3、安裝spawn-fcgi spawn-fcgi是lighttpd的一個用來控制php-cgi的工具
如果系統(tǒng)沒有安裝GCC編譯環(huán)境,剛需要在安裝lighttpd之前要安裝build-essential工具包,執(zhí)行以下命令
aptitude install build-essential?
libpcre3-dev
wget
tar xzvf? lighttpd-1.4.19.tar.gz
cd lighttpd-1.4.19/
./configure –without-zlib –without-bzip2
make
cd src
cp spawn-fcgi? /usr/local/bin/spawn-fcgi
這樣cgi控制器就安裝完成了。
4、啟動cgi
spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www -g www -f /usr/bin/php5-cgi
注意:ip,端口與nginx
中的fastcgi-pass要對應. -C表示打開幾個cgi進程
啟動nginx ,在啟動之前先測試下配置文件是否正確
nginx -t -c /etc/nginx/conf/nginx.conf
2009/02/03 15:27:12 [info] 21782#0: the configuration file /etc/nginx/conf/nginx.conf syntax is ok
2009/02/03 15:27:12 [info] 21782#0: the configuration file /etc/nginx/conf/nginx.conf was tested successfully
2009/02/03 15:27:12 [info] 21782#0: the configuration file /etc/nginx/conf/nginx.conf was tested successfully
出現(xiàn)以上信息說明配置文件準確。
/etc/init.d/nginx start
好了,如果沒有出錯
,則說明配置成功了,現(xiàn)在寫個phpinfo測試下吧
cd /home/web
nano index.php
輸入
<?
phpinfo();
?>
phpinfo();
?>
保存。
測試是否出現(xiàn)phpinfo
lynx
或者用其它機器訪問本機
完成。