1.apache是企业中常用的web服务,用来提供http://(超文本传输协议)
2.apache的安装部署
yum install httpd -y ##apache软件
yum install httpd-manual ##apache的手册
systemctl start httpd
systemctl enable httpd
firewall-cmd --list-all ##列出火墙信息
firewall-cmd --permanent --add-service=http ##永久允许http
firewall-cmd --reload ##火墙重新加载策略
/var/www/html ##apache的/目录,默认发布目录
/var/www/html/index ##apache的默认发布文件
vim /var/www/html/index
hello world
测试:http://172.25.254.166
http://172.25.254.166/manual
3.apache的配置信息
主配置目录:/etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
子配置目录:/etc/httpd/conf.d
子配置文件:/etc/httpd/conf.d/.conf
默认发布目录:/var/www/html
默认发布文件:index.html
默认端口:80
默认安全上下文:httpd_sys_content_t
程序开启默认用户:apache
apache日志:/etc/httpd/logs/
修改默认端口:
-1-安装apache
<1>安装apache(以下是安装过显示的内容),并开启http服务同时使开机启动
[root@dns-server ~]# yum install httpd -y
[root@dns-server ~]# systemctl start httpd
[root@dns-server ~]# systemctl enable httpd
[root@dns-server ~]# systemctl start firewalld
[root@dns-server ~]# firewall-cmd --permanent --add-service=http
[root@dns-server ~]# firewall-cmd --reload
<3>进入默认发布目录,创建index.html文件并在其内写入“hello world”
[root@dns-server ~]# cd /var/www/html
[root@dns-server html]# ls
[root@dns-server html]# vim index.html
hello world
[root@dns-server html]# systemctl restart httpd
<5>在浏览器内输入本机的ip地址,会显示出在默认发布目录的文件中写入的内容
-2-安装apache的手册
<1>安装apache的手册并使服务重启
[root@dns-server html]# yum install httpd-manual -y
[root@dns-server html]# systemctl restart httpd
实验:
-1-修改默认端口(防火墙关闭情况下)
<1>关闭防火墙并使其开机关闭
[root@dns-server ~]# systemctl stop firewalld
[root@dns-server ~]# systemctl disable firewalld
[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd
将主配置文件中的端口内容Listen 80更改成Listen 8080
<3>在浏览器输入本机的ip地址,发现无法查看发布目录下的内容,在ip地址后加上端口号,才可以看见发布目录下的内容,说明修改端口成功
更改端口前:
更改端口后:
<4>为了不影响之后的实验,故将主配置文件中的内容还原(端口号恢复成80)并利用网页进行查看
[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd
[root@dns-server ~]# systemctl start firewalld ##开启防火墙
[root@dns-server ~]# firewall-cmd --permanent --add-port=8080/tcp ##设置火墙的端口为8080
[root@dns-server ~]# firewall-cmd --reload ##火墙重新加载
[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd
将主配置文件中的端口内容Listen 80更改成Listen 8080
<3>在浏览器输入本机的ip地址,发现无法查看发布目录下的内容,在ip地址后加上端口号,才可以看见发布目录下的内容,说明修改端口成功
更改端口前:
更改端口后:
<4>为了不影响之后的实验,故将主配置文件中的内容还原(端口号恢复成80)并利用网页进行查看
[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd
-3-修改默认发布文件:
<1>创建test.html并在其写入内容
[root@dns-server html]# ls
[root@dns-server html]# vim test.html
[root@dns-server html]# cat test.html
test.html中的内容如下:
<2>进入httpd的主配置文件将test.html目录写于index.html前并重启服务,在网页中查看时,会输出test.html文件内的内容
[root@dns-server html]# vim /etc/httpd/conf/httpd.conf
[root@dns-server html]# systemctl restart httpd
DirectoryIndex test.html index.html
<3>在浏览器中输入本机的ip地址之后,会显示test.html文件内的内容
-4-修改默认发布目录
<1>在默认发布目录下创建一个子目录westos,并建立一个文件,在文件内写入内容(westos)
[root@dns-server ~]# cd /var/www/html
[root@dns-server html]# mkdir /westos/html -p
[root@dns-server html]# cd /westos/html
[root@dns-server html]# ls
[root@dns-server html]# vim index.html
index.html文件内写入的内容如下:
<2>进入httpd的主配置文件进行更改并使服务生效
[root@dns-server html]# vim /etc/httpd/conf/httpd.conf
[root@dns-server html]# systemctl restart httpd
DocumentRoot "/westos/html"
<3>在浏览器中输入本机地址,发现出现的是apache的测试页面,并不是我们指定的目录,说明配置的可能有错误
<4>清空htppd的访问错误的记录并重新启动httpd服务,重启后一定要在浏览器尝试访问一下才会出现报错
[root@dns-server ~]# > /etc/httpd/logs/error_log
[root@dns-server ~]# systemctl restart httpd
[root@dns-server ~]# cat /etc/httpd/logs/error_log
[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd
Require all granted
<7>在浏览器中输入本机地址,发现出现的依旧是apache的测试页面,并不是我们指定的目录,说明配置的可能有错误
<8>清空日志记录并重新启动httpd服务,重启后一定要在浏览器尝试访问一下才会出现报错
[root@dns-server ~]# > /var/log/messages
[root@dns-server ~]# systemctl restart httpd
<9>查看日志文件的报错,发现selinux安全上下文有问题
[root@dns-server ~]# cat /var/log/messages
[root@dns-server ~]# getenforce
[root@dns-server ~]# cd /var/www/html
[root@dns-server html]# ls -Zd /westos/
[root@dns-server html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)'
[root@dns-server html]# restorecon -RvvF /westos/
[root@dns-server html]# systemctl restart httpd
<13>在浏览器上再次输入本机ip地址,发现可以成功访问到更改后的目录下文件的内容
<1>做好本地解析
[root@dns-server conf.d]# vim /etc/hosts
增加以下内容(哪台主机配置,写哪台主机)
172.25.254.166 www.westos.com news.westos.com music.westos.com login.westos.com
<2>在网页中输入三个不同的网址,可以看到当输入三个不同的网址时,输出的内容却相同
<3>在/var/www目录下创建两个子目录(music和news),并查看其中一个的安全上下文(为了防止出现安全上下文的报错,故都创建在这个目录下)
[root@dns-server html]# mkdir /var/www/virtual/westos.com/music -p
[root@dns-server html]# mkdir /var/www/virtual/westos.com/news -p
[root@dns-server html]# ls -Zd /var/www/virtual/westos.com/news
<4>创建好两个目录后,再在目录下的分别创建一个html文件,并写入内容
[root@dns-server html]# vim /var/www/virtual/westos.com/news/index.html
[root@dns-server html]# cat /var/www/virtual/westos.com/news/index.html
[root@dns-server html]# vim /var/www/virtual/westos.com/music/index.html
[root@dns-server html]# cat /var/www/virtual/westos.com/music/index.html
news.westos.com站点并使服务生效
[root@dns-server html]# cd /etc/httpd/conf.d/
[root@dns-server conf.d]# ls
[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# vim news.conf
[root@dns-server conf.d]# systemctl restart httpd
DocumentRoot "/var/www/html"
=========================36
文件news.conf中的内容:
ServerName "news.westos.com" ##指定站点名称
DocumentRoot "/var/www/virtual/westos.com/news" 站点默认发布目录
CustomLog logs/news.log combined ##站点日志combined标示四种日志的集合(即将所有日志都指定到/Logs/news/log),其是一个相对目录,因为它住在http路径下的(可以通过/etc/httpd/conf/httpd.conf文件中的ServerRoot "/etc/httpd"查看)
Require all granted
<6>在浏览器中尝试输入网址并进行查看,发现不同的网址输出不同的内容
<7>将子配置目录下的news.conf内容复制至music.conf下,并将music.conf中的news通过命令全部更改成music,重启服务既可
[root@dns-server conf.d]# cp news.conf music.conf
[root@dns-server conf.d]# vim music.conf
[root@dns-server conf.d]# systemctl restart httpd
更改文件中的配置(可使用%s/news/music/g命令):
<8>在浏览器中输入music.westos.com,得出此站点在其目录的html文件下写入的内容
注意:
1.ServerName “news.westos.com” ##指定站点名称
2.DocumentRoot “/var/www/virtual/westos.com/news” 站点默认发布目录
3.CustomLog logs/news.log combined ##站点日志combined标示四种日志的集合(即将所有日志都指定到/Logs/news/log),其是一个相对目录,因为它住在http路径下的(可以通过/etc/httpd/conf/httpd.conf文件中的ServerRoot "/etc/httpd"查看)
4.acess指访问的日志
5.之所以访问不了,是因为没有被授权
6.require all granted允许所有人访问
7.加到内核的安全上下文列表,永久性的,要弄安全
8.双引号不能引用问号
9.设置apache的虚拟主机,不同域名对应不同页面
10.不是默认的,用*代替(news),不区分大小写
-1-.针对主机的访问控制
<1>只允许ip为172.25.254.66的主机访问172.25.254.166,其他主机拒绝访问
[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# systemctl restart httpd
DocumentRoot "/var/www/html"
Require all granted
Order deny,allow
Allow from 172.25.254.66
Deny from all
<2>分别在不同主机上进行测试
在ip为172.25.254.166的浏览器上输入ip的结果为:
在ip为172.25.254.66的浏览器上输入ip的结果为:
<3>不允许所有主机访问172.25.254.166
[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# systemctl restart httpd
DocumentRoot "/var/www/html"
Require all granted
Order allow,deny
Allow from 172.25.254.66
Deny from all
<4>分别在不同主机上进行测试
在ip为172.25.254.166的浏览器上输入ip的结果为:
在ip为172.25.254.66的浏览器上输入ip的结果为:
注意:
1.Order allow,deny ##列表读取顺序,后读取的列表会覆盖先读取的列表
2.allow和deny没有先后顺序,有可能是allow的优先级大于deny
-2-用户方式的访问控制
##允许指定一个文件的所有用户访问:
<1>首先在共享目录下创建一个admin目录,并在其下创建一个一个index.html文件并写入内容
[root@dns-server conf.d]# mkdir /var/www/html/admin
[root@dns-server conf.d]# vim /var/www/html/admin/index.html
[root@dns-server conf.d]# cat /var/www/html/admin/index.html
<2>进入配置文件进行相关的配置
[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# systemctl restart httpd
DocumentRoot "/var/www/html"
Require all granted
# Order deny,allow
# Allow from 172.25.254.66
Allow from all
AuthUserFile "/etc/httpd/htuser"
AuthName "Please input username and password"
AUthType Basic
Require valid-user
[root@dns-server conf.d]# htpasswd -cm /etc/httpd/userpass admin
[root@dns-server conf.d]# htpasswd -m /etc/httpd/userpass admin1
<4>可以通过以下命令查看用户是否建立成功
[root@dns-server conf.d]# cat /etc/httpd/userpass
<5>打开浏览器并在其输入ip(172.25.254.166/admin),会发现出来一个界面是需要认证的
<6>输入用户admin的名称和密码,发现可以成功查看网页
<7>输入用户admin1的名称和密码,发现可以成功查看网页
##只允许一个用户列表访问:
<8>更改配置文件中的内容使只允许admin用户访问网络
[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# systemctl restart httpd
[root@dns-server conf.d]# firefox
DocumentRoot "/var/www/html"
Require all granted
# Order deny,allow
# Allow from 172.25.254.66
Allow from all
AuthUserFile "/etc/httpd/htuser" ##指定用户认证文件
AuthName "Please input username and password"
AuthType Basic
# Require valid-user ##允许所有admin用户访问admin下的页面
Require user admin ##只允许admin用户访问admin下的页面
<9>打开浏览器并在其输入ip(172.25.254.166/admin),会发现依旧会出来一个界面是需要认证的
<10>输入用户admin1的名称和密码,发现不可以成功查看网页,会回到没有认证之前的界面
<11>清除网页的缓存后再次查看网页
<12>再次输入用户admin的名称和密码,发现可以成功查看网页
<13>清除网页的缓存后再次查看网页
<14>将用户admin的密码输出,发现点击确定后依旧会回到没有认证之前的界面
<15>如果不输入任何信息,点击取消,会出现认证错误的报错
注意:
1.指定用户认证文件是AuthUserFile
2.基本认证(用户和密码)
3.Require user admin(指定一个用户列表)
4.Require valid-user(指定一个文件的所有用户)
5.添加用户一定要在创建目录和修改adefault.conf之后,否则会显示报错
6.如果要查看安全上下文,前提是selinux的状态必须是enforcing
7.-cm c表示创建 m表示modify更改,再次建立时,要把c去掉,在原有的情况下会覆盖
8.ctrl+shift+delete是清除缓存
9.Require user是一个整体,不能分开写