LNAMP是Linux系統上的開源架站組合,從名稱來看,「L」表示「Linux」作業系統,「N」表示「Nginx」網頁伺服器,「A」表示「Apache」網頁伺服器,「M」表示「MySQL」資料庫,「P」表示「PHP」程式語言,而phpMyAdmin則是以PHP作為基礎的資料庫管理工具。使用效能較佳的Nginx來處理靜態檔案、反向代理、資源分配,搭配成熟的Apache來處理動態網頁程式,可以比單純使用Apache網頁伺服器還要來的高效,也可以保有Apache伺服器的.htaccess
檔案的支援。照著這篇文章做,三十分鐘內,一個屬於您自己的網頁伺服器便能誕生了!
在您繼續閱讀這篇文章之前,最好先釐清您的網站是否真的有需要Apache伺服器(有.htaccess
檔案的需求嗎?還是要將Nginx與PHP程式分散到不同的環境?),如果沒有的話,筆者不建議使用Apache來跑PHP程式,您應該會比較需要閱讀以下這兩篇文章,透過Nginx + FPM來執行PHP程式,以獲得更佳的穩定性和效能:
在架設LNAMP之前,您必須要有LAMP Server,即Linux + Apache + MySQL + PHP (+ phpMyAdmin),然後再來安裝Nginx網頁伺服器並進行設定。請詳細閱讀這篇文章來架設LAMP Server,如果您已經有LAMP Server,也是可以看一下文章:
LNAMP Server
修改Apache的連接埠
由於我們要使用Nginx來將收到的PHP資源的請求反向代理給Apache來處理,原先Apache對外使用的連接埠需要先空出來讓Nginx使用才可以。
如果您剛安裝完LAMP Server,那麼您的Apache預設會監聽連接埠80
。要改變Apache所監聽的連接埠,要去編輯/etc/apache2/ports.conf
檔案,將Listen
所指定的連接埠改成其它沒有對外的(被防火牆擋住的),筆者在此將其改為8080
。
接著要修改Apache的虛擬主機(Virtual Host)所監聽的連接埠。如下圖:
然後使用以下指令讓Apache重新載入設定。
安裝Nginx
請閱讀這篇文章來安裝Nginx,並了解它的使用方式:
設定Nginx
要讓Nginx收到的請求反向代理給Apache來處理,Nginx的虛擬主機需要加上如下的設定:
index index.html index.htm index.php;
set $apache http://127.0.0.1:8080;
location @apache {
proxy_pass $apache;
include proxy_params;
}
location / {
try_files $uri $uri/ @apache;
}
location ~ \.php$ {
proxy_pass $apache;
include proxy_params;
}
location ~ /\.ht {
deny all;
}
以上設定,會將以.php
結尾的網址丟給Apache伺服器來處理,且如果遇到Nginx不能處理的路徑,也會嘗試交給Apache伺服器來處理。如果網址的路徑的結尾是/
,就會以index.html
、.index.htm
、index.php
這樣的順序來嘗試能否在該層路徑下存取到資源,當然index.php
因為是以.php
結尾,所以是會交給Apache伺服器來處理的。至於Apache所使用到的.htaccess
、.htpasswd
等檔案名稱以.ht
為開頭的檔案或目錄則會被Nginx阻擋掉,不允許存取。通常會將Nginx的虛擬主機的根目錄和Apache的虛擬主機的根目錄設為一樣的。
如果您的Apache伺服器是在別台電腦上,或者不是使用連接埠8080
,要自行將以上設定中的127.0.0.1:8080
換成您的Apache伺服器使用的IP和連接埠。
設定好後使用以下指令讓Nginx重新載入設定,LNAMP Server就大功告成了!