ubuntu上配置Nginx+PHP5 FastCGI服務器配置
首先安裝或編譯Nginx。
安裝Nginx
源碼包可以在官方主頁上下載。Ubuntu 9.04可以直接通過apt安裝,也可以從這里下載最新的deb包:
sudo apt-get install nginx
如果要自己編譯的話,需要確保自己已經(jīng)有編譯器和PCRE的庫(用于Nginx的rewrite模塊,如果不需要這個模塊可以在configure時使用./configure –without-rewrite)。編譯方法如下:
wget http://sysoev.ru/nginx/nginx-0.5.34.tar.gz
tar zxvf nginx-0.5.34.tar.gz
cd nginx-0.5.34
./configure #默認配置安裝路徑為/usr/local/nginx 可以追加--prefix=/usr設(shè)置到/usr
make && make install # install要求有root權(quán)限
Ubuntu安裝之后的文件結(jié)構(gòu)大致為:
所有的配置文件都在/etc/nginx下,并且每個虛擬主機已經(jīng)安排在了/etc/nginx/sites-available下
程序文件在/usr/sbin/nginx
日志放在了/var/log/nginx中
并已經(jīng)在/etc/init.d/下創(chuàng)建了啟動腳本nginx
默認的虛擬主機的目錄設(shè)置在了/var/www/nginx-default
而自己利用默認配置編譯的,則放在/usr/local/nginx下,以下是目錄結(jié)構(gòu):
/usr/local/nginx/conf 配置目錄
/usr/local/nginx/html 默認的網(wǎng)站根目錄
/usr/local/nginx/logs 日志和pid文件目錄
/usr/local/nginx/sbin 執(zhí)行文件目錄
下面可以啟動nginx來看看效果(請確保80端口沒有其他服務在使用):
Ubuntu請運行:
sudo /etc/init.d/nginx start
其他請運行:
/usr/local/nginx/sbin/nginx
然后就可以通過http://localhost/來看看效果了。
要配置nginx的自動運行,可以將/usr/local/nginx/sbin/nginx添加到/etc/rc.local中,Ubuntu可以執(zhí)行
update-rc.d nginx defaults
安裝PHP5
至于如何在Linux上安裝PHP,在這里我們需要的是cgi方式的php。Ubuntu下可以直接運行:
sudo apt-get install php5-cgi
并且可以根據(jù)自己的情況安裝一些字節(jié)碼優(yōu)化和緩存的擴展,如eaccelerator、apc、xcache等。
PHP5的CGI方式的一大優(yōu)勢是內(nèi)置了FastCGI的支持,只需指明綁定的地址和端口參數(shù)便可以以FastCGI的方式運行,如下:
php-cgi -b 127.0.0.1:9000
如何配置其與nginx一起運行呢?
配置Nginx的PHP FastCGI
請將以下內(nèi)容保存為fastcgi_params文件,保存于/usr/local/nginx/conf下(Ubuntu可保存于/etc/nginx下),他為我們的FastCGI模塊設(shè)置了基本的環(huán)境變量:
#fastcgi_params
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
請?zhí)貏e注意加粗的一行,PHP-CGI特別需要此行信息來確定PHP文件的位置。
另外需要在PHP-CGI的配置文件(Ubuntu 上此配置文件位于/etc/php5/cgi/php.ini)中,打開cgi.fix_pathinfo選項:
cgi.fix_pathinfo=1;
這樣php-cgi方能正常使用SCRIPT_FILENAME這個變量。
接下來在nginx的配置中針對php文件配置其利用FastCGI進程來執(zhí)行:
server {
index index.php;
root /usr/local/nginx/html;
location ~ .*.php$ {
include /usr/local/nginx/conf/fastcgi_params; #請根據(jù)自己保存的路徑進行設(shè)置
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000; #請根據(jù)自己的FastCGI綁定的地址和端口進行配置
}
}
通知Nginx重新載入配置:
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
Ubuntu用戶可以使用init腳本:sudo /etc/init.d/nginx reload
然后啟動php-cgi -b 127.0.0.1:9000
假設(shè)你在文檔根目錄放了index.php,并包含“”的內(nèi)容,現(xiàn)在再看http://localhost/index.php便應該能看到php的調(diào)試信息了。
配置php進程
直接使用php-cgi的FastCGI運行方式有兩個問題(貌似應該有解決方案,如果知道的話可以教教我):
如果進程崩潰,難以配置重新啟動、單進程的效率低
因此,我們可以利用Lighttpd的spawn-fcgi來控制進程的運行。獲得spawn-fcgi的方法如下:
wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2 #獲取Lighttpd的源碼包
tar -xvjf lighttpd-1.4.18.tar.bz2
cd lighttpd-1.4.18
./configure #編譯
make
cp src/spawn-fcgi /usr/local/bin/spawn-fcgi #取出spawn-fcgi的程序
下面我們就可以使用 spawn-fcgi 來控制php-cgi的FastCGI進程了
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi
參數(shù)含義如下
-f <fcgiapp> 指定調(diào)用FastCGI的進程的執(zhí)行程序位置,根據(jù)系統(tǒng)上所裝的PHP的情況具體設(shè)置
-a <addr> 綁定到地址addr
-p <port> 綁定到端口port
-s <path> 綁定到unix socket的路徑path
-C <childs> 指定產(chǎn)生的FastCGI的進程數(shù),默認為5(僅用于PHP)
-P <path> 指定產(chǎn)生的進程的PID文件路徑
-u和-g FastCGI使用什么身份(-u 用戶 -g 用戶組)運行,Ubuntu下可以使用www-data,其他的根據(jù)情況配置,如nobody、apache等
然后我們可以將這行代碼加入到/etc/rc.local文件底部,這樣系統(tǒng)啟動的時候也可以同時啟動PHP的FastCGI進程。
- ubuntu 下的nginx服務器配置詳解
- ubuntu16.04服務器配置ssh免密碼登錄
- Ubuntu服務器配置apache2.4的限速功能shell腳本分享
- 在Ubuntu?Server?22.04上安裝?Docker的詳細步驟記錄
- Ubuntu?22.04或20.04安裝Oracle?SQL?Developer的圖文教程
- Ubuntu22.04系統(tǒng)下升級nodejs到v18版本
- Ubuntu22.04使用nginx部署vue前端項目的詳細教程
- Ubuntu22.04系統(tǒng):fatal:?無法連接到?github.com
- Ubuntu?22.04.1?LTS?編譯安裝?nginx-1.22.1的配置過程
- ubuntu 22.04搭建OpenVPN服務器的詳細圖文教程
- ubuntu22.04將python源切換為清華源的方法
- ubuntu?22.04安裝mysql?8.0步驟與避坑指南
- Ubuntu22.04 LTS 上安裝Redis的過程
- ubuntu22.04?server安裝及使用詳細圖文教程
- Ubuntu22.04安裝PyTorch1.12.1 GPU版本全過程
- Virtualbox 下 Ubuntu 22.04 網(wǎng)絡互通/固定IP 配置方法
- VMware?虛擬機圖文安裝和配置?Ubuntu?Server?22.04?LTS?的詳細步驟
- Ubuntu?22.04?服務器安裝部署(nginx+postgresql)
相關(guān)文章
nginx基于域名,端口,不同IP的虛擬主機設(shè)置的實現(xiàn)
這篇文章主要介紹了nginx基于域名,端口,不同IP的虛擬主機設(shè)置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11Nginx Rewrite規(guī)則與使用介紹和技巧實例
這篇文章主要介紹了Nginx Rewrite規(guī)則與使用介紹和技巧實例,本文講解了正則表達式匹配、文件及目錄匹配、flag標記、Nginx Rewrite相關(guān)指令等內(nèi)容,需要的朋友可以參考下2015-01-01Nginx代理MySQL實現(xiàn)通過域名連接數(shù)據(jù)庫的詳細教程
我們的生產(chǎn)環(huán)境基本上都部署在云服務器上,例如應用服務器、MySQL服務器等,如果MySQL服務器直接暴露在公網(wǎng),就會存在很大的風險,為了保證數(shù)據(jù)安全,MySQL服務器的端口是不對外開放的,所以本文介紹了Nginx代理MySQL實現(xiàn)通過域名連接數(shù)據(jù)庫的詳細教程2024-07-07