如何在Ubuntu18.04上将ApacheWeb根目录移动到新位置
介绍
在 Ubuntu 上,Apache Web 服务器 将其文档存储在 /var/www/html 中,该文件通常与操作系统的其余部分一起位于根文件系统中。 但是,有时将文档根目录移动到另一个位置会很有帮助,例如单独安装的文件系统。 例如,如果您从同一个 Apache 实例为多个网站提供服务,则将每个站点的文档根放在其自己的卷上,这样您就可以根据特定站点或客户端的需求进行扩展。
在本指南中,您会将 Apache 文档根目录移动到新位置。
先决条件
要完成本指南,您需要:
- Ubuntu 18.04 服务器和具有 sudo 权限的非 root 用户。 您可以在我们的 Initial Server Setup with Ubuntu 18.04 指南中了解有关如何设置具有这些权限的用户的更多信息。
- 按照 How To Install the Apache Web Server on Ubuntu 18.04 安装 Apache。
- 按照 如何在 Ubuntu 18.04 上使用 Let's Encrypt 保护 Apache 为您的域配置 SSL。 我们将在本教程中使用域名 example.com,但您应该将其替换为您自己的域名。
- 文档根目录的新位置。 在本教程中,我们将使用
/mnt/volume-nyc3-01
目录作为我们的新位置。 如果您在 DigitalOcean 上使用块存储,本指南 将向您展示如何创建和附加卷。 但是,您的新文档根位置可根据您的需要进行配置。 如果要将文档根目录移动到不同的存储设备,则需要选择设备安装点下的位置。
第 1 步 — 将文件复制到新位置
在全新安装的 Apache 上,文档根目录位于 /var/www/html
。 但是,通过遵循先决条件指南,您创建了一个新的文档根目录 /var/www/example.com/html
。 您还可能在相应的 VirtualHost
指令中有其他文档根。 在这一步中,我们将建立文档根目录的位置并将相关文件复制到新位置。
您可以使用 grep
搜索文档根目录的位置。 让我们在 /etc/apache2/sites-enabled
目录中搜索,以将我们的注意力限制在活动站点上。 -R
标志确保 grep
将在其输出中打印 DocumentRoot
和完整文件名:
grep -R "DocumentRoot" /etc/apache2/sites-enabled
如果您在新服务器上遵循先决条件教程,结果将如下所示:
Output/etc/apache2/sites-enabled/example.com-le-ssl.conf: DocumentRoot /var/www/example.com/html /etc/apache2/sites-enabled/example.com.conf: DocumentRoot /var/www/example.com/html
如果您有预先存在的设置,您的结果可能与此处显示的不同。 无论哪种情况,您都可以使用来自 grep
的反馈来确保您正在移动所需的文件并更新适当的配置文件。
现在您已确认文档根目录的位置,您可以使用 rsync
将文件复制到新位置。 使用 -a
标志保留权限和其他目录属性,而 -v
提供详细输出,以便您可以跟踪同步的进度:
注意: 确保目录后面没有斜杠,如果使用制表符补全,可能会添加斜杠。 当尾部有斜杠时,rsync
会将目录的内容转储到挂载点,而不是将其传输到包含 html
的目录中。
sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01
您将看到如下输出:
Outputsending incremental file list html/ html/index.html sent 318 bytes received 39 bytes 714.00 bytes/sec total size is 176 speedup is 0.49
有了我们的文件,让我们继续修改我们的 Apache 配置以反映这些更改。
第 2 步 — 更新配置文件
Apache 同时使用全局和特定于站点的配置文件。 有关配置文件层次结构的背景信息,请查看 如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器。 我们将为 example.com 项目 修改 虚拟主机文件:/etc/apache2/sites-enabled/example.com.conf
和 /etc/apache2/sites-enabled/example.com-le-ssl.conf
,它们是在我们 为 example.com 配置 SSL 证书时创建的[ X174X]。
注意: 请记住,在您的情况下 example.com
将是 your_domain_name
,并且您将修改运行 [X166X 时输出的虚拟主机文件] 步骤 1 中的命令。
首先打开 /etc/apache2/sites-enabled/example.com.conf
:
sudo nano /etc/apache2/sites-enabled/example.com.conf
找到以 DocumentRoot
开头的行并将其更新为新的根位置。 在我们的例子中,这将是 /mnt/volume-nyc3-01/html
:
/etc/apache2/sites-enabled/example.com.conf
<VirtualHost *:80> ServerAdmin sammy@example.comn ServerName example.com ServerAlias www.example.com DocumentRoot /mnt/volume-nyc3-01/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =www.example.com [OR] RewriteCond %{SERVER_NAME} =example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
让我们还添加指令以确保服务器将遵循目录中的符号链接:
/etc/apache2/sites-enabled/example.com.conf
. . . <Directory /mnt/volume-nyc3-01/html> Options FollowSymLinks AllowOverride None Require all granted </Directory>
注意 grep
在步骤 1 中输出的 DocumentRoot
,包括别名或重写。 您还需要更新这些以反映新的文档根位置。
保存这些更改后,让我们将注意力转向 SSL 配置。 打开/etc/apache2/sites-enabled/example.com-le-ssl.conf
:
sudo nano /etc/apache2/sites-enabled/example.com-le-ssl.conf
修改 DocumentRoot
以反映新位置 /mnt/volume-nyc3-01/html
:
/etc/apache2/sites-enabled/example.com-le-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin sammy@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /mnt/volume-nyc3-01/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined . . . </VirtualHost> </IfModule>
您现在已经进行了必要的配置更改以反映文档根目录的新位置。
第 3 步 - 重新启动 Apache
完成配置更改后,您可以重新启动 Apache 并测试结果。
首先,确保 configtest
的语法正确:
sudo 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
如果你想禁止顶行,只需在 /etc/apache2/apache2.conf
的主(全局)Apache 配置文件中添加一个 ServerName
指令。 ServerName
可以是您服务器的域或 IP 地址。 但是,这只是一条消息,不会影响您网站的功能。 只要输出包含 Syntax OK
,就可以继续。
使用以下命令重新启动 Apache:
sudo systemctl reload apache2
服务器重新启动后,访问受影响的站点并确保它们按预期工作。 一旦您对一切都井井有条感到满意,请不要忘记删除数据的原始副本:
sudo rm -Rf /var/www/example.com/html
您现在已成功将 Apache 文档根目录移动到新位置。
结论
在本教程中,我们介绍了如何将 Apache 文档根目录更改为新位置。 这可以帮助您进行基本的 Web 服务器管理,例如在单个服务器上有效地托管多个站点。 它还允许您利用网络块存储等替代存储设备,这有助于随着网站需求的变化而扩展网站。
如果您正在管理一个繁忙或不断增长的网站,您可能有兴趣了解 如何对您的 Web 服务器 进行负载测试,以在生产中遇到性能瓶颈之前识别它们。 您还可以在此比较 五种改进生产 Web 应用程序服务器设置的方法 中了解有关改进生产体验的更多信息。