如何在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,则进行更改 bionic
至 disco
。
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之后,测试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进程用户
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数据库服务器。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻简报以获取新的提示和技巧。