apache sites-enable 和 sites-available的区别

Posted by

apache2的配置文件通常位于/etc/apache2下面。

Linux下 Apache的配置文件是 /etc/apache2/apache2.conf,Apache在启动时会自动读取这个文件的配置信息。而其他的一些配置文件,如 httpd.conf等,则是通过Include指令包含进来。

在apache2.conf里有sites-enabled目录,而在 /etc/apache2下还有一个sites-available目录,其实,这里面才是真正的配置文件,而sites- enabled目录存放的只是一些指向这里的文件的符号链接,可以通过ls -al /etc/apache2/sites-enabled/来查看。

所以,如果apache上配置了多个虚拟主机,每个虚拟主机的配置文件都放在 sites-available下,那么对于虚拟主机的停用、启用就非常方便了:当在sites-enabled下建立一个指向某个虚拟主机配置文件的链接时,就启用了它;如果要关闭某个虚拟主机的话,只需删除相应的链接即可,无需去改配置文件,还是很方便的。

例如:我的配置文件增加了sun_mgt1938.conf 如下

sun@karat:/etc/apache2$ ls
apache2.conf  conf-available  conf-enabled  envvars  magic  mods-available  mods-enabled  ports.conf  sites-available  sites-enabled
sun@karat:/etc/apache2$ cd sites-available/
sun@karat:/etc/apache2/sites-available$ ls
000-default.conf  default-ssl.conf  sun.conf  sun_mgt1938.conf

使用:sudo a2ensite xxxx.conf 启用配置文件

sun@karat:/etc/apache2/sites-available$ sudo a2ensite sun_mgt1938.conf
[sudo] password for sun:
Enabling site sun_mgt1938.
To activate the new configuration, you need to run:
  systemctl reload apache2
sun@karat:/etc/apache2/sites-available$ sudo systemctl reload apache2
sun@karat:/etc/apache2/sites-available$ ls
000-default.conf  default-ssl.conf  sun.conf  sun_mgt1938.conf

然后查看其文件状态:

sun@karat:/etc/apache2/sites-enabled$ ls -l
total 4
lrwxrwxrwx 1 root root   27 Jun 27 14:01 sun.conf -> ../sites-available/sun.conf
lrwxrwxrwx 1 root root   35 Jul 19 16:50 sun_mgt1938.conf -> ../sites-available/sun_mgt1938.conf
sun@karat:/etc/apache2/sites-enabled$ ls
sun.conf  sun_mgt1938.conf
sun@karat:/etc/apache2/sites-enabled$ ls -ls
total 0
0 lrwxrwxrwx 1 root root   27 Jun 27 14:01 sun.conf -> ../sites-available/sun.conf
0 lrwxrwxrwx 1 root root   35 Jul 19 16:50 sun_mgt1938.conf -> ../sites-available/sun_mgt1938.conf

参考文档:

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-magento-on-ubuntu-14-04

http://manpages.ubuntu.com/manpages/trusty/en/man8/a2ensite.8.html