如何在Debian 10 Buster Server / Desktop上安裝LEMP Stack

本教程將向您展示如何在Debian 10 Buster上安裝Nginx,MariaDB和PHP7.3(LEMP堆棧)。 軟件堆棧是捆綁在一起的一組軟件工具。 LEMP代表 大號inux, Nginx的中號ariaDB /中號ySQL和 PHP,所有這些都是開源的,可以免費使用。 它是為動態網站和Web應用程序提供動力的非常常見的軟件堆棧。 Linux是操作系統。 Nginx是Web服務器; MariaDB / MySQL是數據庫服務器,PHP是負責生成動態網頁的服務器端腳本語言。

所有這四個組件都是免費的和開源的。 但是,由於MySQL現在由Oracle擁有,並且Oracle很有可能將其轉變為開源產品,因此我們將選擇MariaDB而不是MySQL。

在Debian 10 Buster上安裝LEMP Stack的前提條件

要遵循本教程,您需要在本地計算機或遠程服務器上運行的Debian 10 OS。

如果您正在尋找VPS(虛擬專用服務器),則可以通過此特殊鏈接在Vultr註冊帳戶,以獲得$ 50的免費信用(僅限新用戶)。 而且,如果您需要使用域名設置LEMP堆棧,我建議您從NameCheap購買域名,因為價格低廉,而且終身免費提供Whois隱私保護。

請注意,在Debian上安裝軟件時,您需要具有root特權。 你可以加 須藤 在命令開頭或使用 su - 命令切換到root用戶。

步驟1:更新軟件包

在安裝LEMP堆棧之前,最好先更新存儲庫和軟件包。 在您的Debian 10操作系統上運行以下命令。

sudo apt update

sudo apt upgrade

步驟2:在Debian 10上安裝Nginx Web Server

Nginx是一種高性能的Web服務器,如今非常流行。 它也可以用作反向代理和緩存服務器。 輸入以下命令以安裝Nginx Web服務器。

sudo apt install nginx

安裝後,應自動啟動Nginx。 檢查其狀態 systemctl

systemctl status nginx

樣本輸出:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) since Sat 2019-08-10 06:20:26 UTC; 54s ago
     Docs: man:nginx(8)
 Main PID: 19713 (nginx)
    Tasks: 2 (limit: 1149)
   Memory: 4.6M
   CGroup: /system.slice/nginx.service
           ├─19713 nginx: master process /usr/sbin/nginx -g daemon on; master_pr
           └─19714 nginx: worker process

提示:如果上述命令沒有立即退出,則可以按Q鍵來獲得對終端窗口的控制。

如果它沒有運行,請使用systemctl來啟動它。

sudo systemctl start nginx

使Nginx在啟動時自動啟動也是一個好主意。

sudo systemctl enable nginx

檢查Nginx版本:

sudo nginx -v

輸出:

nginx version: nginx/1.14.2

現在,在瀏覽器地址欄中輸入Debian 10服務器的公共IP地址。 您應該看到默認的“ Welcome to nginx”網頁,這意味着Nginx Web服務器正在正常運行。 如果要在本地Debian 10計算機上安裝LEMP,則應輸入 127.0.0.1 要麼 localhost 在瀏覽器地址欄中。

Debian 10 Buster安裝Nginx Web服務器

如果連接被拒絕或無法完成,則可能有防火牆阻止了向TCP端口80的傳入請求。如果使用iptables防火牆,則需要運行以下命令來打開TCP端口80。

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

如果使用的是UFW防火牆,請運行此命令打開TCP端口80。

sudo ufw allow http

現在我們需要設置 www-data (Nginx用戶)作為文檔根目錄(也稱為Web根目錄)的所有者。 默認情況下,它由root用戶擁有。 (請注意,Nginx默認使用 /usr/share/nginx/html/ 作為Web根,而Apache Web服務器使用 /var/www/html/ 當我們紮根。)

sudo chown www-data:www-data /usr/share/nginx/html/ -R

步驟3:在Debian 10上安裝MariaDB數據庫服務器

MariaDB是MySQL的直接替代品。 輸入以下命令以將其安裝在Debian 10上。

sudo apt install mariadb-server mariadb-client

安裝後,MariaDB服務器應自動啟動。 使用 系統控制 檢查其狀態。

systemctl status mariadb

輸出:

● mariadb.service - MariaDB 10.3.15 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: 
   Active: active (running) since Sat 2019-08-10 06:38:58 UTC; 13s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 20669 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 31 (limit: 1149)
   Memory: 77.7M
   CGroup: /system.slice/mariadb.service
           └─20669 /usr/sbin/mysqld

如果它沒有運行,請使用以下命令啟動它:

sudo systemctl start mariadb

要使MariaDB在啟動時自動啟動,請運行

sudo systemctl enable mariadb

現在運行安裝後安全腳本。

sudo mysql_secure_installation

當要求您輸入MariaDB根密碼時,請按Enter鍵,因為尚未設置根密碼。 然後輸入 ÿ 設置MariaDB服務器的根密碼。

