Debian系統(tǒng)下如何為PHP程序配置Nginx服務器

這篇文章主要介紹了Debian系統(tǒng)下如何為PHP程序配置Nginx服務器的相關知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Debian系統(tǒng)下如何為PHP程序配置Nginx服務器文章都會有所收獲,下面我們一起來看看吧。

在西雙版納等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站設計、成都網(wǎng)站建設 網(wǎng)站設計制作按需制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站建設,成都營銷網(wǎng)站建設,成都外貿(mào)網(wǎng)站建設,西雙版納網(wǎng)站建設費用合理。

nginx安裝方法:

1 apt網(wǎng)絡安裝

修改源列表

vi /etc/apt/sources.list
#加入以下源
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx

更新源列表并通過apt安裝nginx

apt-key add nginx_signing.key
apt-get update
apt-get install nginx

2 源碼編譯安裝
先安裝編譯環(huán)境, 由于nginx在以后的使用中會需要用到perl正則、壓縮算法、ssl等特性,所以我們需要提前安裝相關庫文件。

apt-get install build-essential 
apt-get install libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev libssl0.9.8

下載最新的穩(wěn)定版nginx

解壓查看編譯選項

tar zxvf nginx-1.2.3.tar.gz
cd nginx-1.2.3
#--help可以看到可以配置的參數(shù)
./configure --help

查看編譯可選的配置參數(shù)(以下只是一些常用的配置項):

--prefix=path                      nginx的默認安裝路徑,沒有指定的話。默認為/usr/local/nginx

--sbin-path=path                nginx可執(zhí)行命令文件的路徑,沒有指定的話,默認<prefix>/sbin/nginx

--conf-path=path               nginx配置文件路徑,沒有指定的話,默認為<prefix>/conf/nginx.conf

--error-log-path=path        在nginx.conf中沒有使用error_log指定錯誤日志路徑時,默認<prefix>/logs/error.log

--http-log-path=path         定義被訪問文件的日志存放路徑,如果在nginx.conf中沒有使用access_log指定,默認為<prefix>/logs/access.log

--pid-path=path                    當在nginx.conf中沒有使用pid指定pid文件路徑時,默認為<prefix>/logs/nginx.pid

--lock-path=path                   鎖文件存放路由,如果在nginx.conf中沒有指定,則默認為<prefix>/logs/nginx.lock

--user=user                        如果在nginx.conf中沒有使用user定義進程運行的屬主,則默認為nobody

--group=group                       如果在nginx.conf中沒有使用user定義進程運行的屬組,則默認為nobody

--builddir=dir                     set build directory

--with-rtsig_module                使用rtsig模式

--with-select_module               使用select模式,如果當前平臺沒有其他有效模式,則默認編譯

--without-select_module            禁止select模式

--with-poll_module                 使用poll模式,如果當前平臺沒有其他有效模式,則默認編譯

--without-poll_module              禁止poll模式

--with-file-aio                    enable file aio support

--with-ipv6                        開啟ipv6支持

--with-debug                       開啟debug

以下這些模塊默認沒有開啟,可以使用--with命令開啟以下模塊

  --with-http_ssl_module             開啟ssl模塊

  --with-http_realip_module          可以在后端記錄客戶端ip

  --with-http_addition_module        enable ngx_http_addition_module

  --with-http_flv_module             開啟flv模塊

  --with-http_mp4_module             開啟mp4模塊

  --with-http_gzip_static_module     開啟gzip模塊

  --with-http_secure_link_module     enable ngx_http_secure_link_module

  --with-http_stub_status_module     開啟狀態(tài)查看模塊

  以下模塊默認是開啟的,可以使用--without選項關閉相關模塊

  --without-http_charset_module      disable ngx_http_charset_module

  --without-http_gzip_module         禁用gzip壓縮模塊

  --without-http_ssi_module          禁用ssl模塊

  --without-http_userid_module       disable ngx_http_userid_module

  --without-http_access_module       禁用access模塊

  --without-http_auth_basic_module   禁用auth_basic認證模塊

  --without-http_autoindex_module    禁用列目錄模塊

  --without-http_geo_module          禁用geo模塊

  --without-http_map_module          禁用map模塊

  --without-http_referer_module      disable ngx_http_referer_module

  --without-http_rewrite_module      禁用重定向模塊

  --without-http_proxy_module        禁用代理模塊

  --without-http_fastcgi_module      禁用fastcgi模塊

  --without-http_uwsgi_module        disable ngx_http_uwsgi_module

  --without-http_scgi_module         disable ngx_http_scgi_module

  --without-http_memcached_module    disable ngx_http_memcached_module

  --without-http_limit_conn_module   disable ngx_http_limit_conn_module

  --without-http_limit_req_module    disable ngx_http_limit_req_module

  --without-http_empty_gif_module    disable ngx_http_empty_gif_module

  --without-http_browser_module      disable ngx_http_browser_module

  --without-http_upstream_ip_hash_module    禁用upstream模塊

 --with-http_perl_module            開啟perl模塊
  --with-perl_modules_path=path      設置perl模塊路徑
  --with-perl=path                   為perl庫設置路徑
  --http-client-body-temp-path=path  set path to store http client request body temporary files
  --http-proxy-temp-path=path        set path to store http proxy temporary files
  --http-fastcgi-temp-path=path      set path to store http fastcgi temporary files
  --http-uwsgi-temp-path=path        set path to store http uwsgi temporary files
  --http-scgi-temp-path=path         set path to store http scgi temporary files
  --without-http                     禁用http服務
  --without-http-cache               禁用http cache
  --with-mail                       開啟mail服務
  --with-mail_ssl_module             在mail服務中開啟ssl
  --without-mail_pop3_module         disable ngx_mail_pop3_module
  --without-mail_imap_module         disable ngx_mail_imap_module
  --without-mail_smtp_module         disable ngx_mail_smtp_module
  --with-google_perftools_module     開啟google_perftools模塊
  --with-cpp_test_module             開啟cpp_test模塊
  --add-module=path                  enable an external module
  --without-pcre                     禁止使用perl正則庫
  --with-pcre                        強制使用perl正則庫

     編譯安裝

