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. ElasticSearch 聚合分析

    公号:码农充电站pro 主页:https://codeshellme.github.io ES 中的聚合分析(Aggregations)是对数据的统计分析功能,它的优点是实时性较高,相比于 Hadoo ...

  2. TERSUS无代码开发(笔记08)-简单实例电脑端后台逻辑开发

    主管审批功能逻辑开发 1.查询逻辑开发(查询待审批记录) 2.批准处理(将选中的一条记录进行批准处理)  =============================================== ...

  3. vue:表单验证时,trigger的值什么时候选blur什么时候选change

    对el-input输入框的验证,trigger的值选blur,即失去焦点时进行验证. 下拉框(el-select).日期选择器(el-date-picker).复选框(el-checkbox).单选框 ...

  4. 文字链接Link

    效果展示: 代码展示: <el-table-column label="引流扫码人数" align="center"> <template s ...

  5. python进阶(6)深拷贝和浅拷贝

    深拷贝和浅拷贝 不管对于浅拷贝.还是深拷贝,针对不可变对象str.int.tuple(有点特殊).boolean,它的内存地址是不变的,拷贝的仅仅是值 import copy a = 1 b = co ...

  6. Tomcat 安装Manager

    sudo apt-get install tomcat8-admin tomcat8-docs tomcat8-examplessudo vi /etc/tomcat8/tomcat-users.xm ...

  7. 8.Vue组件三---slot插槽

    主要内容:  1. 什么是插槽 2. 组件的插槽 3. 插槽的使用方法 4. 插槽的具名 5. 变量的作用域 6. slot的作用域 一. 什么是插槽呢? 1. 生活中的插槽有哪些呢? usb插槽, ...

  8. 在windows上安装MySQL数据库注意点及Navicat Premium 15的破解

    在windows上安装MySQL数据库  跟随慕课网教程(http://www.imooc.com/wiki/mysqllesson/mysqlwindows.html)下载安装MySQL: 其中注意 ...

  9. roarctf_2019_realloc_magic

    目录 roarctf_2019_realloc_magic 总结 题目分析 checksec 函数分析 解题思路 初步解题思路 存在的问题 问题解决方案 最终解决思路 编写exp exp说明 roar ...

  10. golang——net/rpc/jsonrpc包学习

    1.jsonrpc包 该实现了JSON-RPC的ClientCodec和ServerCodec接口,可用于rpc包. 可用于跨语言使用go rpc服务. 2.常用方法 (1)func Dial(net ...