10.使用 Apache 服务部署静态网站(已完结)

标题

  • 环境
  • 配置yum源
  • httpd部署和运行
    • 试验
    • 修改保存网站数据的目录为/home/wwwroot
    • SELinux安全子系统修改
  • 部署个人用户页面
  • 加密个人用户界面
  • 基于IP地址
  • 基于主机域名
  • 基于端口号
  • Apache的访问控制
  • 如果主机想访问虚拟机的httpd页面(可选操作)

环境

rhel-8.0-x86_64-linuxprobe.com.iso

配置yum源

在这里插入图片描述
第1步:把系统镜像挂载到/media/cdrom目录

mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom

第2步:使用Vim文本编辑器创建软件仓库的配置文件

cat <<EOF> /etc/yum.repos.d/rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0
EOF

第3步:验证源

yum clean all
yum makecache 

代码合集如下:

mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom
cat <<EOF> /etc/yum.repos.d/rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0
EOF
yum clean all
yum makecache 

httpd部署和运行

yum -y install httpd # 安装服务
systemctl start httpd # 启动
systemctl enable httpd # 开机自启

试验

firefox # 浏览器输入http://127.0.0.1

10.使用 Apache 服务部署静态网站(已完结)_第1张图片

修改保存网站数据的目录为/home/wwwroot

第1步:建立网站数据的保存目录,并创建首页文件。

html后缀的文件是网页,所以写入The New web Directory会直接生成网页,这里涉及html语言。

mkdir /home/wwwroot # 创建文件夹
echo "The New web Directory" > /home/wwwroot/index.html # 输入新的语句

第2步:打开httpd服务程序的主配置文件,修改保存网站数据的目录为/home/wwwroot

将约第122行用于定义网站数据保存路径的参数DocumentRoot修改为/home/wwwroot
10.使用 Apache 服务部署静态网站(已完结)_第2张图片
将约第127行与第134行用于定义目录权限的参数Directory后面的路径也修改为/home/wwwroot。
10.使用 Apache 服务部署静态网站(已完结)_第3张图片


vi +122 /etc/httpd/conf/httpd.conf 
# DocumentRoot "/home/wwwroot" 保存退出

vi +127 /etc/httpd/conf/httpd.conf 
#  保存退出

vi +134 /etc/httpd/conf/httpd.conf
#  保存退出

SELinux安全子系统修改

修改网站的服务文件

用户段system_u:代表系统进程的身份
角色段object_r:代表文件目录的角色
类型段httpd_sys_content_t:代表网站服务的系统文件
使用restorecon命令将设置好的SELinux安全上下文立即生效,-Rv参数对指定的目录进行递归操作

 vim +6 /etc/selinux/config # SELINUX=enforcing
 setenforce 0
 不使用setenforce 0,也使用以下注释的
#  setenforce 1
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*
# restorecon -Rv /home/wwwroot/
 getenforce 
 systemctl restart httpd
 firefox # 浏览器输入http://127.0.0.1

10.使用 Apache 服务部署静态网站(已完结)_第4张图片

部署个人用户页面

