已经无力吐槽了,先回顾一下所学知识

一、Apache服务部署静态网站

1、安装httpd服务

主要是配置yum仓库  vim  /etc/yum.repos.d/rhel.repo

[rhel]

name=rhel

baseurl=file:///media/cdrom

enable=1

gpgcheck=0

安装服务 yum install httpd

2、配置服务文件参数

主配置文件路径 : /etc/sshd/conf/sshd.conf

3、配置完后进行重启服务并且加入开机启动项

systemctl  restart  httpd

systemctl  enable httpd

二、SELinux 安全子系统

SELinux服务有三种配置模式,具体如下。

enforcing:强制启用安全策略模式,将拦截服务的不合法请求。

permissive:遇到服务越权访问时,只发出警告而不强制拦截。

disabled:对于越权的行为不警告也不拦截。

命令:  查看模式:getenforce

设置模式:setenforce 0  关闭    setenforce 1 开启

三、SELinux安全上下文

查看数据目录上安全下文值  ls -Zd  目录

1、semanage命令

用于管理SELinux的策略   格式为“semanage [选项] [文件]”

-l参数用于查询;-a参数用于添加;-m参数用于修改;-d参数用于删除。

添加一条安全上下文  semanage  -a -t httpd_sys_content_t  目录(目录路径,目录后面不加/)

semanage -a -t httpd_sys_content_t    目录/*

使安全上下文生效    restorecon  -Rv 目录/

四、个人主页功能

1、开启个人主页

第1步:在httpd服务程序中,默认没有开启个人用户主页功能。为此,我们需要编辑下面的配置文件,然后在第17行的UserDir disabled参数前面加上井号(#),表示让httpd服务程序开启个人用户主页功能;同时再把第24行的UserDir public_html参数前面的井号(#)去掉(UserDir参数表示网站数据在用户家目录中的保存目录名称,即public_html目录)。最后,在修改完毕后记得保存。

vim /etc/httpd/conf.d/userdir.conf

第2步:在用户家目录中建立用于保存网站数据的目录及首页面文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。

[root@doopli home]# su - doopli
Last login: Fri May 22 13:17:37 CST 2017 on :0
[doopli@doopli ~]$ mkdir public_html
[doopli@doopli ~]$ echo "This is doopli's website" > public_html/index.html
[doopli@doopli ~]$ chmod -Rf 755 /home/doopli

第3步:重新启动httpd服务程序

第4步:开启个人用户上的httpd服务,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”

查看该服务是否开启   getsebool -a | grep http

开启服务  setsebool -P httpd_enable_homedirs=on

2、添加用户身份验证

第1步:先使用htpasswd命令生成密码数据库。-c参数表示第一次生成;后面再分别添加密码数据库的存放文件,以及验证要用到的用户名称(该用户不必是系统中已有的本地账户)。

htpasswd -c /etc/httpd/passwd doopli

第2步:编辑个人用户主页功能的配置文件。把第31~35行的参数信息修改成下列内容,其中井号(#)开头的内容为刘遄老师添加的注释信息,可将其忽略。随后保存并退出配置文件,重启httpd服务程序即可生效。然后登陆

[root@doopli ~]# vim /etc/httpd/conf.d/userdir.conf
27 #
28 # Control access to UserDir directories. The following is an example
29 # for a site where these directories are restricted to read-only.
30 #
31 <Directory "/home/*/public_html">
32 AllowOverride all
#刚刚生成出来的密码验证文件保存路径
33 authuserfile "/etc/httpd/passwd"
#当用户尝试访问个人用户网站时的提示信息
34 authname "My privately website"
35 authtype basic
#用户进行账户密码登录时需要验证的用户名称
36 require user doopli
37 </Directory>
[root@doopli ~]# systemctl restart httpd

五、虚拟主机功能

1、基于IP地址

第1步:给网卡配置三个IP地址,检查是否正常ping通;分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。

(1)vim /etc/sysconfig/network-scripts/ifcfg-eno16777728

TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777728"
UUID="c9bb8fc7-9b62-4227-97b4-34489bde20b2"
ONBOOT="yes"
IPADDR0=192.168.10.10
IPADDR1=192.168.10.20
IPADDR2=192.168.10.30
PREFIX0=24
GATEWAY0=192.168.10.1
HWADDR=00:0C:29:5B:BC:2A
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

(2)创建数据目录

[root@doopli ~]# mkdir -p /home/wwwroot/10
[root@doopli ~]# mkdir -p /home/wwwroot/20
[root@doopli ~]# mkdir -p /home/wwwroot/30
[root@doopli ~]# echo "IP:192.168.10.10" > /home/wwwroot/10/index.html
[root@doopli ~]# echo "IP:192.168.10.20" > /home/wwwroot/20/index.html
[root@doopli ~]# echo "IP:192.168.10.30" > /home/wwwroot/30/index.html

第2步:在httpd服务的配置文件中大约113行处开始,分别追加写入三个基于IP地址的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。

[root@doopli ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
113 <VirtualHost 192.168.10.10>
114 DocumentRoot /home/wwwroot/10
115 ServerName www.doopli.com
116 <Directory /home/wwwroot/10 >
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>
121 <VirtualHost 192.168.10.20>
122 DocumentRoot /home/wwwroot/20
123 ServerName bbs.doopli.com
124 <Directory /home/wwwroot/20 >
125 AllowOverride None
126 Require all granted
127 </Directory>
128 </VirtualHost>
129 <VirtualHost 192.168.10.30>
130 DocumentRoot /home/wwwroot/30
131 ServerName tech.doopli.com
132 <Directory /home/wwwroot/30 >
133 AllowOverride None
134 Require all granted
135 </Directory>
136 </VirtualHost>

第3步:此时访问网站,则会看到httpd服务程序的默认首页面。大家现在应该立刻就反应过来—这是SELinux在捣鬼。由于当前的/home/wwwroot目录及里面的网站数据目录的SELinux安全上下文与网站服务不吻合,因此httpd服务程序无法获取到这些网站数据目录。我们需要手动把新的网站数据目录的SELinux安全上下文设置正确(见前文的实验),并使用restorecon命令让新设置的SELinux安全上下文立即生效,这样就可以立即看到网站的访问效果了,

[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*
[root@doopli ~]# restorecon -Rv /home/wwwroot
restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/10 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/10/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/20 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/20/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/30 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/30/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t

2、基于主机域名

第1步:手工定义IP地址与域名之间对应关系的配置文件,保存并退出后会立即生效。可以通过分别ping这些域名来验证域名是否已经成功解析为IP地址。

[root@doopli ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10 www.doopli.com bbs.doopli.com tech.doopli.com

第2步:分别在/home/wwwroot中创建用于保存不同网站数据的三个目录,并向其中分别写入网站的首页文件。

[root@doopli ~]# mkdir -p /home/wwwroot/www
[root@doopli ~]# mkdir -p /home/wwwroot/bbs
[root@doopli ~]# mkdir -p /home/wwwroot/tech
[root@doopli ~]# echo "WWW.doopli.com" > /home/wwwroot/www/index.html
[root@doopli ~]# echo "BBS.doopli.com" > /home/wwwroot/bbs/index.html
[root@doopli ~]# echo "TECH.doopli.com" > /home/wwwroot/tech/index.html

第3步:在httpd服务的配置文件中大约113行处开始,分别追加写入三个基于主机名的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。

[root@doopli ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
113 <VirtualHost 192.168.10.10>
114 DocumentRoot "/home/wwwroot/www"
115 ServerName "www.doopli.com"
116 <Directory "/home/wwwroot/www">
117 AllowOverride None
118 Require all granted
119 </directory>
120 </VirtualHost>
121 <VirtualHost 192.168.10.10>
122 DocumentRoot "/home/wwwroot/bbs"
123 ServerName "bbs.doopli.com"
124 <Directory "/home/wwwroot/bbs">
125 AllowOverride None
126 Require all granted
127 </Directory>
128 </VirtualHost>
129 <VirtualHost 192.168.10.10>
130 DocumentRoot "/home/wwwroot/tech"
131 ServerName "tech.doopli.com"
132 <Directory "/home/wwwroot/tech">
133 AllowOverride None
134 Require all granted
135 </directory>
136 </VirtualHost>

第4步:因为当前的网站数据目录还是在/home/wwwroot目录中,因此还是必须要正确设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合。最后记得用restorecon命令让新配置的SELinux安全上下文立即生效,这样就可以立即访问到虚拟主机网站了,

[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/*
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/*
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/*
[root@doopli ~]# restorecon -Rv /home/wwwroot
reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/www context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/www/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/bbs context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/bbs/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/tech context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/tech/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

3、基于端口号

第1步:分别在/home/wwwroot中创建用于保存不同网站数据的两个目录,并向其中分别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便我们稍后能更直观地检查效果。

[root@doopli ~]# mkdir -p /home/wwwroot/6111
[root@doopli ~]# mkdir -p /home/wwwroot/6222
[root@doopli ~]# echo "port:6111" > /home/wwwroot/6111/index.html
[root@doopli ~]# echo "port:6222" > /home/wwwroot/6222/index.html

第2步:在httpd服务配置文件的第43行和第44行分别添加用于监听6111和6222端口的参数。

[root@doopli ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息……………… 33 #34 # Listen: Allows you to bind Apache to specific IP addresses and/or35 # ports, instead of the default. See also the <VirtualHost>36 # directive.37 #38 # Change this to Listen on specific IP addresses as shown below to 39 # prevent Apache from glomming onto all bound IP addresses.40 #41 #Listen 12.34.56.78:8042 Listen 80
 43 Listen 6111
 44 Listen 6222

第3步:在httpd服务的配置文件中大约113行处开始,分别追加写入两个基于端口号的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。

[root@doopli ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
113 <VirtualHost 192.168.10.10:6111>
114 DocumentRoot "/home/wwwroot/6111"
115 ServerName www.doopli.com
116 <Directory "/home/wwwroot/6111">
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>
121 <VirtualHost 192.168.10.10:6222>
122 DocumentRoot "/home/wwwroot/6222"
123 ServerName bbs.doopli.com
124 <Directory "/home/wwwroot/6222">
125 AllowOverride None
126 Require all granted
127 </Directory>
128 </VirtualHost>

第4步:因为我们把网站数据目录存放在/home/wwwroot目录中,因此还是必须要正确设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合。最后记得用restorecon命令让新配置的SELinux安全上下文立即生效。

[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/*
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/*
[root@doopli ~]# restorecon -Rv /home/wwwroot/
restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/6111 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/6111/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/6222 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/6222/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
[root@doopli ~]# systemctl restart httpd
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

第5步:SELinux允许的与HTTP协议相关的端口号中默认没有包含6111和6222,因此需要将这两个端口号手动添加进去。该操作会立即生效,而且在系统重启过后依然有效。设置好后再重启httpd服务程序,然后就可以看到网页内容了,

[root@doopli ~]# semanage port -a -t http_port_t -p tcp 6111
[root@doopli ~]# semanage port -a -t http_port_t -p tcp 6222
[root@doopli ~]# semanage port -l| grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp  6222, 6111, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
[root@doopli ~]# systemctl restart httpd

转载于:https://www.cnblogs.com/doopli/p/10055859.html

学习Linux课程第十二天相关推荐

  1. Linux课程第十二天学习笔记

    ######################### #######  2.用户权限列表    ####### ######################### ################### ...

  2. 【LINUX计算机大白平凡学习linux之路】

    @计算机大白平凡学习 之路 千里之行,始于足上.只有基础扎实+思路清析,写脚本才没有问题.多看一些牛人大咖写的脚本.看人家的思路与结构,会收益良多, 一起努力学习吧! Linux是Torvalds先生 ...

  3. Linux 学习笔记(借鉴黑马程序员Linux课程)

    Linux视频课程 简介 Linux诞生于1991年,由林纳斯·托瓦兹在21岁时完成.此后成为最为流行的服务器操作系统之一. Linux内核和系统发行版 由Linux系统内核和系统级应用程序两部分组成 ...

  4. 瑞吉外卖:linux课程学习(软件安装、项目部署)

    Linux-Day02 课程内容 软件安装 项目部署 1. 软件安装 1.1 软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式 特点 二进制发布包安装 ...

  5. 2019最新Linux云计算学习教程(学习路线+课程大纲+面试题+视频教程+网盘下载)

    没有相关的视频教程及相关的学习线路,学起来是一件很费劲的事情,还有很多人从网上及其它渠道购买视频,这些视频资料大多是盗版,上当受骗的人不在少数.为此千锋小编呕心沥血整理了这套零基础全套Linux云计算 ...

  6. 瑞吉外卖:linux课程学习

    Linux-Day01 课程内容 Linux简介 Linux安装 Linux常用命令 1. 前言 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统.说到操作系统,大家比较熟知的应 ...

  7. 凡人学习Linux之路

    近期Windows 11的信息频频出现在各个公众平台上,对它的评价好坏参半,我的关注点是它取消了任务栏移动功能,只能靠着屏幕底边,不能移动到顶部或左右两侧,而且有人喊话说准备撤了,换Linux.其实现 ...

  8. 当代大学生对学习Linux的一点拙见

    我在大一那一年里除了怕挂科外,做什么兼职,什么比较赚钱这俩个问题,成为最困扰的事情,我是个很矫情很俗的人,高中的时候需求小,大家都一样,所以也并没有觉得父母给的生活费少,可等我进入大学后,大家都是来自 ...

  9. 嵌入式linux设计报告,嵌入式linux课程设计报告

    嵌入式linux课程设计报告 重庆科技学院 课程设计成果 院(系):_电气与信息工程学院_ 班 级: 计科普0802 学生姓名: 庄桐泉 学 号: 2008441067 设计地点(单位)___ _I3 ...

最新文章

  1. 搭建nexus后,进入首页的时候出现warning: Could not connect to Nexus.错误
  2. moosefs mysql_moosefs搭建与应用
  3. Python 生成器 和 yield 关键字
  4. SAP License:请教一个SD和FM基金预算集成的问题
  5. 用Log Explorer恢复数据的基本操作
  6. Python实现温度转换
  7. 通过共享文件夹来进行前后端独立开发
  8. 将几个常用网站页面保存为PDF并删除网页无用部分
  9. 一起来全面解析5G网络领域最关键的十大技术
  10. FSG压缩壳和ImportREC的使用 - 脱壳篇05
  11. 桌面扫码点餐系统(小程序+Java后台)
  12. Stata: 协整还是伪回归?
  13. CCRC信息安全服务资质。
  14. Mockplus Cloud Crack,项目管理顺畅
  15. bable转换html里面的js,如何使用babel,把写好的es6代码,转化为es5,让ie8兼容。...
  16. 以安全为重,利尔达推出燃气表报警器联动解决方案
  17. 朱有鹏-3.linux应用编程和网络编程-第3部分-3.3.获取系统信息
  18. 【Linux】主函数的三个形参
  19. Office2007 PPT 宏修改文字颜色
  20. 浅谈电缆行业MES系统解决方案

热门文章

  1. 突然记起我也遇到过一个麻花姐
  2. 插件化框架DL源码的简单解析
  3. 条款20:为指针的关联容器指定比较类型
  4. 想了解概率图模型?你要先理解图论的基本定义与形式
  5. jquery_选择器
  6. linux VNC简单配置
  7. 锗钛项圈真的可以治颈椎病吗
  8. JQuery果然是神器,这里顺便测试一下我发现的那个漏洞!
  9. redis install note
  10. 多线程相关的一些知识点