Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
Apache服务程序部署
第一步:把光盘设备中的系统镜像挂载到/media/cdrom目录
[root@localhost ~]# ls /media/cdrom
ls: 无法访问/media/cdrom: 没有那个文件或目录
[root@localhost ~]# mkdir -p /media/cdrom
[root@localhost ~]# cd /media 参看目录是否创建成功
[root@localhost media]# ls
cdrom
[root@localhost media]# cd --
[root@localhost ~]# mount /dev/cdrom /media/cdrom 挂载目录
mount: /dev/sr0 写保护,将以只读方式挂载
第二步:创建Yum仓库的配置文件
[root@localhost ~]# vim /etc/yum.repos.d/Centos7.repo
[centos7]
name=centos7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
第三步:安装Apache服务程序
注意,使用yum命令进行安装时,跟在命令后面的Apache服务的软件包名称为httpd,如果直接执行yum install apache命令,则系统会报错。
[root@localhost ~]# yum install httpd -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
centos7 | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/4): centos7/group_gz | 153 kB 00:00:00
(2/4): centos7/primary_db | 3.3 MB 00:00:00
(3/4): epel/x86_64/updateinfo | 1.0 MB 00:00:01
(4/4): epel/x86_64/primary_db | 6.9 MB 00:00:04
省略部分安装信息
已安装:
httpd.x86_64 0:2.4.6-97.el7.centos
作为依赖被安装:
httpd-tools.x86_64 0:2.4.6-97.el7.centos mailcap.noarch 0:2.1.41-2.el7
完毕!
[root@localhost ~]#
第四步:启用httpd服务程序并将其加入到开机启动项中,使其能够随系统开机而运行,从而持续为用户提供Web服务
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
在浏览器(以Firefox浏览器为例,且是在Linux系统下的浏览器)的地址栏中输入http://127.0.0.1并按回车键,就可以看到用于提供Web服务的httpd服务程序的默认页面了,如下图所示。
第五步:配置服务文件参数
打开httpd服务程序的主配置文件,所有以井号(#)开始的行都是注释行,其目的是对httpd服务程序的功能或某一行参数进行介绍,我们不需要研究这些内容。这里主要研究全局配置参数与区域配置参数的区别。顾名思义,全局配置参数就是一种全局性的配置参数,可作用于对所有的子站点,既保证了子站点的正常访问,也有效减少了频繁写入重复参数的工作量。区域配置参数则是单独针对于每个独立的子站点进行设置的。
Apache服务中DocumentRoot参数用于定义网站数据的保存路径,其参数的默认值是把网站数据存放到/var/www/html目录中;而当前网站普遍的首页面名称是index.html,因此可以向/var/www/html目录中写入一个文件,替换掉httpd服务程序的默认首页面,该操作会立即生效。
[root@localhost ~]# echo "Welcome To LinuxProbe.Com" > /var/www/html/index.html
在执行上述操作之后,再在Firefox浏览器中刷新httpd服务程序,可以看到该程序的首页面内容已经发生了改变,如图所示。
第六步:建立网站数据的保存目录,并创建首页文件。
[root@localhost ~]# mkdir /home/wwwroot
[root@localhost ~]# echo "The New Web Directory" > /home/wwwroot/index.html
第七步:修改httpd服务程序的主配置文件。
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
将约第119行用于定义网站数据保存路径的参数DocumentRoot修改为/home/wwwroot,同时还需要将约第124行用于定义目录权限的参数Directory后面的路径也修改为/home/wwwroot。修改完见下图。
第八步:重新启动httpd服务程序并验证效果。
浏览器刷新页面后的内容如下图所示所示。按理来说,网页上应该显示的是The New Web Directory,而出现下图情况,与SELinux有关。
SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。SELinux服务有三种配置模式,具体如下。
enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
permissive:遇到服务越权访问时,只发出警告而不强制拦截。
disabled:对于越权的行为不警告也不拦截。
第九步:查看SELinux服务主配置文件中定义的默认状态。
如果是permissive或disabled,建议修改为enforcing。
[root@localhost ~]# vim /etc/selinux/config
第十步:重启虚拟机,并获取当前SELinux服务的运行模式,然后刷新网页,查看效果。
SELinux服务主配置文件中,定义的是SELinux的默认运行状态。配置文件修改完成后,重启虚拟机。再使用getenforce命令获得当前SELinux服务的运行模式:
[root@localhost ~]# getenforce
Enforcing
为了确认刷新网页后出现 "You don‘t have permission to access /index.html on this server"的结果是由SELinux引起的的,可以用setenforce [0|1]命令修改SELinux当前的运行模式(0为禁用,1为启用)。
注意,这种修改只是临时的,在系统重启后就会失效。
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
重新刷新网页,如下图所示,网页上显示的内容是我们想要的内容,由此证明前面的问题确实与SELinux服务有关。
通过实验发现,之所以出现这种问题,是因为我们将网站默认存放数据的目录做了修改,不符合SELinux的监管原则,所以导致访问网页时出错。接下来把SELinux服务恢复到强制启用安全策略模式,然后分别查看原始网站数据的保存目录与当前网站数据的保存目录是否拥有不同的SELinux安全上下文值。
[root@localhost ~]# setenforce 1
[root@localhost ~]# ls -Zd /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
[root@localhost ~]# ls -Zd /home/wwwroot
drwxr-xr-x. root root system_u:object_r:user_home_dir_t:s0 /home/wwwroot
在此情况下,使用semanage命令,将当前网站目录/home/wwwroot的SELinux安全上下文修改为跟原始网站目录的一样就可以OK了。
semanage命令
semanage命令用于管理SELinux的策略,格式为“semanage [选项] [文件]”。
SELinux服务极大地提升了Linux系统的安全性,将用户权限牢牢地锁在笼子里。经常以下的参数
-l参数用于查询; -a参数用于添加; -m参数用于修改; -d参数用于删除
第十一步:向新的网站数据目录中新添加一条SELinux安全上下文,让此目录以及里面的所有文件能够被httpd服务程序所访问
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*
第十二步:使SELinux安全上下文生效(要对指定目录进行递归操作),重新刷新页面
执行完上述操作,无法立即访问网站,需要使用restorecon命令将设置好的SELinux安全上下文立即生效。
使用restorecon命令时,可以加上-Rv参数对指定的目录进行递归操作,以及显示SELinux安全上下文的修改过程。
[root@localhost ~]# restorecon -Rv /home/wwwroot/
restorecon reset /home/wwwroot context system_u:object_r:user_home_dir_t:s0->system_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/index.html context system_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0
再次刷新页面,即可看到正常网页内容。
Apache到这里就基本配置完成了。还可以设置登录用户及密码,详细信息请阅读利用Apache部署静态网站(二)