如何在Ubuntu16.04上将ApacheWeb根目录移动到新位置
介绍
在 Ubuntu 上,默认情况下,Apache2 Web 服务器将其文档存储在 /var/www/html
中,该文件通常与操作系统的其余部分一起位于根文件系统上。 但是,有时将文档根目录移动到另一个位置会很有帮助,例如单独安装的文件系统。 例如,如果您从同一个 Apache 实例为多个网站提供服务,则将每个网站的文档根放在自己的卷上,这样您就可以根据特定站点或客户端的需求进行扩展。
在本指南中,我们将向您展示如何将 Apache 文档根目录移动到新位置。
先决条件
要完成本指南,您需要:
- 具有非 root 用户且具有 sudo 权限的 Ubuntu 16.04 服务器。 您可以在我们的 Initial Server Setup with Ubuntu 16.04 指南中了解有关如何设置具有这些权限的用户的更多信息。
- 一个 Apache2 网络服务器:如果你还没有设置一个,深入文章的 Apache 部分,如何在 Ubuntu 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈16.04,可以指导你。
- 文档根目录的新位置:新的文档根目录位置完全可以根据您的需要进行配置。 如果要将文档根目录移动到不同的存储设备,则需要选择设备安装点下的位置。
在本例中,我们将使用 /mnt/volume-nyc1-01
目录。 如果您在 DigitalOcean 上使用块存储,本指南 将向您展示如何在继续本教程之前安装驱动器。
第 1 步 — 将文件复制到新位置
在全新安装的 Apache 上,文档根目录位于 /var/www/html
。 但是,如果您使用的是现有服务器,则可能会有明显不同的设置,包括相应 VirtualHost 指令中的多个文档根。
您可以使用 grep
搜索其他文档根目录的位置。 我们将在 /etc/apache2/sites-enabled
目录中进行搜索,以将我们的注意力限制在活动站点上。 -R
标志确保 grep
将在其输出中打印 DocumentRoot 和文件名:
grep -R "DocumentRoot" /etc/apache2/sites-enabled
结果将类似于下面的输出,尽管在现有安装中结果的名称和数量可能会有所不同:
Outputsites-enabled/000-default.conf DocumentRoot /var/www/html
使用来自 grep
的反馈来确保您正在移动要移动的文件并更新其相应的配置文件。
现在我们已经确认了文档根目录的位置,我们将使用 rsync
将文件复制到新位置。 使用 -a
标志保留权限和其他目录属性,而 -v
提供详细输出,以便您可以跟踪进度。
注意: 确保目录后面没有斜杠,如果使用制表符补全,可能会添加斜杠。 当有斜杠时,rsync
会将目录的内容转储到挂载点,而不是将其传输到包含 html
的目录中:
sudo rsync -av /var/www/html /mnt/volume-nyc1-01
现在我们准备更新配置。
第 2 步 — 更新配置文件
Apache2 同时使用全局和站点特定的配置文件。 有关配置文件层次结构的背景信息,请查看 如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器。
如果您正在使用现有安装,您应该使用 grep
命令修改之前找到的虚拟主机文件。 对于我们的示例,我们将查看默认情况下随 Apache 提供的两个虚拟主机文件,000-default.conf
和 default-ssl.conf
。
我们将从编辑 000-default.conf
文件开始:
sudo nano /etc/apache2/sites-enabled/000-default.conf
接下来,我们将找到以 DocumentRoot
开头的行并将其更新为新位置。
注意:您应该寻找原始路径出现的其他位置,并将其更改为新位置。 使用默认安装,您需要更改 DocumentRoot 和 Directory
块。 在现有安装中,您可能会发现别名和重写等内容也需要更新。 无论您在 grep
的输出中看到原始文档根路径的哪个位置,都需要进行调查。
/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /mnt/volume-nyc1-01/html <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /mnt/volume-nyc1-01/html/> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory>
保存这些更改后,我们将注意力转向 SSL 配置。 在全新安装中,尚未配置 SSL,但如果您不记得需要进行更改,您可能需要更新 ssl-default.conf
以避免稍后进行一些故障排除。
sudo nano /etc/apache2/sites-available/ssl-default.conf
/etc/apache2/sites-available/ssl-default.conf
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /mnt/volume-nyc1-01 . . .
注意: 如果 SSL 未启用,则 ssl-default.conf
文件仅位于 /etc/apache2/sites-available.
如果使用 a2ensite
启用 SSL,则从创建符号链接sites-available
到 /etc/apache2/sites-enabled
中的文件。 在这种情况下,可以从任一目录编辑文件。
第 3 步 - 重新启动 Apache
完成配置更改后,您可以确保 configtest
的语法正确:
sudo apachectl configtest
您 将 通过全新安装从 apachectl configtest
获得反馈:
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK
只要得到Syntax OK
,重启web服务器。 否则,追踪并修复它报告的问题。
使用以下命令重新启动 Apache:
sudo systemctl reload apache2
服务器重新启动后,访问受影响的站点并确保它们按预期工作。 一旦你觉得一切都井井有条,不要忘记删除数据的原始副本。
结论
在本教程中,我们介绍了如何将 Apache 文档根目录更改为新位置。 这可以帮助您进行基本的 Web 服务器管理,例如在单个服务器上有效地托管多个站点。 它还允许您利用网络块存储等替代存储设备,这是随着网站需求的变化而扩展网站的重要一步。
如果您正在管理一个繁忙或不断增长的网站,您可能有兴趣了解 如何对您的 Web 服务器 进行负载测试,以在生产中遇到性能瓶颈之前识别它们。 您还可以在此比较 五种改进生产 Web 应用程序服务器设置的方法 中了解有关改进生产体验的更多信息。