介紹
LNMP軟體堆棧是一組可用于為動态網頁和Web應用程式提供服務的軟體。這是一個描述Linux作業系統的首字母縮寫詞,帶有Nginx Web伺服器。後端資料存儲在MySQL中,動态處理由PHP處理。
在本教程中,我們将示範如何在Ubuntu 14.04伺服器上安裝LNMP堆棧。Ubuntu作業系統負責第一個要求。我們将描述如何啟動和運作其餘元件。
準備
一台已經設定好可以使用
sudo
指令的非root賬号的Ubuntu 14.04伺服器。沒有伺服器的同學可以在這裡購買,不過我個人更推薦您使用免費的騰訊雲開發者實驗室進行試驗,學會安裝後再購買伺服器。在您的帳戶可用後,使用該使用者名登入您的伺服器。您現在已準備好開始本教程中概述的步驟。
第一步- 安裝Nginx Web伺服器
為了向我們的網站通路者顯示網頁,我們将采用現代高效的網絡伺服器Nginx。
我們将為此過程獲得的所有軟體都将直接來自Ubuntu的預設軟體包存儲庫。這意味着我們可以使用
apt
軟體包管理套件來完成安裝。
由于這是我們第一次使用
apt
,我們應該從更新本地包索引開始。然後我們可以安裝伺服器:
sudo apt-get update
sudo apt-get install nginx
複制
在Ubuntu 14.04中,Nginx配置為在安裝時開始運作。
您可以通過在Web浏覽器中通路伺服器的域名或公共IP位址來測試伺服器是否已啟動并運作。
如果您沒有指向伺服器的域名,并且您不知道伺服器的公共IP位址,可以通過在終端中輸入以下内容之一來找到它:
ip addr show eth0 | grep inet | awk'{print $ 2; }'| sed's /\/.*$//'
複制
111.111.111.111
fe80 :: 601:17ff:fe61:9801
複制
或者您可以嘗試使用:
curl http://icanhazip.com
複制
111.111.111.111
複制
嘗試使用Web浏覽器中收到的其中一行。它應該指向到Nginx的預設登陸頁面:
http://server_domain_name_or_IP
複制
如果您看到上面的頁面,則表示您已成功安裝Nginx。
第二步- 安裝MySQL以管理站點資料
現在我們有了一個Web伺服器,我們需要安裝MySQL,一個資料庫管理系統,來存儲和管理我們站點的資料。
您可以輸入以下指令來安裝:
sudo apt-get install mysql-server
複制
系統将要求您提供root(管理)密碼,以便在MySQL系統中使用。
現在安裝了MySQL資料庫軟體,但其配置尚未完全完成。
首先,我們需要告訴MySQL生成存儲其資料庫和資訊所需的目錄結構。我們可以通過輸入以下内容來執行:
sudo mysql_install_db
複制
接下來,您将需要運作一個簡單的安全腳本,該腳本将提示您修改一些不安全的預設值。輸入以下指令開始腳本:
sudo mysql_secure_installation
複制
您需要輸入在安裝期間選擇的MySQL root密碼。
接下來,它會詢問您是否要更改該密碼。如果您對MySQL root密碼感到滿意,請輸入“N”表示否,然後單擊“ENTER”。之後,系統将提示您删除一些測試使用者和資料庫。您應該通過這些提示點選“ENTER”以删除不安全的預設設定。
一旦腳本運作,MySQL就準備好了。
第三步- 安裝PHP進行處理
現在我們已經安裝了Nginx來為我們的頁面和MySQL安裝來存儲和管理我們的資料,但是我們仍然需要一些東西來連接配接這兩個部分并生成動态内容。在此,我們可以使用PHP。
由于Nginx不像其他一些Web伺服器那樣包含原生PHP處理,是以我們需要安裝
php5-fpm
,即“fastCGI程序管理器”。我們會告訴Nginx将PHP請求傳遞給該軟體進行處理。
我們可以安裝這個子產品,并且還将擷取一個額外的幫助程式包,可允許PHP與我們的資料庫後端進行通信。安裝将引入必要的PHP核心檔案。輸入以下指令:
sudo apt-get install php5-fpm php5-mysql
複制
配置PHP處理器
我們現在已經安裝了PHP元件,但是我們需要進行輕微的配置更改以使我們的設定更安全。
使用root權限打開
php5-fpm
主配置檔案:
sudo nano /etc/php5/fpm/php.ini
複制
我們在這個檔案中尋找的是設定的參數
cgi.fix_pathinfo
。它會用分号(;)注釋,且預設設定為“1”。
這是一個非常不安全的設定,因為如果PHP檔案不完全比對它告訴PHP嘗試執行它可以找到的最接近的檔案。這基本上允許使用者以允許他們執行不應該被允許執行的腳本的方式來建立PHP請求。
我們将通過取消注釋該行并将其設定為“0”來更改這兩個條件,如下所示:
cgi.fix_pathinfo=0
複制
完成後儲存并關閉檔案。
現在,我們隻需輸入以下指令重新啟動PHP處理器:
sudo service php5-fpm restart
複制
這将實作我們所做的改變。
第四步- 配置Nginx以使用我們的PHP處理器
現在,我們已經安裝了所有必需的元件。我們仍然需要做的唯一配置更改是告訴Nginx将我們的PHP處理器用于動态内容。
我們在伺服器塊級别執行此操作(伺服器塊類似于Apache的虛拟主機)。輸入以下指令,打開預設的Nginx伺服器塊配置檔案:
sudo nano /etc/nginx/sites-available/default
複制
目前,删除注釋後,Nginx預設伺服器塊檔案将如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only = on;
root / usr / share / nginx / html;
index index.html index.htm;
server_name localhost;
location / {
try_files $ uri $ uri / = 404;
}
}
複制
我們需要為我們的網站對此檔案進行一些更改。
- 首先,我們需要添加一個
選項作為我們index.php
指令的第一個值,以允許在請求目錄時提供PHP索引檔案。index
- 我們還需要修改
指令以指向我們伺服器的域名或公共IP位址。server_name
- 實際配置檔案包括一些注釋掉的行,用于定義錯誤處理例程。我們将取消注釋以包含該功能。
- 對于實際的PHP處理,我們需要取消注釋另一段的一部分。我們還需要添加一個
指令來確定Nginx不會将錯誤請求傳遞給我們的PHP處理器。try_files
您需要進行的更改如下面的文本所示:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only = on;
root / usr / share / nginx / html;
index index.php index.html index.htm;
server_name server_domain_name_or_IP ;
location / {
try_files $ uri $ uri / = 404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root / usr / share / nginx / html;
}
location ~\.php$ {
try_files $ uri = 404;
fastcgi_split_path_info ^(。+ \。php)(/。+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
include fastcgi_params;
}
}
複制
完成上述更改後,您可以儲存并關閉該檔案。
重新啟動Nginx以進行必要的更改:
sudo service nginx restart
複制
第五步- 建立PHP檔案以測試配置
現在您的LNMP堆棧應該已設定好。我們仍然應該測試以確定Nginx可以正确地将
.php
檔案傳遞給我們的PHP處理器。
我們可以通過在文檔根目錄中建立測試PHP檔案來完成此操作。在文本編輯器中打開文檔根目錄中調用的新檔案
info.php
:
sudo nano /usr/share/nginx/html/info.php
複制
我們可以在新檔案中輸入以下指令。這是有效的PHP代碼,它将傳回有關我們伺服器的格式化資訊:
<?php
phpinfo();
?>
複制
完成後,儲存并關閉檔案。
現在,您可以通過通路
/info.php
内的伺服器的域名或公共IP位址在Web浏覽器中通路此頁面:
http:// server_domain_name_or_IP /info.php
複制
您将看到PHP生成的網頁,其中包含有關您的伺服器資訊:
如果您看到一個看起來像這樣的頁面,那麼您已成功使用Nginx設定PHP處理。
在對此進行測試之後,最好删除您建立的檔案,因為它實際上可以為未經授權的使用者提供有關您的配置的一些提示,這些提示可能有會幫助他們入侵您的系統。如果您以後需要,可以随時重新生成此檔案。
現在,輸入以下指令删除檔案:
sudo rm /usr/share/nginx/html/info.php
複制
結論
您現在應該在Ubuntu 14.04伺服器上配置LNMP堆棧。這為您給通路者提供Web内容給予了非常靈活的基礎。如果您在生産環境使用,我還是建議您直接使用雲關系型資料庫,雲關系型資料庫讓您在雲中輕松部署、管理和擴充的關系型資料庫,提供安全可靠、伸縮靈活的按需雲資料庫服務。騰訊雲關系型資料庫提供 MySQL、SQL Server、MariaDB、PostgreSQL 資料庫引擎,并針對資料庫引擎的性能進行了優化。雲關系型資料庫是一種高度可用的托管服務,提供容災、備份、恢複、監控、遷移等資料庫運維全套解決方案,可将您從耗時的資料庫管理任務中解放出來,讓您有更多時間專注于您的應用和業務。
更多Linux教程請前往騰訊雲+社群學習更多知識。
參考文獻:《How To Install Linux, Nginx, MySQL, PHP (LNMP) stack on Ubuntu 14.04 》