如何在Nbuntu 18.04上将Nginx Web Root移动到新位置

在Ubuntu上,默认情况下,Nginx Web服务器将其文档存储在`/ var / www / html`中,该文件通常与操作系统的其余部分位于根文件系统上。但有时,将文档根移动到另一个位置(例如单独安装的文件系统)会很有帮助。 在本指南中,我们将向您展示如何将Nginx文档根目录移动到新位置。

本教程的先前版本由Melissa Anderson编写

介绍

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

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

先决条件

要完成本指南,您需要:

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

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

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

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

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

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

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

/etc/nginx/sites-enabled/example.com:           root /var/www/example.com/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/example.com;

如果您有预先存在的设置,则结果可能与此处显示的不同。 在任何一种情况下,您都可以使用grep的反馈来确保移动所需的文件并更新相应的配置文件。

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

注意:确保目录上没有尾部斜杠,如果使用制表符完成,则可以添加斜杠。 当有斜杠时, rsync会将目录的内容转储到挂载点,而不是将其转移到包含的html目录中。

sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01

您将看到如下输出:

sending 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服务器” 我们将修改example.com项目服务器块文件/etc/nginx/sites-enabled/ example.com

注意:请记住,在您的情况下, example.com将是your_domain_name ,并且您将修改在第1步中运行grep命令时输出的服务器块文件。

首先在编辑器中打开/etc/nginx/sites-enabled/ example.com

sudo nano /etc/nginx/sites-enabled/example.com

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

/etc/nginx/sites-enabled/example.com
server {

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

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

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

第3步 - 重新启动Nginx

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

首先,确保语法正确:

sudo nginx -t

如果一切顺利,它应该返回:

nginx: 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/example.com/html

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

结论

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

如果您正在管理繁忙或不断增长的网站,您可能有兴趣学习如何使用HTTP / 2设置Nginx以利用其高内容传输速度。 您还可以在这五种方法的比较中了解有关改进生产体验的更多信息, 以改进您的生产Web应用程序服务器设置