使用Apache服务部署静态网站

本文介绍了如何使用Apache服务部署静态网站,详细解析了Apache服务的配置,包括DocumentRoot参数设置、SELinux安全子系统的影响以及如何处理权限问题。通过修改配置文件和管理SELinux策略,确保网站服务的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网站服务程序

我们平时访问的网站服务就是Web网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务。如图所示,Web网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的Web服务器会通过HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户。
在这里插入图片描述
目前能够提供Web网络服务的程序有IIS、Nginx和Apache等。其中,IIS(Internet Information Services,互联网信息服务)是Windows系统中默认的Web服务程序,这是一款图形化的网站管理工具,不仅可以提供Web网站服务,还可以提供FTP、NMTP、SMTP等服务。但是,IIS只能在Windows系统中使用。

部署Apache程序:

yum install httpd         #安装Apache服务程序(Apache服务的软件包名为httpd)
systemctl start httpd     #启用httpd服务
systemctl enable httpd    #加入开机启动项

用浏览器访问:127.0.0.1(本机)可以看到httpd服务程序的默认页面,当看到这个页面时,说明服务程序正常启动,但可能还会有另外两种情况

1.权限不足
2.网站内没有数据

在这里插入图片描述

配置服务文件参数

在Linux系统中配置服务,其实就是修改服务的配置文件,因此,还需要知道这些配置文件的所在位置以及用途,httpd服务程序的主要配置文件及存放位置如表所示。

服务目录 	     /etc/httpd
主配置文件 	     /etc/httpd/conf/httpd.conf
网站数据目录 	 /var/www/html
访问日志 	     /var/log/httpd/access_log
错误日志     	 /var/log/httpd/error_log

打开httpd服务程序的主配置文件,可能会吓一跳—竟然有353行!但是,因为在这个配置文件中,所有以井号(#)开始的行都是注释行,其目的是对httpd服务程序的功能或某一行参数进行介绍,不需要逐行研究这些内容。

在httpd服务程序的主配置文件中,存在三种类型的信息:注释行信息、全局配置、区域配置,如图所示。

httpd服务程序的主配置文件的构成

全局配置参数与区域配置参数的区别:

全局配置:一种全局性的配置参数,可作用于对所有的子站点,既保证了子站点的正常访问,也有效减少了频繁写入重复参数的工作量。
区域配置:单独针对于每个独立的子站点进行设置

在httpd服务程序主配置文件中,最为常用的参数如图所示。
在这里插入图片描述
从上图中可知,DocumentRoot参数用于定义网站数据的保存路径,其参数的默认值是把网站数据存放到/var/www/html目录中;而当前网站普遍的首页面名称是index.html,因此可以向/var/www/html目录中写入一个文件,替换掉httpd服务程序的默认首页面,该操作会立即生效。

实例:修改保存网站数据的目录。

#1.建立新的网站数据保存目录,并创建首页文件。
mkdir /home/wwwroot
echo "hello" > /home/wwwroot/index.html
#2.修改httpd服务程序主配置文件,把网站数据保存路径修改为/home/wwwroot
vim /etc/httpd/conf/httpd.conf
...
119 DocumentRoot "/home/wwwroot"    #用于定义网站数据保存路径的参数DocumentRoot修改为/home/wwwroot
...
124 <Directory "home/wwwroot">      #用于定义目录权限的参数Directory后面的路径也修改为/home/wwwroot
...
128 </Directory>
...
#3.重启httpd服务验证效果,此时会发现因为权限不足导致出现的是httpd默认首页(SElinux的安全上下文).
systemctl restart httpd
#4.暂时禁用SElinux,发现可以看到正常的网页内容了。
setenforce 0

SELinux安全子系统

SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。RHEL 7系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。

“SELinux域”和“SELinux安全上下文”称为是Linux系统中的双保险,系统内的服务程序只能规规矩矩地拿到自己所应该获取的资源,这样即便黑客入侵了系统,也无法利用系统内的服务程序进行越权操作。但是,非常可惜的是,SELinux服务比较复杂,配置难度也很大,加之很多运维人员对这项技术理解不深,从而导致很多服务器在部署好Linux系统后直接将SELinux禁用了;这绝对不是明智的选择。

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

enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
permissive:遇到服务越权访问时,只发出警告而不强制拦截。
disabled:对于越权的行为不警告也不拦截。

虽然在禁用SELinux服务后确实能够减少报错几率,但这在生产环境中相当不推荐。

SELinux服务的主配置文件中,定义的是SELinux的默认运行状态,可以将其理解为系统重启后的状态,因此它不会在更改后立即生效。可以使用getenforce命令获得当前SELinux服务的运行模式:

[root@linuxprobe ~]# getenforce 
Enforcing

getenforce:查看当前SELinxu服务的运行模式

setenforce [0|1]:修改SELinux当前的运行模式(0禁用,1启用)。此修改是临时的,在系统重启后就会失效。

分析上面实例被SELinux拦截的原因:

httpd服务程序的功能是允许用户访问网站内容,因此SELinux会默认放行用户对网站的请求操作。但是,/home目录是用来存放普通用户的家目录数据的,而将网站数据的默认保存目录修改为了/home/wwwroot,导致httpd提供的网站服务要去获取普通用户家目录中的数据,这显然违反SELinux的监管原则。

semanage命令:用于管理SELinux的策略,格式:semanage [选项] [文件]。

semanage命令不仅能够像传统chcon命令那样—设置文件、目录的策略,还可以管理网络端口、消息接口。常用参数:

-l:用于查询;
-a:用于添加;
-m:用于修改;
-d:用于删除;
-t:指定要想修改的值。

semanage命令没有递归功能,因此要先修改目录的安全上下文,再修改目录里所有文件的安全上下文。另外semanage命令修改好的配置不会立即生效。

restorecon命令:将设置好的SELinux安全上下文立即生效。格式: restorecon [选项] [指定目录或文件]。

常用参数:

-R:对指定目录进行递归操作
-v:显示SELinux安全上下文的修改过程
实例:解决上面实例被SELinux拦截的问题。

#1.把SELinux服务恢复到强制启用安全策略模式
setenforce 1
#2.分别查看原始网站数据的保存目录与当前网站数据的保存目录的SELinux安全上下文值
ls -Zd /var/www/html    #SElinux安全上下文为httpd_sys_content_t
ls -Zd /home/wwwroot    #SELinux安全上下文为home_root_t
#3.把当前网站数据保存目录的安全上下文设置成和原始网站数据保存目录的安全上下文一样
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot      #修改目录的安全上下文
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*    #修改目录里的所有文件的安全上下文
#4.使设置好的SELinux安全上下文立即生效
restorecon -Rv /home/wwwroot/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值