如何将ApacheWeb根目录移动到Debian8上的新位置

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

介绍

在 Debian 8 上,Apache2 Web 服务器默认将其文档存储在 /var/www/html 中。 该目录与操作系统的其余部分位于根文件系统上。 您可能希望将文档根目录移动到另一个位置,例如单独安装的文件系统。 例如,如果您从同一个 Apache 实例为多个网站提供服务,则将每个站点的文档根放在其自己的卷上,这样您就可以根据特定站点或客户端的需求进行扩展。

在本指南中,您将通过移动文件和更改 Apache 的配置文件将 Apache 文档根目录移动到新位置。

先决条件

要完成本指南,您需要:

  • 具有 sudo 权限的非 root 用户的 Debian 8 服务器。 您可以在我们的 Initial Server Setup with Debian 8 指南中了解有关如何设置具有这些权限的用户的更多信息。

  • 一个 Apache2 网络服务器:如果您还没有设置一个,深入文章的 Apache 部分,如何在 Debian 8 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈,可以指导你。

  • 文档根目录的新位置:新的文档根目录位置完全可以根据您的需要进行配置。 如果要将文档根目录移动到不同的存储设备,则需要选择设备安装点下的位置。

    在本教程中,我们将使用目录 /mnt/volume-nyc1-01,它指向附加到服务器的块存储卷。 如果您想使用块存储来保存您的网页,请在继续之前完成教程 如何在 DigitalOcean 上使用块存储来安装您的驱动器。

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

在全新安装的 Apache 上,文档根目录位于 /var/www/html。 但是,如果您使用的是现有服务器,则可能会有明显不同的设置,包括相应 VirtualHost 指令中的多个文档根。

您可以使用 grep 搜索其他文档根目录的位置。 在 /etc/apache2/sites-enabled 目录中搜索,使用以下命令将您的焦点限制在活动站点上:

grep -R "DocumentRoot" /etc/apache2/sites-enabled

-R 标志确保 grep 将在其输出中打印 DocumentRoot 和文件名。

结果将如下所示,尽管在现有安装中结果的名称和数量可能会有所不同:

Outputsites-enabled/000-default.conf   DocumentRoot /var/www/html

使用来自 grep 的反馈来确保您正在移动要移动的文件并更新其相应的配置文件。

现在您已确认文档根目录的位置,使用 rsync 将文件复制到新位置。

首先,安装rsync

sudo apt-get install rsync

然后执行此命令以复制文件:

sudo rsync -av /var/www/html /mnt/volume-nyc1-01

使用 -a 标志保留权限和其他目录属性,而 -v 提供详细输出,以便您可以跟踪进度。 在教程 如何使用 Rsync 同步 VPS 上的本地和远程目录中了解有关使用 rsync 的更多信息。

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


这些文件现在位于新位置,但 Apache 仍在查看旧位置,所以让我们修复它。

第 2 步 — 更新配置文件

Apache2 同时使用全局和站点特定的配置文件。 有关配置文件层次结构的背景信息,请查看 如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器。

如果您正在使用现有安装,您应该使用 grep 命令修改之前找到的虚拟主机文件。 对于这个示例,我们将查看默认情况下随 Apache 提供的两个虚拟主机文件,000-default.confdefault-ssl.conf

首先编辑 000-default.conf 文件:

sudo nano /etc/apache2/sites-enabled/000-default.conf

找到以 DocumentRoot 开头的行并将其更新为新位置:

/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
 ...
        ServerAdmin webmaster@localhost
        DocumentRoot /mnt/volume-nyc1-01/html

接下来,查找也指向原始路径的 Directory 块,并将其更新为指向新路径。

在全新安装中,默认站点中没有 Directory 条目。 将以下代码添加到您的配置文件中,以便 Apache 可以从您的新位置提供文件:

/etc/apache2/sites-enabled/000-default.conf

 ...
     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>
 ...

第一个 Directory 块设置一些限制性的默认权限,第二个块配置 /mnt/volume-nyc1-01/html/ 中新 Web 根目录的选项

注意:您应该寻找原始路径出现的其他位置,并将其更改为新位置。 除了 DocumentRootDirectory 设置之外,您可能还会发现别名和重写等需要更新的内容。 无论您在 grep 的输出中看到原始文档根路径的何处,都需要更新路径以反映新位置。


进行必要的更改后,保存文件。

接下来,我们将注意力转向 SSL 配置。 在全新安装中,尚未配置 SSL,但如果您不记得需要进行更改,您可能需要更新 ssl-default.conf 文件以避免以后出现一些问题。

注意: 如果 SSL 未启用,则 ssl-default.conf 文件仅位于 /etc/apache2/sites-available. 如果使用 sudo a2ensite ssl-default 启用 SSL,则从创建符号链接sites-available/etc/apache2/sites-enabled 中的文件。 在这种情况下,您可以从任一目录编辑文件。


编辑文件:

sudo nano /etc/apache2/sites-available/ssl-default.conf

然后通过更改 DocumentRoot 并确保 Directory 规则配置正确,进行您之前所做的相同更改:

/etc/apache2/sites-available/ssl-default.conf

 ...
<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
     ServerAdmin webmaster@localhost
     DocumentRoot /mnt/volume-nyc1-01

     <Directory />
         Options FollowSymLinks
         AllowOverride None
     </Directory>
     <Directory /mnt/volume-nyc1-01/html/>
         Options Indexes FollowSymLinks MultiViews
         AllowOverride None
         Require all granted
    </Directory>
 ...

完成配置更改后,请使用以下命令确保语法正确:

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

在默认安装中,您将看到前面的消息,您可以放心地忽略它。 只要看到Syntax OK,重启web服务器。 否则,追踪并修复它报告的问题。

使用以下命令重新启动 Apache:

sudo systemctl reload apache2

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

结论

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

如果您正在管理一个繁忙或不断增长的网站,您可能有兴趣了解 如何对您的 Web 服务器 进行负载测试,以在生产中遇到性能瓶颈之前识别它们。 您还可以在此比较 五种改进生产 Web 应用程序服务器设置的方法 中了解有关改进生产体验的更多信息。