学习Linux Apache服务做的笔记,方便自己查阅与复习。

Apache学习笔记

安装Apache

1
2
3
yum install httpd
systemctl start httpd //启动
systemctl enable httpd //设为开机启动

访问:浏览器访问127.0.0.1。

配置文件:

常用参数:

更改网站目录

1
2
3
4
5
6
7
8
9
10
$ mkdir /home/wwwroot //创建文件夹
$ echo "homepage" > /home/wwwroot/index.html //创建主页
$ vim /etc/httpd/conf/httpd.conf //编辑配置文件
   DocumentRoot "/var/www/html" -> DocumentRoot "/home/wwwroot"
   <Directory "/var/www"> -> <Directory "/home/wwwroot">
$ ls -Zd /var/www/html
$ ls -Zd /home/wwwroot //查看两个目录的selinux安全上下文不同之处
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/* //设置selinux安全上下文
$ restorecon -Rv /home/wwwroot //立即生效

SELinux

1
2
3
4
5
6
7
$ vim /etc/selinux
   enforcing //强制启用安全策略模式,将拦截服务的不合法请求。
permissive //遇到服务越权访问时,只发出警告而不强制拦截
disabled //对于越权的行为不警告也不拦截
$ getenforce //查看运行状态
$ setenforce 1 //启用,0为禁用。临时,重启后失效
$ semanage //用于管理selinux策略,l 查询,a 添加,m 修改,d 删除。

个人用户主页功能

1
2
3
4
5
6
7
8
9
$ vim /etc/httpd/conf.d/userdir.conf    //编辑配置文件
UserDir disable -> # UserDir disable
# UserDir public_html -> UserDir public_html
$ su amon //切换用户
$ mkdir ~/public_html //创建网站文件夹
$ echo "amon'homepage" > ~/public_html/index.html //创建主页文件
$ chomd -Rf 755 /home/amon //设置文件夹权限
$ getsebool -a | grep http //查找selinux安全域策略
$ setsebool -P httpd_enable_homedirs=on //修改selinux安全域策略,参数P:永久设置并立即生效

访问:浏览器访问127.0.0.1/~amon

添加身份验证
1
2
3
4
5
6
7
8
9
$ htpasswd -c /etc/httpd/passwd amon  //c参数表示第一次生成,存放密码的文件、用户名称
$ vim /etc/httpd/conf.d/userdir.conf //修改配置文件
<Directory "/home/*/public_html">
AllowOverride all
authuserfile "/etc/httpd/passwd" //密码文件
authname "My privately website" //访问网页提示
authtype basic
require user amon //用户进行登录需要验证的用户名称
</Directory>

虚拟主机功能

基于IP地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$ vim /etc/sysconfig/network-scripts/ifcfg-ens33   //设置多个IP地址
ADDRIP0=192.168.10.11
ADDRIP1=192.168.10.12
ADDRIP2=192.168.10.13
$ mkdir /home/wwwroot //创建主页
$ mkdir /home/wwwroot/11
$ mkdir /home/wwwroot/12
$ mkdir /home/wwwroot/13
$ echo "IP:192.168.10.11" > /home/wwwroot/11/index.html
$ echo "IP:192.168.10.12" > /home/wwwroot/12/index.html
$ echo "IP:192.168.10.13" > /home/wwwroot/13/index.html
$ vim /etc/httpd/conf/httpd.conf //编辑配置文件
    <VirualHost 192.168.10.11>
DocumentRoot /home/wwwroot/11
ServerName www.amonlinux.com
<Directory /home/wwwroot/11>
AllowOverride none
Require all granted
</Directory>
    </VirualHost>
    <VirualHost 192.168.10.12>
DocumentRoot /home/wwwroot/12
ServerName bbs.amonlinux.com
<Directory /home/wwwroot/12>
AllowOverride none
Require all granted
</Directory>
    </VirualHost>
    <VirualHost 192.168.10.13>
