web服务器apache2和httpd的区别
apache2是debian系列(乌班图等)下的web服务器,它和红帽系列下的httpd相似但又有所不同。红帽redhat系列(包括centos,fedora)下它叫httpd
配置文件也是httpd.conf,这个文件定义全局,包括端口80还是8080等配置。而apache2主配置文件是apache2.conf,端口配置文件是ports.conf
启动也是systemctl start httpd,如下。而apache2启动却是systemctl start apache2
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操作配置文件。
例如这个开启模块
例如这个开启配置文件
例如这个关闭和开启虚拟主机站点
另外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
发表评论