搭建网站

网站服务:让用户能够通过浏览器访问到的服务器上的文档资源。

对比Windows 和Linux部署服务方法对比

Windows:IIS

Linux      :Apache ,nginx

Apache优势:1.老牌程序,市场所认可

2.安全、稳定、效率、功能模块化

3.红帽RHCE从5到7系统一直在考。

nginx的优势:1.使用较少的资源实现很高的并发性。(比如说吃的少,干活多)

下面我们再回忆一下配置yum仓库。

三个步骤

1.挂载系统光盘

2.配置yum仓库文件

3.yum install 软件包名称

这里我们要说一下,Apache的服务名称和软件名称叫httpd而不是Apache.

我们新建一个挂载目录,然后去将系统光盘挂载到挂载目录。

别忘了写入fstab文件。vim /etc/fstab

这里就不做解释了,前面有。

然后我们在/etc/yum.repos.d目录里面创建一个文件,名称随便。再解释一下这些参数的作用。

[  ]里面是yum仓库名称,name是名称。baseurl 是挂载目录。enabled是是否启用yum仓库,1启用,0不。gpgcheck是否校验我们yun仓库,我们选择不,这样可以加快速度。

接下来我们yum install httpd下载Apache安装包进行安装。

成功之后我们重启下服务,然后并且给他加入到启动项里面。

这时候我们打开自带的火狐浏览器然后输入本机IP可以看到这个界面。

当我们看到这个页面是说明有下面两个可能性

1.网站内没有数据

2.权限不足

网站目录:/var/www/html

网站首页文件:index.html

然后我们先进入/var/www/html目录,发现文件是空的。

然后我们将lao ji zhen shuai 这句话导入到index.html文件中。然后我们去刷新一下页面。

看到了吧

下面说一下步骤:

1.安装网站服务

2.网站目录内写入首页文件(index.html)

httpd在Linux系统中的配置文件

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

修改httpd服务的配置文件

Linux系统中的一切都是文件

配置服务就是在修改服务的配置文件

一般情况下需要重启对应的服务才能够获取最新参数(修改完配置文件后新的参数)

顺手将服务加入到开机启动项

配置文件分为主配置文件和一般配置文件。

主配置文件:保存最重要的配置参数。

找主配置文件的小技巧:他一般在/etc/服务名称/服务名称.conf

一般配置文件:保存的是其他的配置参数。

这个就是我们httpd服务的主配置文件了

打开后我的天哪353行,但是仔细一看都是注释,别怕。

配置httpd服务程序时最常用的参数以及用途描述

ServerRoot 服务目录
ServerAdmin 管理员邮箱
User 运行服务的用户
Group 运行服务的用户组
ServerName 网站服务器的域名
DocumentRoot 网站数据目录
Listen 监听的IP地址与端口号
DirectoryIndex 默认的索引页页面
ErrorLog 错误日志文件
CustomLog 访问日志文件
Timeout 网页超时时间,默认为300秒

我们对应修改一些参数

我们修改这两个参数,我们将里面的参数由/var/www/html修改为/home/wwwroot目录

重启服务报错,是因为我打错了,而且我也没创建那个文件夹,创建之后再重启就好了。别忘了加启动项。

然后我们进入我们创建修改的目录然后刷新一下网页。

会变成这样。

这里又要说一下,出现这样的情况可能说明

1.网站内没有数据

2.权限不足

你们可能忘了,刚才我们页面可是lao ji hen shuai

然后我们往index.html里面加东西。

这时候我们刷新页面发现,居然没变,那么这时候就是我们的权限不足,这里说的权限可不是我们的rwx,而是SELinux.

这里说一下SELinux,他是安全子系统,它是由美国安全局研发出来的,其中还有Linux社区也是。

SELinux安全子系统

让服务程序规规矩矩的只去获取自己应该获取的文件。

下面我们介绍一下这个系统。

他有两个保护机制

1.SELinux域               :管理服务的功能

2.SELinux安全上下文 :管理文件,让只有某个服务程序才可以获取。

我们刚才把/var/www/html换成了/home/wwwroot,那么在我们系统中home这个目录是干嘛用的,他应该保存的是我们用户家目录的一个信息。当你访问的话上下文给我们就做了限制。

