這篇文章主要介紹了Debian系統(tǒng)下如何為PHP程序配置Nginx服務(wù)器的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Debian系統(tǒng)下如何為PHP程序配置Nginx服務(wù)器文章都會有所收獲,下面我們一起來看看吧。
在西雙版納等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),西雙版納網(wǎng)站建設(shè)費用合理。
nginx安裝方法:
1 apt網(wǎng)絡(luò)安裝
修改源列表
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
解壓查看編譯選項
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í)行命令文件的路徑,沒有指定的話,默認
--conf-path=path nginx配置文件路徑,沒有指定的話,默認為
--error-log-path=path 在nginx.conf中沒有使用error_log指定錯誤日志路徑時,默認
--http-log-path=path 定義被訪問文件的日志存放路徑,如果在nginx.conf中沒有使用access_log指定,默認為
--pid-path=path 當(dāng)在nginx.conf中沒有使用pid指定pid文件路徑時,默認為
--lock-path=path 鎖文件存放路由,如果在nginx.conf中沒有指定,則默認為
--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模式,如果當(dāng)前平臺沒有其他有效模式,則默認編譯
--without-select_module 禁止select模式
--with-poll_module 使用poll模式,如果當(dāng)前平臺沒有其他有效模式,則默認編譯
--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 設(shè)置perl模塊路徑
--with-perl=path 為perl庫設(shè)置路徑
--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服務(wù)
--without-http-cache 禁用http cache
--with-mail 開啟mail服務(wù)
--with-mail_ssl_module 在mail服務(wù)中開啟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é)果如下圖:
編譯并安裝
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服務(wù)器遇到動態(tài)程序時都需要重新啟動腳本解析器來執(zhí)行解析,然后結(jié)果被返回給http服務(wù)器。這在處理高并發(fā)訪問時,幾乎是不可用的。另外傳統(tǒng)的cgi接口方式安全性也很差,現(xiàn)在已經(jīng)很少被使用了。fastcgi接口方式采用c/s結(jié)構(gòu),可以將http服務(wù)器和腳本解析服務(wù)器分開,同時在腳本解析服務(wù)器上啟動一個或者多個腳本解析守護進程。當(dāng)http服務(wù)器每次遇到動態(tài)程序時,可以將其直接交付給fastcgi進程來執(zhí)行,然后將得到的結(jié)果返回給瀏覽器。這種方式可以讓http服務(wù)器專一地處理靜態(tài)請求或者將動態(tài)腳本服務(wù)器的結(jié)果返回給客戶端,這在很大程度上提高了整個應(yīng)用系統(tǒng)的性能。
nginx不支持對外部程序的直接解析,所有的外部程序(包括php)必須通過fastcgi接口來調(diào)用。fastcgi接口在linux下是socket,(這個socket可以是文件socket,也可以是ip socket)。為了調(diào)用cgi程序,還需要一個fastcgi的wrapper(wrapper可以理解為用于啟動另一個程序的程序),這個wrapper綁定在某個固定socket上,如端口或者文件socket。當(dāng)nginx將cgi請求發(fā)送給這個socket的時候,通過fastcgi接口,wrapper接納到請求,然后派生出一個新的線程,這個線程調(diào)用解釋器或者外部程序處理腳本并讀取返回數(shù)據(jù);接著,wrapper再將返回的數(shù)據(jù)通過fastcgi接口,沿著固定的socket傳遞給nginx;最后,nginx將返回的數(shù)據(jù)發(fā)送給客戶端,這就是nginx+fastcgi的整個運作過程。
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):
配置文件主要參照編譯完成后生成的默認配置文件。
主模塊的配置選項
user指令設(shè)置進程以什么用戶運行,在源碼編譯安裝時指定的nginx用戶,如果在編譯時沒有指定,默認是nobody賬戶,在配置文件中此行處于注釋狀態(tài), user 指令可以設(shè)置兩個參數(shù),第一個指定進程所屬用戶,第二個是可選,指定進程所屬組
user nginx nobody;
設(shè)置工作進程數(shù),一個工作進程為一個單線程,在cpu密集型環(huán)境中,可以設(shè)置worker_processes數(shù)目為cpu核數(shù)
worker_processes 4;
指定nginx錯誤日志文件的位置,如果要禁止錯誤日志使用error_log /dev/null,error_log可以存在于不同的字段main、http、server等,文件后面可以指定記錄的日志的默認等級。
error_log logs/error.log;
設(shè)置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服務(wù)器相關(guān)屬性進行設(shè)置
http { #可以用include指令包含一些其他文件,支持通配符,可以使用絕對路徑,也可以使用相對路徑,相對路徑以nginx.conf為根據(jù) include mime.types; #設(shè)置默認的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; #可以設(shè)置兩個值,第一個表示客戶端與服務(wù)器長連接的超時時間,超過這個時間,服務(wù)器將關(guān)閉連接。第二個值指定的應(yīng)答頭中keep-alive中timeout的值,讓瀏覽器知道什么時候關(guān)閉連接。 keepalive_timeout 65; #開啟gzip壓縮 gzip on; #在三次握手時,發(fā)送給客戶端應(yīng)答后的超時時間,目前還沒進入連接狀態(tài),只完成了兩次握手,如果在規(guī)定時間沒收到應(yīng)答包,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; #設(shè)個指令是應(yīng)答頭重的content-type字段使用指定的編碼集,off表示不在應(yīng)答頭重添加content-type信息 charset off; #指定www.nginx.com域名的訪問日志路徑及格式 access_log logs/host.access.log main; #如果在url中沒有指定文件,則設(shè)置一個默認主頁,可以設(shè)置多個文件,空格分開,可以在http、server、location中設(shè)置 index index.php index.htm; #根據(jù)url的不同需求進行配置,可以使用字符串和正則匹配,最確切的匹配被使用,搜索到第一個后會停止 # ~* 不區(qū)分大小寫;~ 區(qū)分大小寫;^~ 禁止在字符串匹配后檢查正則;= 在url和location之間精確匹配,匹配完成后不做額外搜索。 location /i/ { #請求到達后的文件根目錄,在請求中root會把location匹配的值加到root指定的值后面,請求/i/a.php,則會是/html/i/a.php響應(yīng) root html; #在location中設(shè)置index index index.html index.htm; } #為錯誤代碼指定相應(yīng)的錯誤界面,可以用在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,真實響應(yīng)是/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)于“Debian系統(tǒng)下如何為PHP程序配置Nginx服務(wù)器”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Debian系統(tǒng)下如何為PHP程序配置Nginx服務(wù)器”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。