./configure --prefix=/etc/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module 
--with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module 
--with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-file-aio --with-ipv6

    結果如下圖:

Debian系統(tǒng)下如何為PHP程序配置Nginx服務器

  編譯并安裝

make && make install

     ps:fastcgi回顧
     fastcgi是一個可伸縮地、高速地在http server和動態(tài)腳本語言間通信的接口。多數(shù)流行的http server都支持fastcgi,包括apache、nginx和lighttpd等,同時,fastcgi也被許多腳本語言所支持,其中就有php。fastcgi是從cgi發(fā)展改進而來的。傳統(tǒng)cgi接口方式的主要缺點是性能很差,因為每次http服務器遇到動態(tài)程序時都需要重新啟動腳本解析器來執(zhí)行解析,然后結果被返回給http服務器。這在處理高并發(fā)訪問時,幾乎是不可用的。另外傳統(tǒng)的cgi接口方式安全性也很差,現(xiàn)在已經(jīng)很少被使用了。fastcgi接口方式采用c/s結構,可以將http服務器和腳本解析服務器分開,同時在腳本解析服務器上啟動一個或者多個腳本解析守護進程。當http服務器每次遇到動態(tài)程序時,可以將其直接交付給fastcgi進程來執(zhí)行,然后將得到的結果返回給瀏覽器。這種方式可以讓http服務器專一地處理靜態(tài)請求或者將動態(tài)腳本服務器的結果返回給客戶端,這在很大程度上提高了整個應用系統(tǒng)的性能。
    nginx不支持對外部程序的直接解析,所有的外部程序(包括php)必須通過fastcgi接口來調用。fastcgi接口在linux下是socket,(這個socket可以是文件socket,也可以是ip socket)。為了調用cgi程序,還需要一個fastcgi的wrapper(wrapper可以理解為用于啟動另一個程序的程序),這個wrapper綁定在某個固定socket上,如端口或者文件socket。當nginx將cgi請求發(fā)送給這個socket的時候,通過fastcgi接口,wrapper接納到請求,然后派生出一個新的線程,這個線程調用解釋器或者外部程序處理腳本并讀取返回數(shù)據(jù);接著,wrapper再將返回的數(shù)據(jù)通過fastcgi接口,沿著固定的socket傳遞給nginx;最后,nginx將返回的數(shù)據(jù)發(fā)送給客戶端,這就是nginx+fastcgi的整個運作過程。

Debian系統(tǒng)下如何為PHP程序配置Nginx服務器

php-fpm

php5.3版本源碼已經(jīng)默認支持php-fpm了,但是debian6認為它還沒經(jīng)過廣泛的測試,所以在debian6的軟件倉庫中,雖然php版本為5.3.3,但是卻沒包含php-fpm,如果不想手工編譯安裝php的話可以換一個源。
    
     修改源列表

vi /etc/apt/sources.list
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

    更新源列表,安裝php5-fpm

apt-get update wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -
apt-get install php5-fpm

    安裝其他常用php5組件

apt-get install php5 php5-cgi php5-cli php5-MySQL php5-memcache

    啟動php-fpm

/etc/init.d/php5-fpm start

    這樣的話最基本的nginx+php環(huán)境就搭建完畢了。   

nginx配置文件粗解
nginx的配置文件結構類似下圖這樣的結構:

Debian系統(tǒng)下如何為PHP程序配置Nginx服務器

