我应该使用这两个文件中的哪一个来配置 Apache?
为httpd.conf
空,而apache2.conf
不为空。
这让我很困惑!
答案1
httpd.conf 是为用户配置而设计的。您真的不应该编辑 apache2.conf,因为它可能会在将来的升级中更新。
另外一个选项是将您的自定义配置放入 /etc/apache2/conf.d,此目录中的所有文件也包含在内。
答案2
这些并不是你唯一的选择。在 Ubuntu/Debian 上,Apache 还会处理/etc/apache2/sites-enabled/
(其中应该是指向目录中文件的符号链接,由和程序sites-available/
管理)a2ensite
a2dissite
您打算使用这些目录来VirtualHost
。
答案3
apache2.conf 包括 httpd.conf:
a@test$:/etc/apache2$ cat apache2.conf | grep httpd.conf
Include /etc/apache2/httpd.conf
我认为 httpd.conf 已被弃用,但只是留在那里供保守派人士使用,以便他们找到解决方法... :)
编辑:
读完 Rob 的回答后,我做了一个更好的 grep:
a@test:/etc/apache2$ grep -C 1 httpd.conf apache2.conf
# Include all the user configurations:
Include /etc/apache2/httpd.conf
用户配置它是……
答案4
Apache 2.4(在 Debian/Ubuntu 下)
对于配置/覆盖(不一定是新站点):
将新的配置文件放置在 中/etc/apache2/conf-available/{name}.conf
。
使用sudo a2enconf {name}
或启用/禁用您的新配置sudo a2disconf {name}
。
这些中的指令也可以覆盖httpd.conf
,或者apache2.conf
作为用户添加的任何其他配置文件在主配置之后最后读取。
重新启动apache2
服务以反映更改。
对于站点(以及任何站点特定的配置覆盖):
将新站点文件放入/etc/apache2/sites-available/{name}.conf
sudo a2ensite {name}
使用或启用/禁用您的站点配置sudo a2dissite {name}
。
重新启动apache2
服务以反映更改。
请勿使用:
httpd.conf
在某些 Linux 发行版上仍作为主配置文件安装。在其他发行版上,您应该不会再看到它 - 如果看到,请将其留空,作为已安装文件,以便通过包管理器干净/轻松地升级 Apache。
apache2.conf
仍安装在许多系统上,并用作 Debian/Ubuntu 的主要配置文件。但是,如果您希望干净/轻松地升级 Apache,请保留它。您应该include
在此文件底部附近看到一些用于站点和自定义配置的语句。
改用它们!
根据 Linux 发行版的不同,其中一个或两个文件可能会通过 Linux 包管理器安装。这是不去碰它们的一个好理由,因为它们可能会在将来的系统升级过程中被意外覆盖。
您可能在“全球”中看到的任何内容Apache2 配置文件可以按照上述方法在自定义配置下添加/覆盖。您还可以使用包括语句可以自己进一步自定义。示例:您可以从特定的自定义文件中包含您想要的某些/所有站点的其他 SSL 指令include
。您只需根据需要将此包含语句添加到所有虚拟站点配置中即可。
更多(Debian / Ubuntu):https://stackoverflow.com/a/11687212/503621