国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

Debian系統下為PHP程序配置Nginx服務器的基本教程

2024-08-30 12:27:49
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Debian系統下為PHP程序配置Nginx服務器的基本教程,這里使用到了FastCGI和php-fpm,需要的朋友可以參考下
 

  Nginx 目前來說已經很流行了,所以打算把現有的Apache先替換一部分,在批量部署和管理方面都要考慮到。因為nginx的所有模塊都是靜態編譯的不像apache那樣可以動態添加模塊,所以在一開始就要考慮清楚需求,結合現在很火的LAMP模式,其中P最常見的是PHP,目前較好的FastCGI的管理器有spaw-fcgi和php-fpm,而php老版本都是需要源碼安裝通過打補丁的方式把php-fpm打進去,spaw-fcgi是lighttpd默認的FastCGI管理器,因為牽扯到源碼安裝,當前的軟件包版本在大規模部署起來不是很方便,但是還是有解決辦法的。

    Nginx安裝方法:

    1 apt網絡安裝

       修改源列表

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

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

apt-key add nginx_signing.keyapt-get updateapt-get install nginx

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

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

        下載最新的穩定版nginx

wget http://nginx.org/download/nginx-1.2.3.tar.gz
        解壓查看編譯選項

tar zxvf nginx-1.2.3.tar.gzcd nginx-1.2.3#--help可以看到可以配置的參數./configure --help

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

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

--sbin-path=PATH                nginx可執行命令文件的路徑,沒有指定的話,默認<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     開啟狀態查看模塊

 

  以下模塊默認是開啟的,可以使用--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系統下為PHP程序配置Nginx服務器的基本教程

  編譯并安裝

make && make install

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

Debian系統下為PHP程序配置Nginx服務器的基本教程

php-fpm

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

vi /etc/apt/sources.listdeb http://packages.dotdeb.org stable alldeb-src http://packages.dotdeb.org stable all

    更新源列表,安裝php5-fpm

apt-get update wget http://www.dotdeb.org/dotdeb.gpgcat 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環境就搭建完畢了。   

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

Debian系統下為PHP程序配置Nginx服務器的基本教程

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

   主模塊的配置選項

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

  user nginx nobody;

    設置工作進程數,一個工作進程為一個單線程,在CPU密集型環境中,可以設置worker_processes數目為CPU核數

  worker_processes 4;

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

  error_log logs/error.log;

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

  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可以計算你的理論最大鏈接數, worker_connections*worker_processes  worker_connections 1024;}

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

  

 http {  #可以用include指令包含一些其他文件,支持通配符,可以使用絕對路徑,也可以使用相對路徑,相對路徑以nginx.conf為根據  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"';  #指定訪問日志的路徑和格式,緩沖區大小  access_log logs/access.log main;  #sendfile拷貝文件在內核態完成,更加高效  sendfile    on;  #tcp_nopush   on;  #可以設置兩個值,第一個表示客戶端與服務器長連接的超時時間,超過這個時間,服務器將關閉連接。第二個值指定的應答頭中keep-alive中timeout的值,讓瀏覽器知道什么時候關閉連接。  keepalive_timeout 65;  #開啟gzip壓縮  gzip on;  #在三次握手時,發送給客戶端應答后的超時時間,目前還沒進入連接狀態,只完成了兩次握手,如果在規定時間沒收到應答包,nginx將關閉鏈接  send_timeout 30  server {     xxx  }}

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

  server {    #指定server字段中可以被訪問到的ip地址及端口    listen    80;    #將http請求的主機頭與server中的server_name參數進行匹配,并找出第一個結果,如果沒有server_name參數匹配上,則第一個出現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;    #根據URL的不同需求進行配置,可以使用字符串和正則匹配,最確切的匹配被使用,搜索到第一個后會停止    # ~* 不區分大小寫;~ 區分大小寫;^~ 禁止在字符串匹配后檢查正則;= 在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;    }  }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江川县| 神农架林区| 沅陵县| 丽江市| 高碑店市| 化州市| 安丘市| 土默特右旗| 英德市| 莲花县| 肥城市| 宁晋县| 日土县| 长宁区| 都匀市| 临漳县| 米脂县| 伊吾县| 阿巴嘎旗| 信丰县| 萨迦县| 平江县| 丹阳市| 长海县| 沙湾县| 永寿县| 白沙| 米易县| 张家港市| 巴中市| 拜城县| 商城县| 台湾省| 河北省| 南召县| 黑山县| 孟州市| 乌拉特中旗| 左权县| 蒙山县| 平陆县|