如何在 Debian 8 上将 Apache 网站根目录移动到新位置

介绍

在 Debian 8 上,Apache2 网页服务器默认地将其文件存储在 `/var/www/html 中. 此目录与其他操作系统一起位于 root 文件系统上. 您可能希望将文档 root 移动到另一个位置,例如单独安装的文件系统。

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

前提条件

要完成本指南,您将需要:

  • 拥有sudo特权的非根用户的 Debian 8 服务器. 您可以了解更多关于如何设置具有这些特权的用户在我们的 Debian 8 初始服务器设置指南中。
  • Apache2 网页服务器:如果您还没有设置一个,详细文章中的 Apache 部分 如何在 Debian 8 上安装 Linux, Apache, MySQL, PHP (LAMP) 堆栈可以指导您。
  • 您的文档根的新位置:新文档根位置完全可根据您的需求配置。 如果您正在将文档根移到不同的存储设备,您将希望在设备的安装点下选择一个位置。 在本教程中,我们将继续使用目录 `

步骤 1 – 将文件复制到新位置

在新的安裝中,文件根位於 /var/www/html. 如果您正在使用現有伺服器,但是,您可能會有一個顯著不同的設定,包括多個文件根在相應的 VirtualHost 指令。

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

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

-R 旗帜确保 grep 在其输出中打印 DocumentRoot 和文件名。

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

1[secondary_label Output]
2sites-enabled/000-default.conf DocumentRoot /var/www/html

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

现在你已经确认了你的文档根的位置,将文件复制到新的位置,使用rsync

首先,安装rsync

1sudo apt-get install rsync

然後執行這個命令來複製檔案:

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

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

<$>[注] 注: 请确保目录上没有后续缩减,如果您使用 tab completion 将其添加到目录中。

文件现在处于新位置,但Apache仍然在寻找旧位置,所以让我们修复一下。

步骤 2 – 更新配置文件

Apache2 使用全球和网站特定的配置文件. 有关配置文件等级的背景,请参阅 如何在 Ubuntu 或 Debian VPS 上配置 Apache Web Server

如果你正在使用一个现有安装,你应该通过grep命令修改你以前发现的虚拟主机文件. 对于这个例子,我们将看看与Apache默认运送的两个虚拟主机文件,即000-default.confdefault-ssl.conf

开始编辑 000-default.conf 文件:

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

尋找以「DocumentRoot」開始的行,並以新的位置更新它:

1[label /etc/apache2/sites-enabled/000-default.conf]
2<VirtualHost *:80>
3 ...
4        ServerAdmin webmaster@localhost
5        DocumentRoot /mnt/volume-nyc1-01/html

接下来,寻找一个目录块,该块也指向原始路径,并更新它以指向新路径。

在新安装时,默认网站中没有目录条目,请将以下代码添加到配置文件中,以便Apache可以从新位置服务文件:

 1[label /etc/apache2/sites-enabled/000-default.conf]
 2 ...
 3     ServerAdmin webmaster@localhost
 4     DocumentRoot /mnt/volume-nyc1-01/html
 5
 6     <Directory />
 7         Options FollowSymLinks
 8         AllowOverride None
 9     </Directory>
10     <Directory /mnt/volume-nyc1-01/html/>
11         Options Indexes FollowSymLinks MultiViews
12         AllowOverride None
13         Require all granted
14    </Directory>
15 ...

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

<$>[注] 注: 您应该寻找原始路径出现的其他地方,并将其更改到新的位置,除了DocumentRoot目录设置外,您可能还会发现需要更新的副名称和重写等东西。

完成所需的更改后,保存文件。

接下来,我们将关注SSL配置。在新安装时,SSL将不会被配置,但您可能需要更新ssl-default.conf文件,以避免稍后出现一些问题,如果您不记得需要进行更改。

<$>[注] 注: 如果 SSL 未启用,则 ssl-default.conf 文件仅位于 /etc/apache2/sites-available. 如果您使用 sudo a2ensite ssl-default 启用 SSL,则将从 sites-available 中的文件创建一个 symlink 到 /etc/apache2/sites-enabled

编辑文件:

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

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

 1[label  /etc/apache2/sites-available/ssl-default.conf]
 2 ...
 3<IfModule mod_ssl.c>
 4  <VirtualHost _default_:443>
 5     ServerAdmin webmaster@localhost
 6     DocumentRoot /mnt/volume-nyc1-01
 7
 8     <Directory />
 9         Options FollowSymLinks
10         AllowOverride None
11     </Directory>
12     <Directory /mnt/volume-nyc1-01/html/>
13         Options Indexes FollowSymLinks MultiViews
14         AllowOverride None
15         Require all granted
16    </Directory>
17 ...

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

1sudo apachectl configtest

你会看到输出如下:

1[secondary_label Output]
2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, 
3using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
4Syntax OK

在默认安装中,您将看到前一条消息,您可以安全地忽略它。只要您看到Syntax OK,请重新启动 Web 服务器。

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

1sudo systemctl reload apache2

当服务器重新启动时,请访问受影响的网站并确保它们按预期工作. 一旦您感到舒适,一切顺序,请不要忘记删除数据的原始副本。

结论

在本教程中,您将Apache文档根更改到一个新的位置,这可以帮助您进行基本的Web服务器管理,例如在单一服务器上有效托管多个网站。

如果您正在管理繁忙或日益增长的网站,您可能对学习 如何加载测试您的 Web 服务器来识别性能瓶颈,然后在生产中遇到它们。

Published At
Categories with 技术
comments powered by Disqus