亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Debian系統(tǒng)下為PHP程序配置Nginx服務器的基本教程

 更新時間:2015年12月21日 14:46:10   作者:China_OS  
這篇文章主要介紹了Debian系統(tǒng)下為PHP程序配置Nginx服務器的基本教程,這里使用到了FastCGI和php-fpm,需要的朋友可以參考下

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

    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等特性,所以我們需要提前安裝相關(guān)庫文件。

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

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

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

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選項關(guān)閉相關(guān)模塊

  --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

    結(jié)果如下圖:

20151221143837331.png (622×381)

  編譯并安裝

make && make install

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

20151221144039021.png (569×242)

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的配置文件結(jié)構(gòu)類似下圖這樣的結(jié)構(gòu):

20151221144142626.png (655×323)

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

   主模塊的配置選項

    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ā)送相關(guān)信號

  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服務器相關(guān)屬性進行設置

  

 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;

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

  keepalive_timeout 65;

  #開啟gzip壓縮

  gzip on;

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

  send_timeout 30

  server {

     xxx

  }

}

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

  server {

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

    listen    80;

    #將http請求的主機頭與server中的server_name參數(shù)進行匹配,并找出第一個結(jié)果,如果沒有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;

    }

  }

相關(guān)文章

最新評論