搭建网站

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

对比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. Perl 学习笔记-子程序

    1.定义子程序 使用sub关键字定义 ;   子程序名和标识符同要求, 但是有的特殊的可以用 &符号;  子程序是全局的, 不需要再使用前声明;  重名函数后者覆盖前者. sub roger{ ...

  2. [GO]结构体指针变量初始化

    package main import "fmt" func main() { type student struct { id int name string sex byte ...

  3. exp,expdb,imp,impdb的使用

    1.使用expdp要先在数据库中创建directory,并给相应的用户read,write权限. SQL>create dexp和empdp的区别irectory dmpdir as ‘/u01 ...

  4. Ceph介绍

    1. 介绍 云硬盘是IaaS云平台的重要组成部分,云硬盘给虚拟机提供了持久的块存储设备.目前的AWS 的EBS(Elastic Block store)给Amazon的EC2实例提供了高可用高可靠的块 ...

  5. java上转型之instanceof--避免引用类型强制转化出错

    Object obj="hello"; 上面的obj是什么类型? object?NO!String?NO? 答案:编译阶段是Object类型,而在运行阶段是String类型.实际上 ...

  6. oracle中的表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)

    数据文件和日志文件是数据库中最重要的文件.它们是数据存储的地方.每个数据库至少有一个与之相关的数据文件,通常情况下不只一个,有很多.数据在数据文件中是如何组织的?要了解这些内容我们首先必须理解什么是表 ...

  7. CKEditor4.x整合教程-Xproer.WordPaster

    版权所有 2009-2017 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webplug/wordpa ...

  8. 跟我学习css3之transition

    HTML5和css3已经是将来的发展趋势,现在有很多移动端还有一些游戏公司已然使用它们开 发了比较成功的产品.我在2011年的时候也跟着技术潮流初浅的学习了html5+css3.毕竟那 时候我没有把学 ...

  9. C#:几种数据库的大数据批量插入 - faib

    在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ...

  10. NIOS II下基于中断的UART接收和发送设计示例代码

    #include "sys/alt_stdio.h" #include "altera_avalon_uart_regs.h" #include "s ...