如何在Ubuntu20.04上将NginxWeb根目录移动到新位置

来自菜鸟教程
跳转至:导航、​搜索

介绍

在 Ubuntu 上,Nginx Web 服务器 将其文档存储在 /var/www/html 中,该文件通常与操作系统的其余部分一起位于根文件系统中。 但是,有时将文档根目录移动到另一个位置会很有帮助,例如单独安装的文件系统。 例如,如果您从同一个 Nginx 实例为多个网站提供服务,则将每个站点的文档根放在自己的卷上,这样您就可以根据特定站点或客户端的需求进行扩展。

在本指南中,您会将 Nginx 文档根目录移动到新位置。

先决条件

要完成本指南,您需要:

  • 一个 Ubuntu 20.04 服务器和一个具有 sudo 权限的非 root 用户。 您可以在我们的 Initial Server Setup with Ubuntu 20.04 指南中了解有关如何设置具有这些权限的用户的更多信息。
  • 按照 How To Install Nginx on Ubuntu 20.04 安装 Nginx。
  • 为您的服务器配置的 TLS/SSL 证书。 你有三个选择: 您可以按照如何在 Ubuntu 20.04 上使用 Let's Encrypt 保护 Nginx 来从 Let's Encrypt 获得免费证书。 您还可以按照如何在 Ubuntu 20.04 中为 Nginx 创建自签名 SSL 证书来生成和配置自签名证书。 您可以从其他提供商处购买并配置 Nginx 以使用它,方法是按照如何在 Ubuntu 20.04 中为 Nginx 创建自签名 SSL 证书的步骤 3 和 4。

我们将在本教程中使用域名 your_domain,但您应该将其替换为您自己的域名。

  • 文档根目录的新位置。 在本教程中,我们将使用 /mnt/volume-nyc3-01 目录作为我们的新位置。 如果您在 DigitalOcean 上使用块存储,本指南 将向您展示如何创建和附加卷。 但是,您的新文档根位置可根据您的需要进行配置。 如果要将文档根目录移动到不同的存储设备,则需要选择设备安装点下的位置。

第 1 步 — 将文件复制到新位置

在 Nginx 的全新安装中,文档根目录位于 /var/www/html。 但是,通过遵循先决条件指南,您创建了一个新的文档根目录 /var/www/your_domain/html。 您可能还有其他文档根目录。 在这一步中,我们将建立文档根目录的位置并将相关文件复制到新位置。

您可以使用 grep 搜索文档根目录的位置。 让我们在 /etc/nginx/sites-enabled 目录中搜索,以将我们的注意力限制在活动站点上。 -R 标志确保 grep 将打印带有 root 指令的行及其输出中的完整文件名:

grep -R "root" /etc/nginx/sites-enabled

如果您在新服务器上遵循先决条件教程,结果将如下所示:

Output/etc/nginx/sites-enabled/your_domain:           root /var/www/your_domain/html;
/etc/nginx/sites-enabled/default:               root /var/www/html;
/etc/nginx/sites-enabled/default:               # deny access to .htaccess files, if Apache's document root
/etc/nginx/sites-enabled/default:#              root /var/www/your_domain;

如果您有预先存在的设置,您的结果可能与此处显示的不同。 无论哪种情况,您都可以使用来自 grep 的反馈来确保您正在移动所需的文件并更新适当的配置文件。

现在您已确认文档根目录的位置,您可以使用 rsync 将文件复制到新位置。 使用 -a 标志保留权限和其他目录属性,而 -v 提供详细输出,以便您可以跟踪同步的进度:

注意: 确保目录后面没有斜杠,如果使用制表符补全,可能会添加斜杠。 当尾部有斜杠时,rsync 会将目录的内容转储到挂载点,而不是将其传输到包含 html 的目录中。


sudo rsync -av /var/www/your_domain/html /mnt/volume-nyc3-01

您将看到如下输出:

Outputsending incremental file list
created directory /mnt/volume-nyc3-01
html/
html/index.html

sent 318 bytes  received 39 bytes  714.00 bytes/sec
total size is 176  speedup is 0.49

有了我们的文件,让我们继续修改我们的 Nginx 配置以反映这些更改。

第 2 步 — 更新配置文件

Nginx 使用全局和特定于站点的配置文件。 有关配置文件层次结构的背景知识,请查看 “如何在虚拟专用服务器上配置 Nginx Web 服务器”。 我们将为your_domain项目修改服务器块文件:/etc/nginx/sites-enabled/your_domain

注意:记得用你的域名替换your_domain,记住你将修改在步骤1中运行grep命令时输出的服务器块文件.


首先在编辑器中打开 /etc/nginx/sites-enabled/your_domain

sudo nano /etc/nginx/sites-enabled/your_domain

找到以 root 开头的行并将其更新为新的根位置。 在我们的例子中,这将是 /mnt/volume-nyc3-01/html

/etc/nginx/sites-enabled/your_domain

server {

        root /mnt/volume-nyc3-01/html;
        index index.html index.htm index.nginx-debian.html;
        . . .
}
. . .

请留意您在步骤 1 中看到 grep 输出的原始文档根路径的任何其他位置,包括别名或重写。 您还需要更新这些以反映新的文档根位置。

完成所有必要的更改后,保存并关闭文件。

第三步——重启 Nginx

完成配置更改后,您可以重新启动 Nginx 并测试结果。

首先,确保语法正确:

sudo nginx -t

如果一切正常,它应该返回:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果测试失败,请追踪并解决问题。

测试通过后,重启 Nginx:

sudo systemctl restart nginx

服务器重新启动后,访问受影响的站点并确保它们按预期工作。 一旦您对一切都井井有条感到满意,请不要忘记删除数据的原始副本:

sudo rm -Rf /var/www/your_domain/html

您现在已成功将 Nginx 文档根目录移动到新位置。

结论

在本教程中,我们介绍了如何将 Nginx 文档根目录更改为新位置。 这可以帮助您进行基本的 Web 服务器管理,例如在单个服务器上有效地管理多个站点。 它还允许您利用网络块存储等替代存储设备,这有助于随着网站需求的变化而扩展网站。

如果您正在管理一个繁忙或不断增长的网站,您可能有兴趣学习 如何使用 HTTP/2 设置 Nginx,以利用其对内容的高传输速度。