网站服务程序

我们平时访问的网站服务就是Web网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务。如图所示,Web网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的Web服务器会通过HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户。

目前能够提供Web网络服务的程序有IIS、Nginx和Apache等。其中,IIS(Internet Information Services,互联网信息服务)是Windows系统中默认的Web服务程序,这是一款图形化的网站管理工具,不仅可以提供Web网站服务,还可以提供FTP、NMTP、SMTP等服务。但是,IIS只能在Windows系统中使用。

部署Apache程序:

用浏览器访问:127.0.0.1(本机)可以看到httpd服务程序的默认页面,当看到这个页面时,说明服务程序正常启动,但可能还会有另外两种情况

1.权限不足
2.网站内没有数据

配置服务文件参数

在Linux系统中配置服务,其实就是修改服务的配置文件,因此,还需要知道这些配置文件的所在位置以及用途,httpd服务程序的主要配置文件及存放位置如表所示。

打开httpd服务程序的主配置文件,可能会吓一跳—竟然有353行!但是,因为在这个配置文件中,所有以井号(#)开始的行都是注释行,其目的是对httpd服务程序的功能或某一行参数进行介绍,不需要逐行研究这些内容。

在httpd服务程序的主配置文件中,存在三种类型的信息:注释行信息、全局配置、区域配置,如图所示。

httpd服务程序的主配置文件的构成

全局配置参数与区域配置参数的区别

全局配置:一中全局性的配置参数,可作用于所有的子站点,保证了子点正常访问,减少频繁写入的工作量

区域配置:单独针对每个独立的子站点进行设置。

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

从上图中可知,DocumentRoot参数用于定义网站数据的保存路径,其参数的默认值是把网站数据存放到/var/www/html目录中;而当前网站普遍的首页面名称是index.html,因此可以向/var/www/html目录中写入一个文件,替换掉httpd服务程序的默认首页面,该操作会立即生效。

实例:修改保存网站数据的目录

SELinux安全子系统

SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。RHEL 7系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。

“SELinux域”和“SELinux安全上下文”称为是Linux系统中的双保险,系统内的服务程序只能规规矩矩地拿到自己所应该获取的资源,这样即便黑客入侵了系统,也无法利用系统内的服务程序进行越权操作。但是,非常可惜的是,SELinux服务比较复杂,配置难度也很大,加之很多运维人员对这项技术理解不深,从而导致很多服务器在部署好Linux系统后直接将SELinux禁用了;这绝对不是明智的选择。

SELinux服务有三种配置模式,具体如下:

虽然在禁用SELinux服务后确实能够减少报错几率,但这在生产环境中相当不推荐。

SELinux服务的主配置文件中,定义的是SELinux的默认运行状态,可以将其理解为系统重启后的状态,因此它不会在更改后立即生效。可以使用getenforce命令获得当前SELinux服务的运行模式:

getenforce:查看当前SELinxu服务的运行模式

setenforce [0|1]:修改SELinux当前的运行模式(0禁用,1启用)。

分析上面实例被SELinux拦截的原因:

httpd服务程序的功能是允许用户访问网站内容,因此SELinux会默认放行用户对网站的请求操作。但是,/home目录是用来存放普通用户的家目录数据的,而将网站数据的默认保存目录修改为了/home/wwwroot,导致httpd提供的网站服务要去获取普通用户家目录中的数据,这显然违反SELinux的监管原则。

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

作用:设置文件、目录的策略,还可以管理网络端口、消息接口。

常用参数:

semanage命令没有递归功能,因此要先修改目录的安全上下文,再修改目录里所有文件的安全上下文。另外semanage命令修改好的配置不会立即生效。

restorecon命令:将设置好的SELinux安全上下文立即生效。格式: restorecon [选项] [指定目录或文件]。

常用参数:

实例:解决上面实例被SELinux拦截的问题。

个人用户主页功能

如果想在系统中为每位用户建立一个独立的网站,通常的方法是基于虚拟网站主机功能来部署多个网站。但这个工作会让管理员苦不堪言(尤其是用户数量很庞大时),而且在用户自行管理网站时,还会碰到各种权限限制,需要为此做很多额外的工作。其实,httpd服务程序提供的个人用户主页功能完全可以胜任这个工作。该功能可以让系统内所有的用户在自己的家目录中管理个人的网站,而且访问起来也非常容易。

实例:实现个人用户主页功能。

htpasswd命令:建立和更新存储用户名、密码的文本文件, 用于对HTTP用户的basic认证。htpasswd 是开源 http 服务器apache httpd的一个命令工具。其中,用于验证的用户名称不必是系统已有的本地账户,该命令生成的账户密码和系统中的账户密码是独立的,没有联系。

虚拟网站主机功能

利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离,让这些虚拟的服务器共同使用物理服务器的硬件资源,供应商只能限制硬盘的使用空间大小。出于各种考虑的因素(主要是价格低廉),目前依然有很多企业或个人站长在使用虚拟主机的形式来部署网站。

Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术,如图所示,用户请求的资源不同,最终获取到的网页内容也各不相同。

在配置虚拟网站主机功能前,做些基本设置:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。每个首页文件中要有明确区分不同网站内容的信息,以便能更直观地检查效果。由前面实例可知,目录/home/wwwroot及其下级目录和文件一定会受到SELinux安全上下文的制约,要修改相关内目录及其里面所有文件的SELinux安全上下文,并让设置立即生效。

1.基于IP地址实现虚拟网站主机功能。

测试结果:

访问192.168.10.30,会出现“This is C”;
访问192.168.10.20,会出现默认页面(因为上面根本没有用到192.168.10.20);
访问192.168.10.10,会出现“This is B”。上面配置参数表明192.168.10.10这个ip地址是对应着两个虚拟主机网站参数,但是由于B页面的参数编辑在最上面,因此访问192.168.10.10时出现的是B页面。

2.在1的基础之上,基于主机域名实现虚拟网站主机功能

基于主机域名的配置其实在实例1就已经配置好了,因为是基于主机域名,所以和ip地址无关。输入虚拟主机里定义的域名,就会出现相对应的页面。

分别在浏览输入相应的域名,测试结果:

3.在1的基础上,基于端口号实现虚拟网站主机功能。

测试结果:

Apache的访问控制

Apache可以基于源主机名、源IP地址或源主机上的浏览器特征等信息对网站上的资源进行访问控制。它通过Allow指令允许某个主机访问服务器上的网站资源,通过Deny指令实现禁止访问。在允许或禁止访问网站资源时,还会用到Order指令,这个指令用来定义Allow或Deny指令起作用的顺序,其匹配原则是按照顺序进行匹配,若匹配成功则执行后面的默认指令。比如“Order Allow, Deny”表示先将源主机与允许规则进行匹配,若匹配成功则允许访问请求,反之则拒绝访问请求。

设置Apache访问控制,使得只有ip地址为192.168.10.1或使用火狐浏览器的客户端才能访问指定的网页。

测试结果:

Linux 使用Apache服务部署静态网站的更多相关文章

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

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

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

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

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

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

  4. 第10章 使用Apache服务部署静态网站

    章节简述: 本章节中通过对比目前热门的网站服务程序来说明Apache服务程序的优势,并新增主机空间选购技巧小节. 了解SELinux服务的3种工作模式,小心谨慎的使用semanage命令和setseb ...

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

    1. 安装Apache服务程序 1.1 在虚拟机中选中光盘镜像,并设置连接 1.2 将光盘设备挂载到/media/cdrom目录 [root@localhost ~]# mkdir -p /media ...

  6. 使用Apache服务部署静态网站

    1970年,作为互联网前身的ARPANET(阿帕网)已初具雏形,并开始向非军用部门开放,许多大学和商业部门开始接入.虽然彼时阿帕网的规模(只有4台主机联网运行)还不如现在的局域网成熟,但是它依然为网络 ...

  7. Apache服务:使用 Apache 服务部署静态网站

    1.安装Apache服务 第一步:安装Apache服务程序   yum install httpd 具体流程参考https://www.cnblogs.com/python-wen/p/1016845 ...

  8. Linux笔记15 使用Apache服务部署静态网站。

    配置服务文件参数Linux系统中的配置文件 服务目录 /etc/httpd 主配置文件 /etc/httpd/conf/httpd.conf 网站数据目录 /var/www/html 访问日志 /va ...

  9. Apache服务部署静态网站

    Web网络服务也叫WWW(World Wide Web),一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务. 目前提供WEB网络服务的程序有Apache.Nginx或IIS等等,Web网站服 ...

  10. 利用Apache部署静态网站(一)

    Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充, ...

随机推荐

  1. springmvc的Interceptor拦截器和servlet的filter过滤器

    springmvc的Interceptor拦截器和servlet的filter过滤器 1.springmvc的Interceptor拦截器和servlet的filter过滤器springboot实现方 ...

  2. Android 杂项

    1. String to InputStream new ByteArrayInputStream(str.getBytes());

  3. (0403)位运算符+interface

    1)interface 2)位运算符

  4. linux下进程和线程的区别和联系

    进程用fork()或者vfork()生成(vfork是专门为了加载其他程序的子程序而优化的,随着fork()的优化,vfork已经被优化) fork()生成的子进程与父进程共享代码区内存,对于其他内存 ...

  5. 【记录】Linux Mint Cinnamon Desktop Enviroment使用记录

    之前使用的系统是Kali Linux,并不是看上了一堆工具,工具的话上虚拟机不好吗,会折腾的docker更好阿,主要是 1. 用习惯了gnome的桌面环境 2. 开箱即用 很多配置他都已经做好了 我都 ...

  6. 本地搭建JupyterNotebook开发环境

    背景 Jupyter 是一款优秀的编程语言运行环境包括Hub.Lab.Notebook等优秀自项目,JupyterNotebook是衍生的在线交互运行平台的前端项目 环境 Windows 11 Nod ...

  7. 网线接口调试,Android ADB网络调试!

    ADB网络调试,网线接口调试    没有USB接口,照样可以调试,可通过网线接口调试步骤! 一.第一步连接WIFI  查看wifi 的IP  win+R 键 打开运行 ,输入cmd   二.输入ipc ...

  8. Golang-Study

    Golang-Study-Note 参考教程视频:狂神说 https://www.bilibili.com/video/BV1ae41157o9?p=1&vd_source=793668372 ...

  9. macOS NSScrollView简单使用

    先看图片 这里是NSScrollView配合其他控件使用,我们这里只讲NSScrollView. 复制以下代码即可以运行 @interface ViewControl () /** 滚动显示 */ @ ...

  10. Oracle之关于sql_load导入数据

    平时在工作当中经常需要统计数据,客户会提供文本或者列表,需要导入到数据库中进行数据统计碰撞等,这时候需要用到批量导入数据,之前用kettle或者plsqldeveloper的odbc导入工具,性能不行 ...