在Ubuntu 18.04上安装Nginx的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
介绍
Nginx 是世界上最流行的 Web 服务器之一,负责托管互联网上一些最大和最高流量的网站。在大多数情况下,它比 Apache 更节约资源,并且可以用作 Web 服务器或反向代理。
在本指南中,您将学习如何在 Ubuntu 18.04 服务器上安装 Nginx,以及重要的 Nginx 文件和目录。
先决条件
在开始本指南之前,您应该拥有一个具有 sudo 特权的常规非 root 用户,并在服务器上配置了基本防火墙。您可以按照我们的 Ubuntu 18.04 初始服务器设置指南来了解如何配置常规用户帐户。
当您有可用的帐户时,请以非 root 用户身份登录。
步骤 1 – 安装 Nginx
由于 Nginx 可在 Ubuntu 的默认存储库中找到,因此可以使用 apt
软件包管理系统从这些存储库安装它。
由于这可能是您在本会话中与 apt
软件包管理系统的首次交互,因此更新本地软件包索引,以便您可以访问最新的软件包列表。然后,您可以安装 nginx
:
sudo apt update
sudo apt install nginx
接受该过程后,apt
将在服务器上安装 Nginx 和任何必需的依赖项。
步骤 2 – 调整防火墙
在测试 Nginx 之前,需要调整防火墙软件以允许访问该服务。Nginx 在安装时会在 ufw
中注册自己作为一个服务,因此可以轻松地允许 Nginx 访问。
通过输入以下内容列出 ufw
知道如何使用的应用程序配置:
sudo ufw app list
您的输出应该是应用程序配置的列表:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
此列表显示了 Nginx 可用的三个配置文件:
- Nginx Full:此配置文件打开端口
80
(正常的未加密的 Web 流量)和端口443
(TLS/SSL 加密流量) - Nginx HTTP:此配置文件仅打开端口
80
(正常的未加密的 Web 流量) - Nginx HTTPS:此配置文件仅打开端口
443
(TLS/SSL 加密流量)
建议您启用最严格的配置文件,以允许您配置的流量。由于在本指南中尚未为服务器配置 SSL,因此只需要允许端口 80
上的流量。
您可以通过输入以下内容来启用此配置:
sudo ufw allow 'Nginx HTTP'
然后,验证更改:
sudo ufw status
您应该收到输出中允许的 HTTP 流量列表:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
现在,您已添加了适当的防火墙规则,可以检查您的 Web 服务器是否正在运行并能够正确提供内容。
步骤 3 – 检查您的 Web 服务器
在安装过程结束时,Ubuntu 18.04 启动了 Nginx。Web 服务器应该已经启动并运行。
使用 systemd
初始化系统来确保服务正在运行:
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 Fri 2021-10-01 21:36:15 UTC; 35s ago
Docs: man:nginx(8)
Main PID: 9039 (nginx)
Tasks: 2 (limit: 1151)
CGroup: /system.slice/nginx.service
├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
└─9041 nginx: worker process
此输出显示服务已成功启动。但是,测试的最佳方法是实际从 Nginx 请求页面。
您可以访问默认的 Nginx 登陆页面,确认软件是否正常运行,方法是导航到您服务器的 IP 地址。如果您不知道服务器的 IP 地址,可以通过几种不同的方式获取。
尝试在服务器的命令提示符中输入以下内容:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
您将收到几行。您可以尝试在 Web 浏览器中输入每个地址,以确认它们是否有效。
另一种方法是运行以下命令,该命令应该会生成您的公共 IP 地址,该地址是从互联网上的其他位置识别出来的:
curl -4 icanhazip.com
当您获得服务器的 IP 地址后,请在浏览器的地址栏中输入:
http://your_server_ip
您应该会收到默认的 Nginx 登陆页面:
!Nginx default page
此页面包含在 Nginx 中,用于验证服务器是否正常运行。
第四步 – 管理 Nginx 进程
现在你已经启动并运行了你的 Web 服务器,让我们来看一些基本的管理命令。
要停止你的 Web 服务器,请输入以下命令:
sudo systemctl stop nginx
要在停止状态下启动 Web 服务器,请输入以下命令:
sudo systemctl start nginx
要停止然后再次启动服务,请输入以下命令:
sudo systemctl restart nginx
如果你只是在进行配置更改,通常可以在不断开连接的情况下重新加载 Nginx 而不是重新启动它。要做到这一点,请输入以下命令:
sudo systemctl reload nginx
默认情况下,Nginx 被配置为在服务器启动时自动启动。如果这不是你想要的,你可以通过输入以下命令来禁用此行为:
sudo systemctl disable nginx
要重新启用服务以在启动时启动,可以输入以下命令:
sudo systemctl enable nginx
Nginx 现在应该在服务器重新启动时自动启动。
第五步 – 设置服务器块(推荐)
在使用 Nginx Web 服务器时,可以使用“服务器块”(类似于 Apache 中的虚拟主机)来封装配置细节,并从单个服务器上托管多个域。我们将设置一个名为 your_domain 的域,但你应该用你自己的域名替换它。要了解有关如何在 DigitalOcean 上设置域名的更多信息,请参阅我们的《DigitalOcean DNS 简介》。
在 Ubuntu 18.04 上,Nginx 默认启用了一个服务器块,配置为从 /var/www/html
目录中提供文档。虽然这对于单个站点效果很好,但如果你要托管多个站点,这可能会变得难以管理。让我们在 /var/www
中为我们的 your_domain 站点创建一个目录结构,将 /var/www/html
保留为默认目录,以便在客户端请求不匹配任何其他站点时提供服务。
按照以下方式创建 your_domain 目录,使用 -p
标志创建任何必要的父目录:
sudo mkdir -p /var/www/your_domain/html
接下来,使用 $USER
环境变量分配目录的所有权:
sudo chown -R $USER:$USER /var/www/your_domain/html
如果你没有修改 umask
值,你的 Web 根目录的权限应该是正确的,但你可以通过输入以下命令来确保:
sudo chmod -R 755 /var/www/your_domain
接下来,使用 nano
或你喜欢的编辑器创建一个示例 index.html
页面:
nano /var/www/your_domain/html/index.html
在里面,添加以下示例 HTML:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
完成后保存并关闭文件。如果你使用的是 nano
,你可以通过按 CTRL + X
然后 Y
和 ENTER
来退出。
为了让 Nginx 提供此内容,有必要创建一个带有正确指令的服务器块。而不是直接修改默认配置文件,我们在 /etc/nginx/sites-available/your_domain
创建一个新文件:
sudo nano /etc/nginx/sites-available/your_domain
添加以下配置块,它类似于默认配置,但针对你的新目录和域名进行了更新:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain.com www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
注意,我们已经将 root
配置更新为新目录,将 server_name
更新为域名。完成后保存并关闭文件。
接下来,通过从中创建一个链接到 sites-enabled
目录来启用文件,Nginx 在启动时会从该目录中读取:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
现在已启用两个服务器块,并配置为根据它们的 listen
和 server_name
指令响应请求(你可以在这里关于 Nginx 如何处理这些指令的信息):
your_domain
:将响应对your_domain
和www.your_domain
的请求。default
:将响应在端口80
上不匹配其他两个块的任何请求。
为了避免由于添加额外的服务器名可能导致的哈希桶内存问题,有必要调整 /etc/nginx/nginx.conf
文件中的单个值。打开文件:
sudo nano /etc/nginx/nginx.conf
找到 server_names_hash_bucket_size
指令,并删除 #
符号以取消注释该行:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
完成后保存并关闭文件。
接下来,测试确保你的 Nginx 文件中没有语法错误:
sudo nginx -t
如果没有任何问题,重新启动 Nginx 以启用你的更改:
sudo systemctl restart nginx
Nginx 现在应该正在提供你的域名。你可以通过导航到 http://your_domain
来测试,你应该会看到类似以下内容:
!Nginx first server block
第6步 – 熟悉重要的 Nginx 文件和目录
现在你已经知道如何管理 Nginx 服务本身,你应该花几分钟时间熟悉一下一些重要的目录和文件。
内容
/var/www/html
: 实际的网页内容,默认情况下只包括你之前看到的默认 Nginx 页面,它们存储在/var/www/html
目录中。可以通过修改 Nginx 配置文件来更改这一点。
服务器配置
/etc/nginx
: Nginx 配置目录。所有 Nginx 配置文件都存储在这里。/etc/nginx/nginx.conf
: 主要的 Nginx 配置文件。可以修改此文件来更改 Nginx 的全局配置。/etc/nginx/sites-available/
: 存储每个站点服务器块的目录。除非将其链接到sites-enabled
目录,否则 Nginx 不会使用此目录中找到的配置文件。通常,所有服务器块配置都在此目录中完成,然后通过链接到其他目录来启用。/etc/nginx/sites-enabled/
: 存储已启用的每个站点服务器块的目录。通常,这些是通过链接到sites-available
目录中找到的配置文件来创建的。/etc/nginx/snippets
: 此目录包含可以在 Nginx 配置的其他位置包含的配置片段。可以重构为片段的可重复配置段是很好的候选项。
服务器日志
/var/log/nginx/access.log
: 您的网页服务器的每个请求都记录在此日志文件中,除非 Nginx 配置为不这样做。/var/log/nginx/error.log
: 任何 Nginx 错误都将记录在此日志中。
结论
现在你已经安装了你的网页服务器,你有很多选择可以用来提供内容以及你想要使用的技术来创建更丰富的体验。
如果你想构建一个更完整的应用程序堆栈,请查看这篇文章,了解如何在 Ubuntu 18.04 上配置 LEMP 堆栈。