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部署静态网站(二)



利用Apache部署静态网站(一)的更多相关文章

  1. 利用Apache部署静态网站(二)

    本文接着<利用Apache部署静态网站(一)>继续部署,为系统中的每位用户创建一个独立的网站. httpd服务程序提供的个人用户主页功能可以为每位用户创建一个独立的网站.该功能可以让系统内 ...

  2. 使用Nginx部署静态网站

    这篇文章将介绍如何利用Nginx部署静态网站. 之前写过2篇有关Nginx的文章,一篇是<利用nginx,腾讯云免费证书制作https>,另外一篇是<linux安装nginx> ...

  3. 《Linux就该这么学》培训笔记_ch10_使用Apache服务部署静态网站

    <Linux就该这么学>培训笔记_ch10_使用Apache服务部署静态网站 文章最后会post上书本的笔记照片. 文章主要内容: 网站服务程序 配置服务文件参数 SELinux安全子系统 ...

  4. Linux下Apache服务部署静态网站------网站服务程序

    文章链接(我的CSDN博客): Linux下Apache服务部署静态网站------网站服务程序

  5. 使用Apache服务部署静态网站2019-7-5

    使用Apache服务部署静态网站 第1步:把镜像挂载到系统中 第2步:使用vim文件编辑器创建YUM仓库的配置文件 [root@study ~]# vim /etc/yum.repos.d/abc.r ...

  6. Docker 案例: 在容器中部署静态网站

    ----------------知识点------------ 容器的端口映射: docker  run  [-P] [-p] -P,–publish-all=true | false,大写的P表示为 ...

  7. 利用IIS部署WEB网站以及解决CSS/JS不能显示问题

    利用IIS部署WEB网站以及解决CSS/JS不能显示问题 转载声明:http://blog.sina.com.cn/s/blog_a001e5980101b4kt.html vs中正常IIS发布网站后 ...

  8. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken

    前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...

  9. Docker 在容器中部署静态网站

    Docker 在容器中部署静态网站 在容器中部署静态网站 设置容器的端口映射 run -P``--publish-all=true|false:容器暴露的所有端口进行映射 -p``--publish= ...

随机推荐

  1. Java I/O流 05

    I/O流·文件递归 统计该文件夹的大小 * 需求:从键盘就收一个文件夹路径,统计该文件夹的大小 package com.heima.test; import java.io.File; import ...

  2. 通达OA任意文件上传+文件包含GetShell/包含日志文件Getshell

    0x01 简介 通达OA采用基于WEB的企业计算,主HTTP服务器采用了世界上最先进的Apache服务器,性能稳定可靠.数据存取集中控制,避免了数据泄漏的可能.提供数据备份工具,保护系统数据安全.多级 ...

  3. SVN同步方式举例 ​​​​ FreeBSD

    FreeBSD base  默认安装了svnlite 不需要单独安装SVN 软件 svnlite co svn.freebsd.org/ports/head/ /usr/local/ports -r5 ...

  4. Python基础(1)——变量和数据类型[xiaoshun]

    目录 一.变量 1.概述 Variables are used to store information to be referenced(引用)and manipulated(操作) in a co ...

  5. 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)

    完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...

  6. javascript中的Strict模式

    目录 简介 使用Strict mode strict mode的新特性 强制抛出异常 简化变量的使用 简化arguments 让javascript变得更加安全 保留关键字和function的位置 总 ...

  7. Webpack 学习笔记(1) 开始

    目录 参考资料 1. 基础设定 2. 创建一个包 3. 使用配置文件完成打包命令 4. 使用 NPM Scripts 完成打包命令 参考资料 Getting Started | Webpack web ...

  8. .Net5 下Dictionary 为什么可以在foreach中Remove

    在一个讨论群里,看见有人说Dictionary可以在foreach中直接调用Remove了,带着疑问,写了简单代码进行尝试 class Program { static void Main(strin ...

  9. [差分][二分][贪心]luogu P3634 [APIO2012]守卫

    题面 https://www.luogu.com.cn/problem/P3634 给m个限制,可以是一段区间中必须有或者必须无忍者 最多有k个忍者,问有多少个位点一定有忍者 分析 首先用差分标记一下 ...

  10. 【vue开发】watch中的immediate与deep的使用

    下面是我对于immediate与deep的理解 1.immediate 设置immediate为true后,监听会在被监听值初始化的时候就开始,也就页面上的数据还未变化的时候. 经过测试发现,如果监听 ...