配置文件主要參照編譯完成后生成的默認配置文件。

   主模塊的配置選項

    user指令設置進程以什么用戶運行,在源碼編譯安裝時指定的nginx用戶,如果在編譯時沒有指定,默認是nobody賬戶,在配置文件中此行處于注釋狀態(tài),  user 指令可以設置兩個參數(shù),第一個指定進程所屬用戶,第二個是可選,指定進程所屬組

  user nginx nobody;

    設置工作進程數(shù),一個工作進程為一個單線程,在cpu密集型環(huán)境中,可以設置worker_processes數(shù)目為cpu核數(shù)

  worker_processes 4;

    指定nginx錯誤日志文件的位置,如果要禁止錯誤日志使用error_log /dev/null,error_log可以存在于不同的字段main、http、server等,文件后面可以指定記錄的日志的默認等級。

  error_log logs/error.log;

    設置pid文件路徑,可以使用kill命令發(fā)送相關信號

  pid    logs/nginx.pid;

    event模塊配置選項,event模塊主要控制nginx處理連接的方式

  events {

  #如果在configure時指定的不止一個事件模型,可以通過use告訴nginx要使用哪一個模型:seletc、poll、kqueue、epoll、rtsig、/dev/poll、eventport等

  use epoll;

  #worker_connections和worker_processes可以計算你的理論最大鏈接數(shù), worker_connections*worker_processes

  worker_connections 1024;

}

    http模塊里面主要是對http服務器相關屬性進行設置

 http {

  #可以用include指令包含一些其他文件,支持通配符,可以使用絕對路徑,也可以使用相對路徑,相對路徑以nginx.conf為根據(jù)

  include    mime.types;

  #設置默認的mime類型

  default_type application/octet-stream;

  #描述記錄日志的格式,在定義格式時可以使用一些變量,各個變了的含義可以從各個模塊匯總查找

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '

           '$status $body_bytes_sent "$http_referer" '

           '"$http_user_agent" "$http_x_forwarded_for"';

  #指定訪問日志的路徑和格式,緩沖區(qū)大小

  access_log logs/access.log main;

  #sendfile拷貝文件在內(nèi)核態(tài)完成,更加高效

  sendfile    on;

  #tcp_nopush   on;

  #可以設置兩個值,第一個表示客戶端與服務器長連接的超時時間,超過這個時間,服務器將關閉連接。第二個值指定的應答頭中keep-alive中timeout的值,讓瀏覽器知道什么時候關閉連接。

  keepalive_timeout 65;

  #開啟gzip壓縮

  gzip on;

  #在三次握手時,發(fā)送給客戶端應答后的超時時間,目前還沒進入連接狀態(tài),只完成了兩次握手,如果在規(guī)定時間沒收到應答包,nginx將關閉鏈接

  send_timeout 30

  server {

     xxx

  }

}

    server模塊嵌在http模塊中,主要用來配置虛擬主機

  server {

    #指定server字段中可以被訪問到的ip地址及端口

    listen    80;

    #將http請求的主機頭與server中的server_name參數(shù)進行匹配,并找出第一個結果,如果沒有server_name參數(shù)匹配上,則第一個出現(xiàn)listen的server將被匹配,多域名用空格分割

    server_name www.nginx.com;

    #設個指令是應答頭重的content-type字段使用指定的編碼集,off表示不在應答頭重添加content-type信息

    charset off;

    #指定www.nginx.com域名的訪問日志路徑及格式

    access_log logs/host.access.log main;

    #如果在url中沒有指定文件,則設置一個默認主頁,可以設置多個文件,空格分開,可以在http、server、location中設置

    index index.php index.htm;

    #根據(jù)url的不同需求進行配置,可以使用字符串和正則匹配,最確切的匹配被使用,搜索到第一個后會停止

    # ~* 不區(qū)分大小寫;~ 區(qū)分大小寫;^~ 禁止在字符串匹配后檢查正則;= 在url和location之間精確匹配,匹配完成后不做額外搜索。

    location /i/ {

      #請求到達后的文件根目錄,在請求中root會把location匹配的值加到root指定的值后面,請求/i/a.php,則會是/html/i/a.php響應

      root  html;

      #在location中設置index

      index index.html index.htm;

    }

    #為錯誤代碼指定相應的錯誤界面,可以用在http、server、location字段中。

    error_page 404       /404.html;

    # redirect server error pages to the static page /50x.html

    error_page  500 502 503 504 /50x.html;

    #精確匹配50x.html,真實響應是/html/50x.html

    location = /50x.html {

      root  html;

    }

    # proxy the php scripts to apache listening on 127.0.0.1:80

    location ~ \.php$ {

      proxy_pass  http://127.0.0.1;

    }

    #配置php腳本傳至fastcgi

    location ~ \.php$ {

     root      html;

     fastcgi_pass  127.0.0.1:9000;

     fastcgi_index index.php;

     #/scripts是php腳本所在的目錄

      fastcgi_param script_filename /scripts$fastcgi_script_name;

      include    fastcgi_params;

    }

    #拒絕訪問.htaccess文件

    location ~ /\.ht {

      deny all;

    }

  }

關于“Debian系統(tǒng)下如何為PHP程序配置Nginx服務器”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Debian系統(tǒng)下如何為PHP程序配置Nginx服務器”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:Debian系統(tǒng)下如何為PHP程序配置Nginx服務器
轉載來于:http://muchs.cn/article24/ihjoce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、品牌網(wǎng)站建設、網(wǎng)站改版、營銷型網(wǎng)站建設、網(wǎng)站制作、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司