如何在Ubuntu 18.04上将Apache Web Root移动到新位置

介绍

在Ubuntu上,Apache Web服务器将其文档存储在/var/www/html中,该文档通常位于具有其余操作系统的根文件系统上。但有时,将文档根移动到另一个位置(例如单独安装的文件系统)会很有帮助。例如,如果您从同一个Apache实例提供多个网站,则将每个网站的文档根目录放在其自己的卷上,这样您就可以根据特定网站或客户端的需求进行扩展。

在本指南中,您将Apache文档根目录移动到新位置。

准备

要完成本指南,您需要:

  • 一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 安装Apache
  • 为您的域配置了SSL 。如果你有域名,保护你网站的最简单方法是使用腾讯云SSL证书服务,它提供免费的可信证书。腾讯云SSL证书安装操作指南进行设置。如果你没有域名,建议您先去这里注册一个域名,如果你只是使用此配置进行测试或个人使用,则可以使用自签名证书,不需要购买域名。自签名证书提供了相同类型的加密,但没有域名验证公告。关于自签名证书,你可以参考为Apache创建自签名SSL证书如何为Nginx创建自签名SSL证书这两篇文章。我们将在本教程中使用域名example.com,但您应将其替换为您自己的域名。
  • 文档根目录的新位置。在本教程中,我们将使用该/mnt/volume-nyc3-01目录作为新位置。如果要将文档根目录移动到其他存储设备,则需要在设备的挂载点下选择一个位置。

第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

如果您在新服务器上遵循先决条件教程,结果将如下所示:

/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

您将看到如下输出:

sending 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使用全局和站点特定的配置文件。我们将修改[虚拟主机的文件对我们example.com的项目:/etc/apache2/sites-enabled/example.com.conf/etc/apache2/sites-enabled/example.com-le-ssl.conf,当我们为其example.com创建了配置SSL证书。

注意:请记住,在你的情况example.com将是your_domain_name,那你将被修改,当您运行的是被输出的虚拟主机文件grep在步骤1中的命令。

首先打开:/etc/apache2/sites-enabled/example.com.conf

sudo nano /etc/apache2/sites-enabled/example.com.conf

找到以DocumentRoot开头的行并使用新的根位置进行更新。在我们的例子中,这将是/mnt/volume-nyc3-01/html

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

我们还添加指令以确保服务器将遵循目录中的符号链接:

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

请留意步骤1 DocumentRootgrep输出的内容,包括别名或重写内容。您还需要更新这些内容以反映新文档的根位置。

保存这些更改后,让我们将注意力转向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

<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

在全新安装中,您将获得如下所示的反馈:

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

如果要取消顶行,只需在/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服务器管理,例如在单个服务器上有效托管多个站点。它还允许您利用网络块存储等替代存储设备,这有助于在需求变化时扩展网站。

更多Ubuntu教程请前往腾讯云+社区学习更多知识。

参考文献:《How To Move an Apache Web Root to a New Location on Ubuntu 18.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

对于ELK还不太熟悉的同学可以参考我前面的两篇文章ElasticSearch + Logstash + Kibana 搭建笔记、Log stash学习笔记(一)...

1331
来自专栏coding

win10下配置linux子系统

1887
来自专栏安恒网络空间安全讲武堂

打个3dsctf,电脑机都开不了?

3DSCTF Malware 3道题 writeup tags: - Reverse - malware ---- 这个ctf有个Malware的题型,...

2559
来自专栏Brian

Mac 配置终端环境

Mac 配置终端开发环境 ---- 概述 作为一个服务端开发人员基本上都是通过终端和服务器打交道,所以一个好个开发人员那么他的终端配置也是高效的。“工欲善事必先...

44211
来自专栏魏艾斯博客www.vpsss.net

如何创建.htaccess 文件

关于.htaccess 文件,一般用于虚拟主机中,使用 VPS 建站的可以忽略了。对于使用虚拟主机建站的朋友来说.htaccess 文件可以用作伪静态化设置和 ...

4568
来自专栏网络

代理工具shadowProxy之神出鬼没的切换IP地址

前言 在渗透测试过程中,往往会遇到特别“小气”的目标,稍微碰一下就封IP。这种情况下,我们很自然的想到通过网上大量的免费代理进行IP隐匿。 那么问题来了,难道拿...

3578
来自专栏运维小白

Linux基础(day42)

11.14/11.15 Apache和PHP结合 配置httpd支持php目录概要 httpd主配置文件/usr/local/apache2.4/conf/ht...

2257
来自专栏我叫刘半仙

原荐记一次服务器被植入挖矿木马cpu飙升200%解决过程

线上服务器用的是某讯云的,欢快的完美运行着Tomcat,MySQL,MongoDB,ActiveMQ等程序。突然一则噩耗从前线传来:网站不能访问了。 此项目是我...

4684
来自专栏CaiRui

LAMP=Linux+Apache+Mysql+Php

一、当前互联网主流web服务 静态服务: 1.apache---中小型静态web服务的主流,web服务器中的老大哥 2.nginx---大型新型网络静态web服...

29110
来自专栏zhisheng

ELK 实时日志分析平台环境搭建

简单介绍 ELK(ElasticSearch, Logstash, Kibana),三者组合在一起搭建实时的日志分析平台,目前好多公司都是这套! Elastic...

31011

扫码关注云+社区

领取腾讯云代金券