在本教程中,我们将引导您了解如何在 Debian 9 上设置 Apache 虚拟主机。
Apache 虚拟主机允许您在一台计算机上托管多个域。使用虚拟主机时,您可以为每个域或子域指定不同的文档根(包含网站文件的目录)、创建单独的安全策略、使用不同的 SSL 证书等等。
尽管本教程是针对 Debian 9 编写的,但相同的步骤适用于所有基于 Debian 的发行版。
先决条件#
在继续本教程之前,请确保您已满足以下先决条件:
有一个指向您的服务器 IP 地址的域名。在本教程中我们将使用example.com
.
Have Apache 安装在您的 Debian 服务器上
.
登录身份为具有 sudo 权限的用户
.
创建目录结构#
文档根目录是存储域名网站文件并响应请求而提供服务的目录。您可以将文档根目录设置为您想要的任何位置。在本指南中,我们将使用以下目录结构:
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
我们服务器上托管的每个域都将其文档根设置为/var/www/<domain_name>/public_html
.
让我们首先为我们的第一个域创建文档根目录,example.com
:
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
创建虚拟主机#
在 Debian 系统上,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
:启用此选项后,Apache 将跟踪符号链接。
AllowOverride
:指定在其中声明的指令.htaccess
文件可以覆盖配置指令。
ErrorLog
, CustomLog
:指定日志文件的位置。
您可以根据需要命名虚拟主机配置文件,但建议使用域名作为配置文件的名称。
要启用新的虚拟主机文件,请创建从虚拟主机文件到sites-enabled
目录,Apache 在启动期间读取该目录。
在 Debian 系统中,您可以使用名为的帮助程序脚本启用虚拟主机a2ensite
:
sudo a2ensite example.com
另一种选择是手动创建一个符号链接 如下所示:
sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/
启用配置后,通过键入以下内容测试语法是否正确:
sudo apachectl configtest
如果没有错误,您将看到以下输出:
Syntax OK
重新启动apache2
使更改生效的服务:
sudo systemctl restart apache2
要验证一切是否按预期工作,请打开http://example.com
在你最喜欢的浏览器中,你会看到类似这样的内容:
结论#
在本教程中,您学习了如何创建 Apache 虚拟主机配置以在单个 Debian 服务器上托管多个域。您可以重复相同的步骤为其他域创建其他虚拟主机。
如果您遇到任何问题,请随时发表评论。