Apache 不加载虚拟主机文件

Apache 不加载虚拟主机文件

我正在尝试设置 Apache2 服务器,但无法让它加载我的虚拟主机。或者更准确地说,只要我将它们写入,它就可以正常工作000-default.conf,但每当我尝试使用单独的文件时,它似乎都会完全忽略它。

为什么这不起作用?我该如何让它工作?

答案1

通常,如果想要设置单独的虚拟主机配置,可以将它们放在以下目录中:

/etc/apache2/sites-available/

因此,如果您有一个名为www.example.com配置文件名的虚拟主机,可以www.example.com.conf这样命名:

/etc/apache2/sites-available/www.example.com.conf

然后,您可以在这样的文本编辑器中打开该文件;我使用它nano作为示例,但您可以随意使用您喜欢的任何文本编辑器:

sudo nano /etc/apache2/sites-available/www.example.com.conf

然后将类似这样的内容放入www.example.com.conf

<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /var/www/example.com/
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

关闭并保存该文件,然后使用a2ensite如下方式让系统设置从sites-available到的符号链接sites-enabled,如下所示:

sudo a2ensite www.example.com.conf

或者 — — 如果您愿意 — — 您可以手动使用ln -s来设置符号链接,如下所示:

ln -s /etc/apache2/sites-available/www.example.com.conf /etc/apache2/sites-enabled/www.example.com.conf

完成后只需像这样重新加载 Apache:

sudo service apache2 reload

如果由于某种原因reload不起作用,只需强制重启即可,如下所示:

sudo service apache2 restart

reload使用before的好处restart是,如果配置文件中有拼写错误,Apache 会报告错误但不会加载配置文件。这意味着您的 Apache Web 服务器仍将根据其加载的最后一个稳定配置文件启动并运行。

风险在于,如果您强制执行restart,而配置文件中存在拼写错误,Apache 将无法运行,因为restart强制执行完整服务stop后跟start。如果start发生故障,服务器将无法运行,直到配置拼写错误/问题得到解决。

答案2

检查你的httpd.conf文件,它应该包含类似这样的行Include conf/*.conf。检查它是通配符还是固定文件(如000-default.conf)。

另外,检查你的新 conf 文件是否与通配符模式匹配,并且存储在与000-default.conf.

最后,有些 Apache 发行版有一个可用且活动的 conf 文件,因此在某些情况下,需要软链接才能使其工作

相关内容