DocumentRoot /home/wwwroot/13
ServerName tech.amonlinux.com
<Directory /home/wwwroot/13>
AllowOverride none
Require all granted
</Directory>
    </VirualHost>
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot //selinux安全上下文
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/11
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/11/*
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/12
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/12/*
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/13
$ semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/13/*
$ restorecon -Rv /home/wwwroot //立即生效

访问:浏览器访问192.168.10.11、192.168.10.12、192.168.10.13

基于主机域名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ mkdir /home/wwwroot    //创建主页
$ mkdir /home/wwwroot/www
$ mkdir /home/wwwroot/bbs
$ mkdir /home/wwwroot/tech
$ echo "www" > /home/wwwroot/www/index.html
$ echo "bbs" > /home/wwwroot/bbs/index.html
$ echo "tech" > /home/wwwroot/tech/index.html
$ vim /etc/hosts //手工定义 IP 地址与域名之间的对应关系
    192.168.10.11 www.amonlinux.com bbs.amonlinux.com tech.amonlinux.com
$ vim /etc/httpd/conf/httpd.conf //编辑配置文件
    <VirualHost 192.168.10.11>
DocumentRoot /home/wwwroot/www
ServerName "www.amonlinux.com"
<Directory /home/wwwroot/www>
AllowOverride none
Require all granted
</Directory>
    </VirualHost>
    <VirualHost 192.168.10.11>
DocumentRoot /home/wwwroot/bbs
ServerName "bbs.amonlinux.com"
<Directory /home/wwwroot/bbs>
AllowOverride none
Require all granted
</Directory>
    </VirualHost>
    <VirualHost 192.168.10.11>
DocumentRoot /home/wwwroot/tech
ServerName "tech.amonlinux.com"
<Directory /home/wwwroot/tech>
AllowOverride none
Require all granted
</Directory>
    </VirualHost>
$ 设置selinux安全上下文(略)

访问:浏览器访问www.amonlinux.com、bbs.amonlinux.com、tech.amonlinux.com

基于端口号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ mkdir -p /home/wwwroot/6111    //创建主页
$ mkdir -p /home/wwwroot/6222
$ echo "port:6111" > /home/wwwroot/6111/index.html
$ echo "port:6222" > /home/wwwroot/6222/index.html
$ vim /etc/httpd/conf/httpd.conf
    Listen 6111
    Listen 6222
    <VirualHost 192.168.10.11:6111>
DocumentRoot /home/wwwroot/6111
ServerName www.amonlinux.com
<Directory /home/wwwroot/6111>
AllowOverride none
Require all granted
</Directory>
    </VirualHost>
    <VirualHost 192.168.10.11:6222>
DocumentRoot /home/wwwroot/6222
ServerName www.amonlinux.com
<Directory /home/wwwroot/6111>
AllowOverride none
Require all granted
</Directory>
    </VirualHost>
$ 设置SELinux安全上下文(略)
$ semanage port -l | grep http //查询过滤http协议相关且SELinux服务允许的端口
$ semanage port -a -t httpd_port_t -p tcp 6111 //添加端口
$ semanage port -a -t httpd_port_t -p tcp 6222
$ systemctl restart httpd

访问:浏览器访问192.168.10.11:6111 、192.168.10.11:6222

Apache的访问控制

Apache 可以基于源主机名、源 IP 地址或源主机上的浏览器特征等信息对网站上的资源进行访问控制。它通过 Allow 指令允许某个主机访问服务器上的网站资源,通过 Deny 指令实现禁止访问。在允许或禁止访问网站资源时,还会用到 Order 指令,这个指令用来定义 Allow或 Deny 指令起作用的顺序,其匹配原则是按照顺序进行匹配,若匹配成功则执行后面的默认指令。比如“Order Allow, Deny”表示先将源主机与允许规则进行匹配,若匹配成功则允许访问请求,反之则拒绝访问请求。