然后我们看一下这个服务是否开启了,他有3个模式,然后我们编辑一下他的配置文件

enforcing:强制启用安全策略模式,将拦截服务的不合法请求。(强制开启)

permissive:遇到服务越权访问时,只发出警告而不强制拦截。(警告不限制)

disabled:对于越权的行为不警告也不拦截。(禁止SELinux)

我们用getenforce查看我们当前SELinux状态

setenforce 设置当前的SELinux状态       setenforce 0是临时关闭      setenforce 1临时开启

我们怀疑是不是她给我们捣乱让我们查看不了网页内容,执行一下临时关闭。再刷新一下

看来是了。

安全上下文的值这么查看ls -ldZ /var/www/html  我们查看一下var目录和home目录值有什么不一样

在文件上设置的SELinux安全上下文是由用户段、角色段以及类型段等多个信息项共同组成的。其中,用户段system_u代表系统进程的身份,角色段object_r代表文件目录的角色,类型段httpd_sys_content_t代表网站服务的系统文件。

httpd_sys-content  这个是网站的系统文件的意思

home_root_t          是用户的家目录

所以说是这个SELinux上下文他导致我们不能获取到这个文件的。

针对当前这种情况,我们只需要使用semanage命令,将当前网站目录/home/wwwroot的SELinux安全上下文修改为跟原始网站目录的一样就可以了。

那我们怎么修改这个值呢。

我们用semanage fcontext 这个命令可以修改上下文。

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

SELinux服务极大地提升了Linux系统的安全性,将用户权限牢牢地锁在笼子里。semanage命令不仅能够像传统chcon命令那样—设置文件、目录的策略,还可以管理网络端口、消息接口(这些新特性将在本章后文中涵盖)。使用semanage命令时,经常用到的几个参数及其功能如下所示:

-l参数用于查询;

-a参数用于添加;

-m参数用于修改;

-d参数用于删除。

例如,可以向新的网站数据目录中新添加一条SELinux安全上下文,让这个目录以及里面的所有文件能够被httpd服务程序所访问到:

但是我们执行完之后发现还是不行,记住我们现在是SELinux是打开状态

还需要使用restorecon命令将设置好的SELinux安全上下文立即生效。在使用restorecon命令时,可以加上-Rv参数对指定的目录进行递归操作,以及显示SELinux安全上下文的修改过程。最后,再次刷新页面,就可以正常看到网页内容了

restorecon  翻译是恢复的意思,但是在这里不太准确,我们这里应该是让新设置的SELinux的值立即生效的意思。

-R是对于我们的目录来进行操作,v是显示出来一个过程,然后home目录,wwwroot子目录。

真可谓是一波三折!原本认为只要把httpd服务程序配置妥当就可以大功告成,结果却反复受到了SELinux安全上下文的限制。所以,建议大家在配置httpd服务程序时,一定要细心、耐心。一旦成功配妥httpd服务程序之后,就会发现SELinux服务并没有那么难。

SELinux域:管理服务的功能、姓名

SELinux安全上下文:管理具体的文件,让指定的服务才能获取。

个人用户主页功能

