在本教程中,我们将提供有关如何在 Ubuntu 18.04 上设置 Apache 虚拟主机的分步说明。
Apache 虚拟主机允许您在一台计算机上运行多个网站。使用虚拟主机,您可以指定站点文档根目录(包含网站文件的目录)、为每个站点创建单独的安全策略、使用不同的 SSL 证书等等。
尽管本教程是针对 Ubuntu 18.04 Bionic Beaver 编写的,但相同的步骤也适用于 Ubuntu 16.04 Xenial Xerus。
先决条件#
在继续本教程之前,请确保您已满足以下先决条件:
您有一个指向您的公共服务器 IP 的域名。我们将使用example.com
.
您已经通过以下方式安装了 Apache这些说明
.
您登录的身份为具有 sudo 权限的用户
.
创建目录结构#
文档根目录是存储和响应请求而提供域名网站文件的目录。您可以将文档根目录设置为您想要的任何位置,在本指南中我们将使用以下目录结构:
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
基本上,我们将为要在服务器上托管的每个域创建一个单独的目录/var/www
目录。在每个目录中,我们将创建一个public_html
将存储域网站文件的目录。
开始于创建根目录 为了example.com
domain:
sudo mkdir -p /var/www/example.com/public_html
出于测试目的还创建一个index.html
域文档根目录中的文件。
打开编辑器并创建演示文件:
/var/www/example.com/public_html/index.html
<!DOCTYPE html>
< html lang = "en" dir = "ltr" >
< head >
< meta charset = "utf-8" >
< title > Welcome to example.com</ title >
</ head >
< body >
< h1 > Success! example.com home page!</ h1 >
</ body >
</ html >
在本指南中,我们以 sudo 用户身份运行命令,新创建的文件和目录由 root 用户拥有。
为了避免任何权限问题,我们可以改变所有权 域文档根目录的 apache 用户(www-data
) :
sudo chown -R www-data: /var/www/example.com
创建虚拟主机#
默认情况下,在 Ubuntu 系统上,Apache 虚拟主机配置文件存储在/etc/apache2/sites-available
目录,可以通过创建指向该目录的符号链接来启用/etc/apache2/sites-enabled
目录。
打开您选择的编辑器并创建以下基本虚拟主机配置文件:
/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80 >
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html >
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
ServerName
:应与此虚拟主机配置匹配的域。这应该是您的域名。
ServerAlias
:也应与该虚拟主机匹配的所有其他域,例如www
子域。
DocumentRoot
:Apache 将从中提供域文件的目录。
Options
: This directive
controls which server features are available in a specific directory.
-Indexes
:阻止目录列表。
FollowSymLinks
:此选项告诉您的网络服务器遵循符号链接。
AllowOverride
:指定在其中声明的指令.htaccess
文件可以覆盖配置指令。
ErrorLog
, CustomLog
:指定日志文件的位置。
您可以根据需要命名配置文件,但最佳实践是使用域名作为虚拟主机配置文件的名称。
要启用新的虚拟主机文件,我们需要创建从虚拟主机文件到sites-enabled
目录,由 apache2 在启动期间读取。
启用虚拟主机的最简单方法是使用a2ensite
helper:
sudo a2ensite example.com
另一种选择是手动创建一个符号链接 如下所示:
sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/
完成后,使用以下命令测试配置是否存在任何语法错误:
sudo apachectl configtest
如果没有错误,您将看到以下输出:
Syntax OK
重新启动 Apache 服务以使更改生效:
sudo systemctl restart apache2
最后验证一切是否按预期工作,打开http://example.com
在您选择的浏览器中,您将看到如下内容:
结论#
您已经学习了如何创建 apache 虚拟主机配置以在单个 Ubuntu 服务器上托管多个域。您可以重复我们上面概述的步骤,并为您的所有域创建其他虚拟主机。
如果您遇到任何问题,请随时发表评论。