apache2的多站点虚拟主机

web服务器apache2和httpd的区别

apache2是debian系列(乌班图等)下的web服务器,它和红帽系列下的httpd相似但又有所不同。红帽redhat系列(包括centos,fedora)下它叫httpd

配置文件也是httpd.conf,这个文件定义全局,包括端口80还是8080等配置。而apache2主配置文件是apache2.conf,端口配置文件是ports.conf

apache2.png

启动也是systemctl start httpd,如下。而apache2启动却是systemctl start apache2

httpd.png


apache2.conf的配置

开发时经常需要配置多个站点,并经常进行切换。 

以前的做法是在httpd.conf里include所有的配置文件,不需要的时候进行注释,例如:

include conf/site.conf

#include conf/default.conf

include conf/spider.conf

这样需要先定位到httpd.conf的目录,然后使用编辑器打开、修改、然后保存,比较麻烦。 

现在可以在apache2.conf里include所有的配置文件。 

apache2下常用的命令:

a2ensite和a2dissite,a2enmod和a2dismod,a2enconf和a2disconf

sites-available下面是你编辑的配置文件,sites-enable下是已经生效的配置文件,也就是说你在site-available下新建了一个虚拟主机的配置文件,重启apache2不会生效,需要运行a2ensite xxx.conf 开启站点使这个配置文件生效。如果想关闭这个站点就用a2dissite xxx.conf,效果是sites-enable下面的配置文件的链接的生成和删除。如果你没有用a2dissite xxx.conf命令关闭站点,而是单独删除了sites-available下面的 xxx.conf配置文件,那么重启apache2就会报错,除非你也去手动删除sites-enable下的配置文件。因此a2en和a2dis就是用来开启和关闭配置文件的,后面接site就操作站点,接mod就操作模块,接conf操作配置文件。

例如这个开启模块

a2enmod.png

例如这个开启配置文件

a2enconf.png

例如这个关闭和开启虚拟主机站点

kaiqi.png


另外Apache还提供了方便的工具来管理配置文件,就是a2ensite和a2dissite,它们都在apache2-common包里。 

/etc/apache2/sites-available 目录下存放可用的VirtualHost配置文件 

 

myblog.conf  目录下存放已经生效的VirtualHost配置文件的符号链接(Symbolic Link),也就是常说的快捷方式啦,该链接指向sites-available下的同名文件。 

 

使用命令a2ensite可以将sites-available目录下的配置文件生效,并且生效后会自动在sites-enable目录下创建同名链接。 

使用命令a2dissite可以将sites-enable目录下的配置文件链接失效并自动删除该链接。 

通过a2dissite和a2ensite,我们可以快速激活/屏蔽站点,加快开发和部署效率。


实例:配置基于域名的虚拟主机方法


sites-available目录下新建VirtualHost配置文件 

cd /etc/apache2/sites-available/

sudo nano myblog.conf 

<VirtualHost *:8070>
#<VirtualHost *:80>
ServerName www.myblog.com
ServerAlias blog.com
DocumentRoot /var/www/html/myblog
</VirtualHost>
<Directory /var/www/html/myblog>
AllowOverride All
Require all granted
</Directory>

使用a2ensite命令来使新的VirtualHost配置生效 

a2ensite myblog.conf 

此时/etc/apache2/sites-available下面就会多出一个myblog.conf的文件

重启apache2服务 

sudo systemctl reload apache2

a2dissite myblog.conf

关闭站点,此时sites-enable目录下的配置文件链接失效并自动删除。

sudo systemctl reload apache2


最后编辑于:2018/10/25作者: admin

发表评论