如何将一个Apache Web根目录移到新位置上的Ubuntu 16.04

在本指南中,我们将向你展示如何在Apache文档根目录移动到新位置,它允许你独立扩展为不同的网站存储。

介绍

在Ubuntu上,在默认情况下,Apache2的Web服务器中存储其文件/var/www/html ,通常位于根文件系统与操作系统的其余部分。 有时,尽管将文档根目录移动到其他位置(如单独安装的文件系统)很有帮助。 例如,如果您从同一个Apache实例提供多个网站,将每个人的文档根放在自己的卷上,您可以根据特定网站或客户端的需求进行扩展。

在本指南中,我们将向您展示如何将Apache文档根目录移动到新位置。

先决条件

要完成本指南,您需要:

  • 一个Ubuntu 16.04服务器与非root用户sudo权限 您可以了解更多有关如何设置这些权限的用户在我们与Ubuntu 16.04的初始服务器安装指南。

  • 一个Apache2的Web服务器 :如果您尚未设置一个,深入文章的Apache的部分, 如何安装Linux,Apache,MySQL和PHP在Ubuntu 16.04(LAMP) ,可以指导你。

  • 为您的文档根目录的新位置 :新文档根位置是完全可配置根据您的需求。 如果将文档根目录移动到其他存储设备,则需要在设备的装载点下选择一个位置。

在这个例子中,我们将使用/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

结果将类似于下面的输出,尽管结果的名称和数量在现有安装中可能不同:

sites-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.confdefault-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.如果启用了SSL a2ensite ,从文件创建一个符号链接sites-available/etc/apache2/sites-enabled 在这种情况下,可以从任一目录编辑文件。

第3步 - 重新启动Apache

一旦你完成了配置更改,可以确保语法是正确与configtest

sudo apachectl configtest

得到的反馈apachectl configtest与全新安装:

AH00558: 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应用程序服务器设置