我正在按照此网址上的说明在 Apache2 上运行多个站点
https://www.liquidweb.com/kb/configure-apache-virtual-hosts-ubuntu-18-04/
说明适用于 2 个站点,但我需要运行 3 个站点。我按照所有步骤操作,在 www 文件夹中为每个站点创建了三个不同的文件夹,并domain.com.conf
在文件夹中创建了三个不同的文件sites-available
。如果我启用所有三个域,a2ensite
则我的 apache2 服务在重新启动时会出现错误,但如果我只启用 2 个站点,则我的 apache 服务运行正常,我可以在浏览器中访问我的站点。即使启用了两个站点,我仍然可以通过浏览器访问我的所有三个站点,但我只能在sites-enabled
文件夹中看到两个 conf 文件。启用所有三个站点后,我会在sites-enabled
文件夹中获得三个 conf 文件,但 apache 服务不会重新启动。重新启动 apache2 服务时出现的错误如下。
sudo systemctl status apache2
● apache2.service - Apache HTTP 服务器已加载:已加载(/lib/systemd/system/apache2.service;已启用;供应商预设:已启用)活动:失败(结果:退出代码)自 2021-02-21 04:10:28 UTC;8 秒前起文档:https://httpd.apache.org/docs/2.4/ 进程:23325 ExecStart=/usr/sbin/apachectl start(代码=exited,状态=1/FAILURE)
状态说
sudo systemctl status apache2
● apache2.service - Apache HTTP 服务器已加载:已加载(/lib/systemd/system/apache2.service;已启用;供应商预设:已启用)活动:失败(结果:退出代码)自 2021-02-21 星期日 04:10:28 UTC;1 分 31 秒前起文档:https://httpd.apache.org/docs/2.4/ 进程:23325 ExecStart=/usr/sbin/apachectl start(代码=exited,状态=1/FAILURE)
systemd[1]: 正在启动 Apache HTTP 服务器... apachectl[23336]: apache2: /etc/apache2/apache2.conf 第 225 行语法错误:语法 e> apachectl[23325]: 操作“start”失败。 apachectl[23325]: Apache 错误日志可能有更多信息。 systemd[1]: apache2.service: 控制进程已退出,代码=exited,状态=1/FAILURE systemd[1]: apache2.service: 失败,结果为“exit-code”。 systemd[1]: 无法启动 Apache HTTP 服务器。
尽管我的所有三个站点都在运行并且启用了 2 个站点,但我仍然希望启用所有三个站点并重新启动 apache2 服务。
我在 ubuntu 服务器 20.04 LTS 上运行 apache2
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
我的domain1.com.conf文件如下
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site1
ServerName domain1.com
ServerAlias www.domain1.com
</VirtualHost>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
除site2、site3和domain2、domain3外,其他三个配置文件相同。
我发现的另一件事是,只有当我仅在域 1(站点 1)上运行命令时,才会出现 apache2 服务重启错误e2ensite
。如果我只启用了站点 2 和站点 3,则不会出现 apache2 服务错误。这告诉我只有站点 1 有问题。
答案1
我的错。我</VirtualHost>
错误地在domain1.com.conf
文件中添加了额外的标签。你应该像打开和关闭标签一样添加两次标签,但在我的文件中,我在中间又添加了这个标签,我没有注意到它,也许昨晚处理这个太晚了。修复文件后,所有三个站点都运行正常。Apache2 服务也重新启动了,没有任何错误。你的原始文件000-default-conf
应该是这样的
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site1
ServerName domain1.com
ServerAlias www.domain1.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
a2ensite <domain name>
在所有站点上运行。通过运行重新启动 apache2 服务sudo systemctl restart apache2
。检查文件夹,它应该会显示您的 conf 文件指针。在此之前,sites-enabled
请确保已将多个站点放置在文件夹中的各自文件夹中。/var/www