虚拟主机是 Apache 配置指令,允许您在一台服务器上运行多个网站。使用虚拟主机,您可以指定站点文档根目录(包含网站文件的目录)、为每个站点创建单独的安全策略、使用不同的 SSL 证书等等。

先决条件

在继续学习教程之前,请确保您已满足以下要求:

  • 指向公共服务器 IP 的一个或多个域名。
  • 在 Ubuntu 系统上安装的 Apache。
  • 您以 root 或用户状态登录,具有 sudo 权限。

创建目录结构

文档根目录是存储和提供域名的网站文件以响应请求的目录。您可以将文档根设置为任何要的位置,在此示例中,我们将使用以下目录结构:

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

复制

服务器上托管的每个域都将其文档根设置为 。/var/www//public_html

首先为域创建根目录:

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

 

我们还将在域文档根目录中创建一个文件,当您在浏览器中访问域时将显示该文件:index.html

/var/www/domain1.com/public_html/index.html



  
    
    Welcome to domain1.com
  
  
    

Success! domain1.com home page!

复制

Since the commands above are executed as a sudo user, the newly created files and directories are owned by root. To avoid any permission issues change the ownership of the domain document root directory and all files within the directory to the apache user () :www-data

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

创建虚拟主机

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

打开您选择的文本编辑器并创建以下基本虚拟主机配置文件:

/etc/apache2/站点可用/域 1.com.conf


    ServerName domain1.com
    ServerAlias www.domain1.com
    ServerAdmin webmaster@domain1.com
    DocumentRoot /var/www/domain1.com/public_html

    
        Options -Indexes +FollowSymLinks
        AllowOverride All
    

    ErrorLog ${APACHE_LOG_DIR}/domain1.com-error.log
    CustomLog ${APACHE_LOG_DIR}/domain1.com-access.log combined

复制

  • ServerName:此虚拟主机配置应匹配地域。这应该是您的域名。
  • ServerAlias:应匹配此虚拟主机(如子域)的所有其他域或子域。www
  • DocumentRoot:Apache 将从中为域文件服务的目录。
  • Options:此指令控制特定目录中可用的服务器功能。-Indexes:防止目录列表。FollowSymLinks:启用此选项后,Apache 将遵循符号链接。
  • AllowOverride:指定文件中声明的指令可以覆盖配置指令。.htaccess
  • ErrorLog,:指定日志文件的位置。CustomLog

您可以设置配置文件的名称,但最佳做法是使用域名作为虚拟主机配置文件的名称。

若要启用新的虚拟主机文件,请使用创建从虚拟主机文件到目录的符号链接的帮助器脚本:a2ensitesites-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.comindex.html

get-188get-188