利用Apache部署静态网站(一)
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部署静态网站(一)的更多相关文章
- 利用Apache部署静态网站(二)
本文接着<利用Apache部署静态网站(一)>继续部署,为系统中的每位用户创建一个独立的网站. httpd服务程序提供的个人用户主页功能可以为每位用户创建一个独立的网站.该功能可以让系统内 ...
- 使用Nginx部署静态网站
这篇文章将介绍如何利用Nginx部署静态网站. 之前写过2篇有关Nginx的文章,一篇是<利用nginx,腾讯云免费证书制作https>,另外一篇是<linux安装nginx> ...
- 《Linux就该这么学》培训笔记_ch10_使用Apache服务部署静态网站
<Linux就该这么学>培训笔记_ch10_使用Apache服务部署静态网站 文章最后会post上书本的笔记照片. 文章主要内容: 网站服务程序 配置服务文件参数 SELinux安全子系统 ...
- Linux下Apache服务部署静态网站------网站服务程序
文章链接(我的CSDN博客): Linux下Apache服务部署静态网站------网站服务程序
- 使用Apache服务部署静态网站2019-7-5
使用Apache服务部署静态网站 第1步:把镜像挂载到系统中 第2步:使用vim文件编辑器创建YUM仓库的配置文件 [root@study ~]# vim /etc/yum.repos.d/abc.r ...
- Docker 案例: 在容器中部署静态网站
----------------知识点------------ 容器的端口映射: docker run [-P] [-p] -P,–publish-all=true | false,大写的P表示为 ...
- 利用IIS部署WEB网站以及解决CSS/JS不能显示问题
利用IIS部署WEB网站以及解决CSS/JS不能显示问题 转载声明:http://blog.sina.com.cn/s/blog_a001e5980101b4kt.html vs中正常IIS发布网站后 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...
- Docker 在容器中部署静态网站
Docker 在容器中部署静态网站 在容器中部署静态网站 设置容器的端口映射 run -P``--publish-all=true|false:容器暴露的所有端口进行映射 -p``--publish= ...
随机推荐
- Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习
一 使用环境: windows 7 64位操作系统 二 IDE:VSCode/PyCharm 三 Vue.js官网: https://cn.vuejs.org/ 四 下载安装引用 方式1:直接 ...
- Mysql训练:第二高的薪水(IFNULL,OFFSET,LIMIT)
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...
- 一文了解Python的迭代器的实现
本文对迭代器的解释参考自:https://www.programiz.com/python-programming/iterator 最后自己使用迭代器实现一个公平洗牌类. 博主认为,理论来自实践,假 ...
- java 基础语法学习
kuangstudy 注释 单行注释 多行注释 文档注释 public class HelloWorld { public static void main(String[] args) { //单行 ...
- Spring的IOC常用注解(含源码)
一.容器中注入组件 1,包扫描 + 组件标注注解 源码:Demo01_ComponentScan a)组件标注 @Controller @Service @Repository @Component ...
- windows下MySQL如何完全卸载并安装行的版本
卸载本地mysql之前,请务必要先将需要的数据库备份 停止mysql 服务 windows键-->搜索服务 找到mysql 服务,并停止他 卸载mysql server 在控制面板--程序 找到 ...
- 使用代码生成工具快速开发ABP框架项目
在一般系统开发中,我们一般要借助于高度定制化的代码生成工具,用于统一代码风,节省开发时间,提高开发效率.不同的项目,它的项目不同分层的基类定义不同,我们需要在框架基类的基础上扩展我们的业务类代码,尽量 ...
- 三分钟教你提升应用推送的ROI
推送是App应用性价比最高也是最直接的营销运营手段,其细节颇多,非常考验运营人员的功力,本文将从ROI角度来分析怎么提升营销类推送的收益.(非IM类.系统类等功能服务型推送) 以一个日活100万的应用 ...
- Java 树结构实际应用 二(哈夫曼树和哈夫曼编码)
赫夫曼树 1 基本介绍 1) 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为 最优二叉树,也称为哈夫曼树(Huffman Tree), ...
- Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架
目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...