文章目录

一个虚拟主机是一段 Apache 配置指令,它允许你在一台单独的服务器上运行一个或者多个指令。通过 虚拟主机,你可以指定网站根目录(托管网站文件),每个网站创建一个独立的安全策略,使用不同的 SSL 证书,等等。

本文描述如何在 Ubuntu 20.04 上 设置 Apache 虚拟主机。

一、前提

在继续下面的指南之前,确保你满足下面的必要条件:

  • 指向公网服务器 IP 的一个或者多个域名
  • 在你的 Ubuntu 系统上安装 Apache
  • 以 root 或者其他 sudo 用户身份登录

二、创建目录结构

文件根目录是域名所对应的网站文件存储的地方,以及响应网站请求的地方。你可以将网站根目录设置成任何你想要设置的位置,在这个例子中,我们将会使用下面的目录结构:

/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html

每一个托管的域名,它的域名根目录都被设置为/var/www/<domain_name>/public_html

开始为域名创建根目录:

sudo mkdir -p /var/www/domain1.com/public_html

我们将会在域名根目录下创建一个index.html文件,它将在你浏览器浏览域名的时候,展示出来: /var/www/domain1.com/public_html/index.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to domain1.com</title>
  </head>
  <body>
    <h1>Success! domain1.com home page!</h1>
  </body>
</html>

因为上面的命令是以一个 sudo 用户身份执行,新创建的文件和目录都是归属于 root。想要避免任何权限问题,修改域名根目录和该目录下的所有文件到 apache 用户(www-data):

sudo chown -R www-data: /var/www/domain1.com

三、创建虚拟主机

在 Ubuntu 系统上,Apache 虚拟主机配置文件在/etc/apache2/sites-available目录。它们可以通过创建指向/etc/apache2/sites-enabled目录的符号链接来启用虚拟主机配置,在 Apache 启动时, 将会读取这个目录。

打开你选择的文本编辑器,并且创建下面的虚拟主机配置文件: /etc/apache2/sites-available/domain1.com.conf

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    ServerAdmin webmaster@domain1.com
    DocumentRoot /var/www/domain1.com/public_html

    <Directory /var/www/domain1.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/domain1.com-error.log
    CustomLog ${APACHE_LOG_DIR}/domain1.com-access.log combined
</VirtualHost>
  • ServerName: 虚拟主机匹配的域名。这可能是你的域名。
  • ServerAlias: 匹配这个虚拟主机的其他域名或者子域名,例如www子域名。
  • DocumentRoot: Apache 网站根目录
  • Options: 指令控制指定目录的服务器特性
    • -Indexes: 防止目录列表
    • FollowSymLinks: 当启用该选项时,Apache 将会允许访问符号链接文件
  • AllowOverride: 指定.htaccess文件中的哪个指令可以覆盖配置文件中的指令。
  • ErrorLog, CustomLog:指定日志文件的位置。

你可以按照自己的喜好来命名配置文件的名称,但是最佳实践就是将域名的名字作为虚拟主机配置文件的名字。

想要启用新的虚拟主机文件,使用a2ensite帮助脚本来创建虚拟主机文件到sites-enabled目录的符号链接:

sudo a2ensite domain1.com

另外一个选项就是手动创建一个符号链接,像下面这样:

sudo ln -s /etc/apache2/sites-available/domain1.com.conf /etc/apache2/sites-enabled/

一旦完成。测试配置文件是否有任何语法错误:

sudo apachectl configtest

如果没有错误,你将看到下面的输出:

Syntax OK

重启 Apache 服务器,使修改生效:

sudo systemctl restart apache2

最后,为了验证所有事情都像预期一样顺利,在你的浏览器中打开http://domain1.com,你可以看到index.html页面。

四、总结

你已经学会了如何在一个 Ubuntu 服务器上创建一个 apache 虚拟主机配置 来托管多个域名。

重复上面的步骤,可以为所有域名创建其他的虚拟主机。




如果你有任何疑问,请通过以下方式联系我们:

微信:

微信群: 加上面的微信,备注微信群

QQ: 3217680847

QQ 群: 82695646 雪梦科技交流群

原文 :https://linuxize.com/post/how-to-set-up-apache-virtual-hosts-on-ubuntu-20-04/

    版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。知识共享许可协议

相关推荐