第1步:
在httpd服务程序中,默认没有开启个人用户主页功能。为此,我们需要编辑下面的配置文件
在第17行的UserDir disabled参数前面加上井号(#),表示让httpd服务程序开启个人用户主页功能

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

10.使用 Apache 服务部署静态网站(已完结)_第5张图片

把第24行的UserDir public_html参数前面的井号(#)去掉**(UserDir参数表示网站数据在用户家目录中的保存目录名称,即public_html目录)**。

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

10.使用 Apache 服务部署静态网站(已完结)_第6张图片
第2步:在用户家目录中建立用于保存网站数据的目录及首页面文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。

useradd linuxprobe
passwd linuxprobe

su - linuxprobe
mkdir public_html
echo "This is linuxprobe's website" > public_html/index.html
chmod -R 755 /home/linuxprobe
exit

第3步:重新启动httpd服务程序,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格)

systemctl restart httpd
setsebool -P httpd_enable_homedirs=on

10.使用 Apache 服务部署静态网站(已完结)_第7张图片

加密个人用户界面

第1步:先使用htpasswd命令生成密码数据库。

 htpasswd -c /etc/httpd/passwd linuxprobe

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

vim +31 /etc/httpd/conf.d/userdir.conf
<Directory "/home/*/public_html">
    AllowOverride all 
        #刚刚生成出的密码验证文件保存路径
    authuserfile "/etc/httpd/passwd" 
        #当用户访问网站时的提示信息
    authname "My privately website"
        #验证方式为口令模式
    authtype basic
        #访问网站时需要验证的用户名称
    require user linuxprobe
</Directory>
 systemctl restart httpd

10.使用 Apache 服务部署静态网站(已完结)_第8张图片

10.使用 Apache 服务部署静态网站(已完结)_第9张图片

基于IP地址

在这里插入图片描述
10.使用 Apache 服务部署静态网站(已完结)_第10张图片
10.使用 Apache 服务部署静态网站(已完结)_第11张图片
10.使用 Apache 服务部署静态网站(已完结)_第12张图片
10.使用 Apache 服务部署静态网站(已完结)_第13张图片

10.使用 Apache 服务部署静态网站(已完结)_第14张图片

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

 mkdir -p /home/wwwroot/10
 mkdir -p /home/wwwroot/20
 mkdir -p /home/wwwroot/30
 echo "IP:192.168.10.10" > /home/wwwroot/10/index.html
 echo "IP:192.168.10.20" > /home/wwwroot/20/index.html
 echo "IP:192.168.10.30" > /home/wwwroot/30/index.html

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

vim +132 /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.10.10>
     DocumentRoot /home/wwwroot/10
     ServerName www.linuxprobe.com
     <Directory /home/wwwroot/10>
     AllowOverride None
     Require all granted
	</Directory>
</VirtualHost>
<VirtualHost 192.168.10.20>
     DocumentRoot /home/wwwroot/20
     ServerName www.linuxcool.com
     <Directory /home/wwwroot/20>
     AllowOverride None
     Require all granted
     </Directory>
</VirtualHost>
<VirtualHost 192.168.10.30>
     DocumentRoot /home/wwwroot/30
     ServerName www.linuxdown.com
     <Directory /home/wwwroot/30>
     AllowOverride None
     Require all granted
     </Directory>
</VirtualHost>

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

 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*
 restorecon -Rv /home/wwwroot
firefox

10.使用 Apache 服务部署静态网站(已完结)_第15张图片

基于主机域名

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

cat <<EOF >> /etc/hosts
192.168.10.10   www.linuxprobe.com www.linuxcool.com www.linuxdown.com
EOF
ping -c 4 www.linuxprobe.com

10.使用 Apache 服务部署静态网站(已完结)_第16张图片
第2步:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便稍后能更直观地检查效果。

 mkdir -p /home/wwwroot/linuxprobe
 mkdir -p /home/wwwroot/linuxcool
 mkdir -p /home/wwwroot/linuxdown
 echo "www.linuxprobe.com" > /home/wwwroot/linuxprobe/index.html
 echo "www.linuxcool.com" > /home/wwwroot/linuxcool/index.html
 echo "www.linuxdown.com" > /home/wwwroot/linuxdown/index.html

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

vim /etc/httpd/conf/httpd.conf

132 <VirtualHost 192.168.10.10>
133     Documentroot /home/wwwroot/linuxprobe
134     ServerName www.linuxprobe.com
135     <Directory /home/wwwroot/linuxprobe>
136     AllowOverride None
137     Require all granted
138     </Directory>
139 </VirtualHost>
 
140 <VirtualHost 192.168.10.10>
141     Documentroot /home/wwwroot/linuxcool
142     ServerName www.linuxcool.com
143     <Directory /home/wwwroot/linuxcool>
144     AllowOverride None
145     Require all granted
146     </Directory>
147 </VirtualHost>
 
148 <VirtualHost 192.168.10.10>
149     Documentroot /home/wwwroot/linuxdown
150     ServerName www.linuxdown.com
151     <Directory /home/wwwroot/linuxdown>
152     AllowOverride None
153     Require all granted
154     </Directory>
155 </VirtualHost>

基于端口号

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

mkdir -p /home/wwwroot/6111
mkdir -p /home/wwwroot/6222
mkdir -p /home/wwwroot/6333
echo "port:6111" > /home/wwwroot/6111/index.html
echo "port:6222" > /home/wwwroot/6222/index.html
echo "port:6333" > /home/wwwroot/6333/index.html

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

vim /etc/httpd/conf/httpd.conf 
 45 Listen 80
 46 Listen 6111
 47 Listen 6222
 48 Listen 6333

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

vim /etc/httpd/conf/httpd.conf
134 <VirtualHost 192.168.10.10:6111>
135     DocumentRoot /home/wwwroot/6111
136     ServerName www.linuxprobe.com
137     <Directory /home/wwwroot/6111>
138     AllowOverride None
139     Require all granted
140     </Directory> 
141 </VirtualHost>

142 <VirtualHost 192.168.10.10:6222>
143     DocumentRoot /home/wwwroot/6222
144     ServerName www.linuxcool.com
145     <Directory /home/wwwroot/6222>
146     AllowOverride None
147     Require all granted
148     </Directory>
149 </VirtualHost>

150 <VirtualHost 192.168.10.10:6333>
151     DocumentRoot /home/wwwroot/6333
152     ServerName www.linuxdown.com
153     <Directory /home/wwwroot/6333>
154     AllowOverride None
155     Require all granted
156     </Directory>
157 </VirtualHost>

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

semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6333
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6333/*
restorecon -Rv /home/wwwroot/

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

semanage port -a -t http_port_t -p tcp 6111
semanage port -a -t http_port_t -p tcp 6222
semanage port -a -t http_port_t -p tcp 6333
systemctl restart httpd
firefox

10.使用 Apache 服务部署静态网站(已完结)_第17张图片

Apache的访问控制

第1步:先在服务器上的网站数据目录中新建一个子目录,并在这个子目录中创建一个包含Successful单词的首页文件。

mkdir /var/www/html/server
echo "Successful" > /var/www/html/server/index.html

第2步:打开httpd服务的配置文件,在第161行后面添加下述规则来限制源主机的访问。这段规则的含义是允许使用Firefox浏览器的主机访问服务器上的首页文件,除此之外的所有请求都将被拒绝。

vim /etc/httpd/conf/httpd.conf
161 <Directory "/var/www/html/server">
162     SetEnvIf User-Agent "Firefox" ff=1
163     Order allow,deny
164     Allow from env=ff
165 </Directory>
systemctl restart httpd
firefox
# 再用其他浏览器试一试

在这里插入图片描述
在这里插入图片描述
第3步:除了匹配源主机的浏览器特征之外,还可以通过匹配源主机的IP地址进行访问控制。我们只允许IP地址为192.168.10.20的主机访问网站资源,那么就可以在httpd服务配置文件的第161行后面添加下述规则。这样在重启httpd服务程序后再用本机(即服务器,其IP地址为192.168.10.10)来访问网站的首页面时就会提示访问被拒绝了

vim /etc/httpd/conf/httpd.conf
161 <Directory "/var/www/html/server">
162     Order allow,deny 
163     Allow from 192.168.10.20
164 </Directory>
………………省略部分输出信息………………
systemctl restart httpd
firefox

10.使用 Apache 服务部署静态网站(已完结)_第18张图片

如果主机想访问虚拟机的httpd页面(可选操作)

添加一块net网卡
编辑==》虚拟网络编辑器
10.使用 Apache 服务部署静态网站(已完结)_第19张图片
10.使用 Apache 服务部署静态网站(已完结)_第20张图片
,找到这个虚拟机使用的NET网卡
打开NAT setting,nat设置,添加,设置端口就好了
10.使用 Apache 服务部署静态网站(已完结)_第21张图片

添加一个端口映射,我们将主机988端口映射成虚拟机80端口
10.使用 Apache 服务部署静态网站(已完结)_第22张图片

10.使用 Apache 服务部署静态网站(已完结)_第23张图片
最后记得按“应用+确定”

10.使用 Apache 服务部署静态网站(已完结)_第24张图片
主机浏览器访问虚拟机搭建的httpd的时候输入ip就OK

systemctl stop firewalld
# 暂时关闭防火墙,重启防火墙或者重启系统都会再次开启防火墙

在这里插入图片描述

你可能感兴趣的:(《liunx就该这么学》,linux)