一、安装
root@hollowman-F117:~# apt install apache2 #安装
root@hollowman-F117:~# apache2 -v #查看版本
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2020-08-12T19:46:17
二、配置文件
1.配置文件介绍
apache2安装后的配置目录是/etc/apache2
,apache2服务的配置工作基本就在此目录下进行。
root@hollowman-F117:~# cd /etc/apache2
root@hollowman-F117:/etc/apache2# ls -l
总用量 64
-rw-r--r-- 1 root root 7224 8月 13 2020 apache2.conf
drwxr-xr-x 2 root root 173 3月 19 21:17 conf-available
drwxr-xr-x 2 root root 143 3月 19 21:17 conf-enabled
-rw-r--r-- 1 root root 1782 4月 14 2020 envvars
-rw-r--r-- 1 root root 31063 4月 14 2020 magic
drwxr-xr-x 2 root root 8192 3月 19 21:17 mods-available
drwxr-xr-x 2 root root 4096 3月 19 21:17 mods-enabled
-rw-r--r-- 1 root root 320 4月 14 2020 ports.conf
drwxr-xr-x 2 root root 54 3月 19 21:17 sites-available
drwxr-xr-x 2 root root 30 3月 19 21:17 sites-enabled
apache2.conf 全局配置文件
ports.conf 监听IP地址和端口的配置文件
magic 针对mod_mime_magic的配置,也就是针对不同文件类型的配置 envvars(environment variables) 环境变量
conf-available/
其他额外的文件配置目录
该目录下的配置文件需以.conf结尾。
可通过a2enconf
和a2disconf
命令来启用或禁用该目录下的配置文件
conf-enabled/
如果用a2enconf命令启用了onf-available/ 的某个配置文件,则该配置文件会链接到此目录下
mods-available/
该目录下为已经安装的可用模块。
可以发现,有的模块只有一个.load文件,有的既有.load文件也有.conf文件。.load文件包含的是加载该模块所需的指令,而.conf文件包含的是使用该模块所需的指令。
可通过a2enmod
和a2dismod
命令来启用或禁用该目录下的模块
mods-enabled/
类似conf-enabled/目录,当mods-available/ 目录下的模块启用之后,启用的模块文件也会链接到此目录下
sites-available/
该目录为虚拟主机(网站)的配置目录,配置文件也需要通过a2ensite
和a2dissite
命令来启用和禁用。
sites-enabled/
虚拟主机配置文件启用后,在此目录下会建立链接文件。
2.模块开启关闭快速方法
a2enmod
命令可以直接列出没有被启用的模块,根据需要输入需要启用的模块则可启用
而
a2dismod
命令则可直接列出已经被启用的模块,根据情况输入需要禁用的模块则可禁用
如:
root@hollowman-F117:/etc/apache2/mods-available# a2dismod
Your choices are: access_compat alias auth_basic authn_core authn_file authz_core authz_host authz_user autoindex deflate dir env filter mime mpm_event negotiation reqtimeout setenvif status
Which module(s) do you want to disable (wildcards ok)?
三、虚拟主机配置
每一个虚拟主机都可对应一个配置文件,并存放在/etc/apache2/sites-available
目录下。
root@hollowman-F117:/etc/apache2# ls -l sites-available/
总用量 12
-rw-r--r-- 1 root root 1332 4月 14 2020 000-default.conf
-rw-r--r-- 1 root root 6338 4月 14 2020 default-ssl.conf
/etc/apache2/sites-available
目录下默认有1个虚拟主机配置文件000-default.conf
,我们查看默认的有效代码就几行代码:
root@hollowman-F117:/etc/apache2# cat sites-available/000-default.conf | grep -v "#"
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
该代码的配置内容是:虚拟主机ip地址为本机,端口为80,网站根目录为/var/www/html,并指明了错误日志和访问日志的存放路径。
如果服务器只有1个网站,可以直接修改此文件,如果有多个网站,则需要新建虚拟主机配置文件来实现了。下面以基于hollowman.cn域名的虚拟主机进行配置分析:
1.创建网站目录及网页文件
root@hollowman-F117:~# mkdir /var/www/hollowman
root@hollowman-F117:~# echo 'hello,world!' > /var/www/hollowman/index.html
2.新建虚拟主机配置文件
root@hollowman-F117:~# vim /etc/apache2/sites-available/hollowman.com.conf
<VirtualHost *:80> #定义1个针对ip地址为本机、端口为80的虚拟主机,*表示本机,也可以使用ip地址。注意配置文件中的<>...</>是成对出现的。
ServerAdmin [email protected] #定义站长邮箱
ServerName hollowman.cn #定义网站域名
DocumentRoot /var/www/hollowman #定义网站根目录,应当为绝对路径
<Directory /var/www/hollowman> #配置一些只针对该目录有效的指令,此配置信息在全局配置文件/etc/apache2/apache2.conf中也会出现,具体解析见下文。
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log #定义错误日志存放位置,${APACHE_LOG_DIR}在envvars配置文件中有设置
CustomLog ${APACHE_LOG_DIR}/access.log combined #定义访问日志的路径以及格式
</VirtualHost>
关于< Directory ></ Directory > 配置说明:
Options: 配置在特定目录使用哪些特性,多个特性之间用空格隔开。ExecCGI表示在该目录下允许执行CGI脚本;FollowSymLinks表示在该目录下允许文件系统使用符号连接;Indexes表示当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户;SymLinksIfOwnerMatch表示当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问
AllowOverride: 允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定)。其值为None时,表示不搜索该目录下的.htaccess文件;当其值为All时,表示在.htaccess文件中可以使用所有的指令。
Require: apache2.4版本中对于目录的访问控制指令,以下为常见写法
Require all granted #允许所有来源访问
Require all denied #拒绝所有来源访问
Require expr expression #只有表达式为true时允许访问
Require ip 10.1 192.168.10 12.12.0.0/16 #允许指定的IP地址
Require host hollowman.cn #只允许来自域名hollowman.cn的主机访问
注意:apache2.2版本中对于目录的访问控制是通过Order指令来实现的
Order: 控制在访问时Allow和Deny两个访问规则哪个优先:Allow表示允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16);Deny表示拒绝访问的主机列表。常见写法:
Order deny,allow #先拒绝后允许
Deny from all #拒绝所有
Order allow,deny #先允许后拒绝
Allow from all #允许所有
Order deny,allow #先拒绝后允许
Deny from all #拒绝所有
Allow from hollowman.cn #允许hollowman.cn
3.开启该虚拟主机
root@hollowman-F117:~# cd /etc/apache2/sites-available/
root@hollowman-F117:/etc/apache2/sites-available# a2ensite hollowman.com
Enabling site hollowman.com
To activate the new configuration, you need to run:
systemctl reload apache2
root@hollowman-F117:/etc/apache2/sites-available# systemctl restart apache2
此时/etc/apache2/sites-enable目录下将出现一个只想hollowman.com.conf的链接文件,实际上a2ensite的作用就是创建了链接。