Linux新手随手笔记1.9-使用Apache搭建网站的更多相关文章

  1. Linux新手随手笔记1.8

    配置网卡服务 将网卡的配置文件,保存成模板,叫做会话. nmcli命令查看网卡信息.nmcli是一款基于命令行的网络配置工具 只有一个网卡信息,下面我们再添加一个. 公司:静态IP地址 家庭:DHCP ...

  2. Linux新手随手笔记1.7

    配置网卡(本地电脑) Vment1   仅主机模式 Vment8   nat模式 物理机 : 192.16810.1  /255.255.255.0 服务器 : 192.168.10.10 /255. ...

  3. Linux新手随手笔记1.6

    RAID磁盘冗余阵列 1.I/O  速度 2.数据安全性  RAID 0 负载均衡.速度乘以二,但是数据安全性不行,任何一块盘损坏数据都会丢失. RAID 1 安全性性提升2倍,任何一个损坏另一个都有 ...

  4. Linux新手随手笔记1.5

    FHS Linux / 代表根目录 /root  管理员的家目录 /boot  启动引导文件,以及开机菜单都会保存在里面 /bin     保存我们系统中命令的目录,不止bin,只要带bin的比如sb ...

  5. Linux新手随手笔记1.4

    计划任务服务程序 计划任务 at  命令          一次性的 crond  服务   周期性的 23:29执行reboot命令(重启服务器) at -l      查看当前的计划任务 at  ...

  6. Linux新手随手笔记1.3

    shell脚本的编写(划重点) #!/bin/bash                    脚本的声明信息 #sjsjdhsjdhh                  脚本的注释 ls -l    ...

  7. Linux新手随手笔记1.2

    重定向 输入重定向:将命令输出结果写入一个文件或将一个文件内容导回到命令里面的这个过程叫做重定向 :标准(>) 输出重定向   :覆盖写入清空写入(>)/追加写入(>>) :错 ...

  8. Linux新手随手笔记1.1

    ifconfig   查询网卡信息 分别是网卡名称,物理IP地址,MAC地址,RX收到数据包大小,TX发送数据包大小 # uname # uname -a 查看内核版本号 # hostname 查看主 ...

  9. Linux新手随手笔记

    RPM通过将安装规则与源代码打包到一起,来降低软件的安装难度 yum 通过将大量的常用RPM软件存放在一起,解决软件包之间的依赖关系,进一步降低软件的安装难度 rhel 5\6 init rhel 7 ...

随机推荐

  1. Openssl errstr命令

    一.简介 errstr命令用于查询错误代码 二.语法 errstr [-stats] <errno> 选项 -stats:打印哈希表状态 errno:错误号 三.实例 1.查看错误信息 : ...

  2. 关于更新vs2017后发布的问题 命令“bower install”已退出,代码为 9009

    更新vs2017 尝试发布 出现  命令“bower install”已退出,代码为 9009 然后我点工具测试了一下nodejs 出现下图弹窗  百度了一下 没找到对策,有没有大侠知道怎么解决 解决 ...

  3. 迁移ORACLE数据库文件到ASM

    迁移数据文件到ASM 数据库一致性情况下迁移:将数据库启动到mount状态,生成rman copy 语句,然后在rman中执行: SQL> startup mount SQL> selec ...

  4. STL扩展容器

    string | array | hash 1. string - 可以视为以字符为元素的一种容器, 可以在字符上进行遍历, 提供begin()/end() - 为了支持迭代器和迭代器适配器 , st ...

  5. up7.1-asp.net-本地测试教程

    1.1. ASP.NET 框架:.NET Framework 4.5 依赖库:csredis,Newtonsoft.Json   安装redis 下载 redis-x64:http://pan.bai ...

  6. mybatis 存储过程调用

    接口 UserInfoMapper.java xml   UserInfoMapper.xml 如何关联 <?xml version="1.0" encoding=" ...

  7. 编写高质量代码改善C#程序的157个建议——建议148:不重复代码

    建议148:不重复代码 如果发现重复的代码,则意味着我们需要整顿一下,在继续前进. 重复的代码让我们的软件行为不一致.举例来说,如果存在两处相同的加密代码.结果在某一天,我们发现加密代码有个小Bug, ...

  8. 编写高质量代码改善C#程序的157个建议——建议107:区分静态类和单例

    建议107:区分静态类和单例 有一种观点认为:静态类可以作为单件模式的一种实现方式.事实上,这是不妥当的.按照传统的观点来看,单例是一个实例对象.而静态类并不满足这一点.静态类也直接违反面向对象三大特 ...

  9. VC6.0 如何显示代码行号

    VC6.0是一款比较经典.稳定的功能强大的IDE,目前也有很多人在使用.但美中不足的是它不能像其他IDE那样显示行号.这里需要用到一个插件VC6LineNumberAddin, 下载地址:http:/ ...

  10. Android-ListView-(BaseAdapter初步)

    在Android中就提供了专门列表显示条目的控件,ListView控件,ListView控件不是一次性加载全部数据,他是只加载用户在屏幕看得到的数据,当用户滑动的过程中在去加载新的数据,同时会自动销毁 ...