“sites-enabled”和“sites-available”目录有什么区别?

165
这两个目录在Apache 2中有什么用处,我们该如何使用它们呢?

2
http://serverfault.com/questions/83508/purpose-of-debian-sites-available-and-sites-enabled-dirs - Foreever
3个回答

132
区别在于sites-enabled目录中列出的虚拟站点由Apache提供服务。在sites-available目录中,有存在于您的服务器上的虚拟站点,但人们无法访问它们,因为它们还没有被启用。

sites-available:此目录包含Apache 2虚拟主机的配置文件。虚拟主机允许将Apache 2配置为具有单独配置的多个站点。

sites-enabled:与mods-enabled类似,sites-enabled包含指向/etc/apache2/sites-available目录的符号链接。同样,当sites-available中的配置文件被建立符号链接时,一旦重新启动Apache2,由其配置的站点将处于活动状态。

请参阅https://help.ubuntu.com/lts/serverguide/httpd.html

54
我应该在 sites-enabled 还是 sites-available 中编辑文件? - user3448600
43
@user3448600,你应该编辑“sites-available”文件。 - ggirtsou
4
如果这些是符号链接,那么你编辑任意一个都没有关系。 - Buksy
6
实际上很重要,如果你正在使用nano编辑器。请查看我的回答以获取详细信息。 - viniciussss
链接似乎已经失效。 - J Fabian Meier
链接已经失效(重定向到通用页面,*Ubuntu Server Guide*)。 - Peter Mortensen

119

重要信息

如果您仍在使用 sites-available/sites-enabled 模式,则应仅在 sites-available 目录中编辑文件。

绝不要编辑 sites-enabled 目录中的文件。否则,如果您的编辑器用尽了内存或出现任何原因导致它收到 SIGHUPSIGTERM 信号,就会出现问题。

例如:如果您正在使用 nano 编辑文件 sites-enabled/default 并且它用尽了内存或由于任何原因收到 SIGHUP 或 SIGTERM 信号,则 nano 将在 sites-enabled 目录中创建一个名为 default.save 的紧急文件。

因此,在sites-enabled目录中会有一个额外的文件。这将防止Apache或nginx启动。如果您的站点正在运行,则不再运行。在日志中找到与default.save文件相关的内容,然后删除它,这将让你感到困难。
在上面的示例中,如果您正在编辑sites-available目录中的文件,则不会发生任何错误。文件sites-available/default.save将被创建,但是在sites-available目录中不会造成任何损害。

更新

根据NGINX完全食谱官方网站的说法,sites-enabled/site-available模式已经过时。

/etc/nginx/conf.d/目录包含默认的HTTP服务器配置文件。该目录中以.conf结尾的文件将在/etc/nginx/nginx.conf文件的顶级http块内包含。最好使用include语句并以此方式组织您的配置,以使配置文件简洁。在某些软件包存储库中,此文件夹名为sites-enabled,并且配置文件链接自名为site-available的文件夹;这种约定已过时。

不要使用sites-enabled/site-available模式,只需在/etc/nginx/conf.d文件夹下添加your-site.conf即可。


1
你需要重新启动你的Web服务器,以便使操作生效。因此,即使编辑器添加了额外的文件,除非你重启Web服务器,否则它将被忽略。 - shamaseen
@shamaseen 一旦你有了额外的文件,你就不能在需要时启动/重新启动Web服务器。这就是问题所在。 - viniciussss

13

要配置您的网站mysite,请在sites-available目录下创建或编辑文件mysite.conf(如果您喜欢,也可以在同一个.conf文件中配置多个网站)。

配置完成后,为了发布该网站,您必须在sites-enabled目录中创建相应的符号链接。在Ubuntu中,您可以像这样操作:

a2ensite mysite (如果需要,请使用sudo;并且不需要添加最后的 .conf 扩展名)

然后您必须重新加载Apache:

sudo service apache2 reload

稍后,如果您想修改配置,只需触及sites_available目录中的mysite.conf文件。更改会自动应用于通过符号链接连接到sites_enabled中的配置。只需记得重新加载Apache。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接