如何安裝LEMP Stack Debian 10 Buster

接下來,您只需按Enter即可回答所有剩餘的問題。 這將刪除匿名用戶,禁用遠程root登錄並刪除測試數據庫。 此步驟是MariaDB數據庫安全性的基本要求。 (注意,信 Y 大寫,這是默認答案。)

Debian 10 Lemp堆棧安裝

默認情況下,Debian上的MaraiDB軟件包使用unix_socket來認證用戶登錄,這基本上意味着您可以使用操作系統的用戶名和密碼登錄MariaDB控制台。 因此,您可以運行以下命令來登錄,而無需提供MariaDB根密碼。

sudo mariadb -u root

要麼

sudo mysql -u root

要退出,請運行

exit;

檢查MariaDB服務器版本信息。

mariadb --version

輸出:

mariadb Ver 15.1 Distrib 10.3.15-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

步驟4:在Debian 10上安裝PHP7.3

在撰寫本文時,PHP7.3是PHP的最新穩定版本,與以前的版本相比,性能稍有改善。 輸入以下命令以從Debian 10存儲庫安裝PHP7.3和一些常見的PHP擴展。

sudo apt install php7.3 php7.3-fpm php7.3-mysql php-common php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline

檢查PHP版本信息。

php --version

輸出:

PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies

現在啟動php7.3-fpm。

sudo systemctl start php7.3-fpm

在啟動時啟用自動啟動。

sudo systemctl enable php7.3-fpm

檢查狀態:

systemctl status php7.3-fpm

步驟5:創建一個Nginx服務器塊

Nginx服務器塊就像Apache中的虛擬主機。 我們將不使用默認服務器塊,因為它不足以運行PHP代碼,並且如果我們對其進行修改,它將變得一團糟。 因此,刪除 default 在符號鏈接 sites-enabled 通過運行以下命令創建目錄。 (它仍然可以作為 /etc/nginx/sites-available/default

sudo rm /etc/nginx/sites-enabled/default

然後在下面創建一個全新的服務器阻止文件 /etc/nginx/conf.d/ 目錄,其中包含命令行文本編輯器,例如Nano。

sudo nano /etc/nginx/conf.d/default.conf

將以下文本粘貼到文件中。 以下代碼片段將使Nginx使用通用服務器名稱在IPv4端口80和IPv6端口80上進行偵聽。

server {
  listen 80;
  listen [::]:80;
  server_name _;
  root /usr/share/nginx/html/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ .php$ {
    fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* .(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

保存並關閉文件。 (要在Nano文本編輯器中保存文件,請按 Ctrl+O,然後按Enter確認。 要退出,請按 Ctrl+X。)然後測試Nginx配置。

sudo nginx -t

如果測試成功,請重新加載Nginx。

sudo systemctl reload nginx

步驟6:測試PHP

要使用Nginx服務器測試PHP腳本,我們需要創建一個 info.php Web根目錄中的文件。

sudo nano /usr/share/nginx/html/info.php

將以下PHP代碼粘貼到文件中。

<?php phpinfo(); ?>

保存並關閉文件。

現在,在瀏覽器地址欄中,輸入 server-ip-address/info.php。 更換 sever-ip-address 與您的實際IP。 如果您在本地計算機上遵循本教程,請輸入 127.0.0.1/info.php 要麼 localhost/info.php

您應該看到服務器的PHP信息。 這意味着PHP腳本可以在Nginx Web服務器上正常運行。 您可以發現Zend OPcache已啟用。

Debian 10 Buster Nginx的php-fpm php7.3

Nginx自動重啟

如果由於某種原因您的Nginx進程被殺死,則需要運行以下命令來重新啟動它。

sudo systemctl restart nginx

無需手動輸入此命令,我們可以通過編輯Nginx使Nginx自動重啟 nginx.service 系統服務單元。 要覆蓋默認的systemd服務配置,我們創建一個單獨的目錄。

sudo mkdir -p /etc/systemd/system/nginx.service.d/

然後在此目錄下創建一個文件。

sudo nano /etc/systemd/system/nginx.service.d/restart.conf

在文件中添加以下行,這將使Nginx在檢測到故障後5秒鐘自動重新啟動。

[Service]
Restart=always
RestartSec=5s

保存並關閉文件。 然後重新加載systemd。

sudo systemctl daemon-reload

要檢查是否可行,請使用以下命令殺死Nginx:

sudo pkill nginx

然後檢查Nginx的狀態。 您會發現Nginx自動重啟。

systemctl status nginx

包起來

恭喜! 您已在Debian 10 Buster上成功安裝了Nginx,MariaDB和PHP7.3。 為了確保服務器的安全,您現在應該刪除info.php文件以防止窺視。

sudo rm /usr/share/nginx/html/info.php

希望本教程對您有所幫助 在Debian 10 Buster上安裝LEMP堆棧。 與往常一樣,如果您發現這篇文章很有用,請訂閱我們的免費新聞通訊以獲取新教程。 保重🙂

Sidebar