文章目录
一个虚拟主机是一段 Apache 配置指令,它允许你在一台单独的服务器上运行一个或者多个指令。通过 虚拟主机,你可以指定网站根目录(托管网站文件),每个网站创建一个独立的安全策略,使用不同的 SSL 证书,等等。
本文描述如何在 Ubuntu 20.04 上 设置 Apache 虚拟主机。
在继续下面的指南之前,确保你满足下面的必要条件:
文件根目录是域名所对应的网站文件存储的地方,以及响应网站请求的地方。你可以将网站根目录设置成任何你想要设置的位置,在这个例子中,我们将会使用下面的目录结构:
/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 虚拟主机配置 来托管多个域名。
重复上面的步骤,可以为所有域名创建其他的虚拟主机。
原文 :https://linuxize.com/post/how-to-set-up-apache-virtual-hosts-on-ubuntu-20-04/
版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。