如何在Ubuntu 18.04,Ubuntu 19.04上安裝Nginx最新版本

先前我們討論了如何在Ubuntu 18.04 LTS上安裝LEMP堆棧,LEMP堆棧是託管動態網站的常用軟件堆棧。 但是,Ubuntu LTS(長期支持)版本中的軟件通常是過時的。 在本教程中,我們將學習如何在Ubuntu 18.04和Ubuntu 19.04上安裝Nginx最新版本。 在撰寫本文時,Nginx的最新版本是2019年5月21日發布的1.17.0。您可以在此處查看更改日誌。

從官方Nginx存儲庫在Ubuntu 18.04、19.04上安裝Nginx最新版本

Nginx.org為Ubuntu維護一個存儲庫。 我們可以使用此存儲庫來安裝最新版本的Nginx。 首先,使用以下命令為Nginx創建存儲庫源文件。 Nano是命令行文本編輯器。

sudo nano /etc/apt/sources.list.d/nginx.list

在文件中添加以下兩行。

deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx

如果您使用Ubuntu 19.04,則進行更改 bionicdisco

deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ disco nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ disco nginx

要在Nano文本編輯器中保存文件,請按 CTRL+O,然後按 Enter 確認。 按 CTRL+X 退出。 為了驗證從該存儲庫下載的軟件包的完整性,我們需要使用以下命令導入Nginx公鑰。

wget http://nginx.org/keys/nginx_signing.key

sudo apt-key add nginx_signing.key

將存儲庫添加到Ubuntu 18.04系統後,運行以下命令以更新存儲庫信息。

sudo apt update

如果已經從默認的Ubuntu軟件存儲庫安裝了Nginx,則需要將其刪除。

sudo apt remove nginx nginx-common nginx-full nginx-core

另外,您可能需要備份主要的Nginx配置文件 /etc/nginx/nginx.conf 因為它將被新的 nginx.conf 當我們稍後安裝最新版本的Nginx時,該文件。

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

您現有的服務器阻止文件(即虛擬主機文件)將保持不變。 現在運行以下命令從nginx.org信息庫安裝Nginx。

sudo apt install nginx

如果apt軟件包管理器詢問您是否要安裝/etc/nginx/nginx.conf文件的新版本,則可以回答“否”。

nginx 1.17.0 Ubuntu

安裝Nginx之後,測試Nginx配置。

sudo nginx -t

如果測試成功,請啟動Nginx。

sudo systemctl start nginx

在啟動時啟用自動啟動。

sudo systemctl enable nginx

要檢查Nginx的狀態,請運行

systemctl status nginx

輸出:

● nginx.service - nginx - high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-05-26 21:01:10 CST; 3s ago
     Docs: http://nginx.org/en/docs/
  Process: 16159 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 16160 (nginx)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─16160 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─16161 nginx: worker process

May 26 21:01:10 bionic.local.domain systemd[1]: Starting nginx - high performance web server...
May 26 21:01:10 bionic.local.domain systemd[1]: Started nginx - high performance web server.

要檢查Nginx版本,請使用以下命令:

nginx -v

輸出:

nginx version: nginx/1.17.0

您還可以通過以下方法查看更詳細的信息:

nginx -V

輸出:

Nginx Ubuntu 18.04與兼容

設置Nginx進程用戶

Nginx.org存儲庫集中的Nginx軟件包 nginx 作為Nginx進程用戶,可以從 /etc/nginx/nginx.conf 文件。 (如果您選擇安裝新版本的 /etc/nginx/nginx.conf 文件。)

user nginx;

但是,PHP-FPM進程的默認用戶和組是 www-data 從中可以看出 /etc/php/7.2/fpm/pool.d/www.conf 文件。

user = www-data
group = www-data

所以我們需要設定 www-data 作為Nginx進程的用戶 /etc/nginx/nginx.conf 文件。

sudo nano /etc/nginx/nginx.conf

更改

user nginx;

user www-data;

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

sudo systemctl reload nginx

包括服務器阻止文件

默認情況下,僅 /etc/nginx/conf.d/ 目錄將包括在內。 如果您還想使用服務器阻止文件 sites-enabled 目錄,然後確保將以下行添加到 http 的部分 nginx.conf 文件。

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

安裝Certbot Nginx插件

如果您以前是從Ubuntu存儲庫安裝Nginx的,那麼從nginx.org存儲庫安裝Nginx時,可能已刪除了python3-certbot-nginx軟件包。 我們需要重新安裝它,以便您的TLS證書可以像往常一樣自動更新。

sudo apt install python3-certbot-nginx

如何自動重啟Nginx

有時Nginx可能由於各種原因而崩潰。 如果您想讓Nginx在崩潰後自動重啟,那麼我們需要編輯Nginx服務單元。 首先,將原始Nginx服務單元複製到 /etc/systemd/system/ 目錄。

sudo cp /lib/systemd/system/nginx.service /etc/systemd/system/nginx.service

然後編輯服務單元。

sudo nano /etc/systemd/system/nginx.service

將以下行添加到 [service] 部分。

Restart=always
RestartSec=2

像這樣:

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
Restart=always
RestartSec=2

這會使Nginx在崩潰後每2秒嘗試重新啟動一次。 保存並關閉文件。 然後重新啟動Nginx。

sudo systemctl restart nginx

下一步

我希望本教程可以幫助您在Ubuntu 18.04和Ubuntu 19.04上安裝Nginx最新版本。 您可能還想在Ubuntu 18.04和19.04上安裝最新版本的MariaDB數據庫服務器。 與往常一樣,如果您發現此帖子有用,請訂閱我們的免費新聞簡報以獲取新的提示和技巧。

Sidebar