LEMP消耗的資源遠遠少于LAMP堆棧,因此對于廉價的VPS機器和低端盒子來說更加適合。根據(jù)基準測試,它在重負載下的速度要快2.5倍。此外,為了加快速度,我們將安裝MariaDB而不是MySQL,因為它更快,但仍然與原始MySQL完全兼容。
我們要覆蓋什么
安裝Nginx
Nginx配置基礎(chǔ)知識
設(shè)置防火ABC-XYZ
安裝和配置MariaDB
安裝最新的PHP
配置Nginx以提供PHP文件
測試已安裝的堆棧
(使用域)使用Let的加密證書保護站點
先決條件
我們將在Debian 9上安裝和設(shè)置LEMP堆棧:
從一個干凈的VPS開始
至少512Mb的RAM
15Gb的可用磁盤空間
您將需要root用戶訪問權(quán)限
您必須為您的域(本教程中的example.com)設(shè)置DNS記錄,以便指向您的VPS才能安裝Let的加密證書。如果您沒有,請改為訪問您的IP地址并跳過最后一步。
第1步:安裝Nginx
安裝和防火ABC-XYZ設(shè)置
首先,以root身份或以sudo權(quán)限登錄到您的服務(wù)器。 然后,更新包管理器的緩存:
sudo apt update
運行以下命令安裝Nginx:
sudo apt install nginx -y
Nginx現(xiàn)已安裝。 在瀏覽器中轉(zhuǎn)到您的域(如果沒有域名,則轉(zhuǎn)到IP地址)。 將顯示默認的Nginx歡迎頁面:
這意味著Nginx已成功安裝。 通過systemctl啟用它以在每次服務(wù)器啟動時啟動它:
sudo systemctl enable nginx
為了最大限度地提高安全性,您現(xiàn)在將安裝ufw(簡單防火ABC-XYZ)并將其配置為允許HTTP,HTTPS,F(xiàn)TP和SSH連接,并拒絕所有其他連接:
sudo apt install ufw -y
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw allow SSH
sudo ufw allow ftp
通過運行啟用它(使其激活):
sudo ufw enable
在詢問時回答y,并在瀏覽器中重新加載該站點。 如果您仍然看到相同的歡迎頁面,則表明您已正確配置防火ABC-XYZ。 如果顯示錯誤(例如拒絕訪問),請禁用防火ABC-XYZ:
sudo ufw禁用
并檢查其配置:
sudo ufw status
您將看到已啟用的配置文件列表。 如果您沒有看到上面的那些,請重新運行命令并再次啟用它。
配置目錄
在Debian 9上,Nginx將其配置文件存儲在/ etc / nginx下,服務(wù)靜態(tài)文件的默認目錄是/ usr / share / nginx / html。 當我們需要更改配置并添加新文件時,這將在后面的步驟中變得很重要。
第2步:安裝MariaDB
安裝MariaDB(默認情況下可用于apt):
sudo apt安裝mysql-server -y
安裝完成后啟動它:
sudo systemctl啟動mysql
為了保持與原始MySQL產(chǎn)品的完全兼容性,MariaDB響應(yīng)mysql命令。
安裝MariaDB之后,必須運行一個腳本(稱為mysql_secure_installation)來保護數(shù)據(jù)庫:
sudo mysql_secure_installation
當它詢問您當前的root密碼時,請按Enter鍵,因為這是您第一次配置它。 然后,為root用戶輸入新密碼并回答y以刪除匿名用戶。 如果您不打算從服務(wù)器外部訪問數(shù)據(jù)庫,請回答下一個問題,否則鍵入n。 輸入y或按Enter鍵以查看隨后的所有問題。
嘗試通過運行連接到它:
sudo mysql -u root -p
出現(xiàn)提示時,輸入您剛設(shè)置的root密碼。
你會看到mysql提示符:
意味著MariaDB正常工作并且得到了適當?shù)谋Wo。 輸入exit退出控制臺。
第3步:安裝PHP
您現(xiàn)在將安裝PHP 7.0,默認情況下在Debian 9上可用。
要安裝PHP 7.0,請運行:
sudo apt安裝php-fpm php-mysql
然后,安裝您最有可能需要的其他PHP擴展:
sudo apt安裝php-mysql php-mbstring php-dev php-gd php-pear php-zip php-xml php-curl -y
要將剛剛安裝的PHP版本設(shè)置為系統(tǒng)范圍的默認版本,請運行以下命令:
sudo update-alternatives --set php /usr/bin/php7.0
現(xiàn)在檢查可用PHP的版本:
sudo php --version
你會看到版本是7.0,應(yīng)該是。
第4步:配置Nginx以提供PHP內(nèi)容
PHP已安裝且工作正常,但我們現(xiàn)在必須配置Nginx才能使用它,因為它不會自動執(zhí)行(與Apache不同)。
如步驟1中所述,Nginx將其配置文件存儲在/ etc / nginx下。 當前啟用的配置(將由Nginx應(yīng)用)存儲在名為sites-enabled的文件夾中。 同樣,可用但未啟用(因此無法從Internet訪問)的站點存儲在名為sites-available的文件夾中。 我們將編輯默認啟用的站點的配置。
刪除默認配置文件,因為我們不需要它:
rm / etc / nginx / sites-enabled / default
可以在/ etc / nginx / sites-available / default中找到默認站點配置的副本。
創(chuàng)建一個新的配置文件進行編輯:
nano / etc / nginx / sites-enabled / default
添加以下行:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.3-fpm.sock; } location ~ /\.ht { deny all; } }
保存并關(guān)閉文件。
上面配置的第一部分指定Nginx應(yīng)該偵聽HTTP端口80以獲取請求。 然后它將服務(wù)文件的根文件夾設(shè)置為/ var / www / html(這是您存儲網(wǎng)站文件的位置)并告訴Nginx首先嘗試提供PHP文件(而不是HTML)。
顯示的配置的其余部分告訴Nginx如何在請求時調(diào)用PHP,并拒絕訪問源自Apache Web服務(wù)器的.htaccess和類似文件。 它們不被Nginx使用,不應(yīng)該提供給用戶,因為它們可能包含一些敏感信息。
重新啟動Nginx以使更改生效:
sudo systemctl重啟nginx
嘗試在瀏覽器中重新加載您的站點(或IP地址)。 您應(yīng)該像以前一樣看到相同的Nginx默認歡迎頁面。
要測試PHP呈現(xiàn)是否有效,請在/ var / www / html中創(chuàng)建一個PHP文件:
sudo nano /var/www/html/index.php
將以下內(nèi)容放入其中:
<?PHP
phpinfo();
?>
保存并關(guān)閉文件。
phpinfo()函數(shù)輸出有關(guān)PHP安裝的非常詳細的信息。
在瀏覽器中重新加載該站點。 這一次,如果一切順利,你會看到類似這樣的頁面:
如果您看到502 Bad Gateway錯誤,請檢查上面配置中的fastcgi_pass行(PHP版本可能不同,但不太可能)。
請務(wù)必立即刪除該文件,因為它會顯示許多敏感信息:
rm /var/www/html/index.php
第5步:使用Let的加密保護您的域
如果您擁有完全注冊并指向服務(wù)器的域名,則可以使用免費的Let's Encrypt TLS證書保護域名。 這樣做的好處是,您將擁有HTTPS訪問權(quán)限,并且所有瀏覽器中的域名旁邊都會顯示一個掛鎖。
我們將使用Certbot生成和配置加密證書,Certbot是為此目的而創(chuàng)建的免費程序。 讓加密證書在90天后過期,Certbot會在確定時間(默認為每60天)時自動續(xù)訂,因此您根本不必擔心它們。
要安裝Certbot,首先需要通過運行以下命令啟用Debian Backports存儲庫:
secho "deb http://ftp.debian.org/debian stretch-backports main" |
sudo tee /etc/apt/sources.list.d/backports.list
更新包管理器緩存:
sudo apt update
然后,安裝Certbot:
sudo apt install certbot python-certbot-nginx -t stretch-backports -y
完成后,運行Certbot:
sudo certbot --nginx --rsa-key-size 4096
輸入您知道要檢查的電子郵件地址,然后輸入A來同意服務(wù)條款。如果您想訂閱EFF的新聞通訊,請按Y,然后輸入您的域名。然后,Certbot會詢問您是否要將所有流量重定向到HTTPS - 您這樣做,因此輸入2。
您將收到一條祝賀消息,這意味著您的域現(xiàn)在使用來自Let's Encrypt的免費HTTPS證書進行保護。再次在瀏覽器中刷新您的域名。掛鎖將顯示在您站點地址的左側(cè),這意味著連接已加密。如果需要,您可以通過SSL服務(wù)器測試運行您的站點,并看到您將獲得A或更高。
接下來你能做什么
您現(xiàn)在已在Debian 9服務(wù)器上安裝并配置了LEMP堆棧。您現(xiàn)在可以在其上托管您的PHP網(wǎng)站,并且他們可以訪問MariaDB數(shù)據(jù)庫。例如,您可以安裝WordPress,Joomla,Drupal,Moodle或任何其他可能需要訪問數(shù)據(jù)庫的PHP應(yīng)用程序,它將使用足夠的進一步配置。