我正在尝试设置 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 文件,因此在某些情况下,需要软链接才能使其工作