美文网首页
基于Apache实现linux平台web服务实战

基于Apache实现linux平台web服务实战

作者: 林家振_3cfd | 来源:发表于2018-08-20 16:13 被阅读46次

    1、Centos7系统下实现httpd-2.4的安装,并分别实现prefork、worker、event等几种工作方式。
    编译安装

    # yum  install -y httpd
    

    程序环境配置文件

    • 主配置文件:/etc/httpd/conf/httpd.conf
      不想修改主配置文件,可通过新增/etc/httpd/conf.d/*.conf文件来完成配置
      symtemd的服务文件
    • /usr/lib/system/lsystemd/httpd.service
      主程序文件:
    • /usr/sbin/httpd httpd-2.4 支持的MPM的动态切换;
      日志文件:
    • /var/log/httpd;
    • access_log; 访问日志
    • error_log; 错误日志
      站点文档
    • /var/www/html ; 即帮助文件
      模块文件路径
    • /uar/lib64/httpd/modules

    服务控制命令:

    • systemctl enable | disable httpd.service 是否自动启动
    • systemctl { start | stop | restart | status } httpd.service 服务是否 开启、停止、重启、状态

    多处理模块(MPM)

    prefork:多进程模型,一个进程响应一个请求;
    worker:多进程多线程模型,一个线程响应一个请求;
    event:事件驱动模型,一个进程响应n个请求;
    分别启用prefork、worker、event工作方式

    默认开启的状态是prefork,一旦启动/etc/sysconfig/httpd里的worker、event模式便自动切换.

    1、开启prefork模式

    [root@localhost ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf 
    
    image.png

    重启服务并且检查语法:


    image.png

    2、启动event模式
    将LoadModule mpm_prefork_module modules/mod_mpm_prefork.so 禁用,并开启 LoadModulempm_event_modulemodules/mod_mpm_event.so,如图

    image.png

    重启服务并检查语法:


    image.png

    3、启动worker模式,方法类似

    image.png
    image.png

    2、简述request报文请求方法和状态响应码

    request报文请求方法:

    • GET:从服务器获取一个资源
    • POST:向服务器发送要处理的数据
    • HEAD:只从服务器获取文档的响应头部
    • DELETE:请求删除服务器的某个资源
    • PUT:把请求的主题存储在服务器上
    • TRACE:追踪请求过程中所经过的代理服务器
    • OPTION:返回服务器对指定资源所支持使用的请求方法

    状态响应码

    三位数字,如200,401,404,502等,标记请求处理当中发生的情况; 1xx:100-101,信息提示
    2xx:200-206,成功
    3xx:300-305,重定向
    4xx:400-415,错误类信息,客户端错误
    5xx:500-505,错误类信息,服务端错误
    常用状态码:
    200:成功,请求的所有数据通过响应报文的entity-body发送;OK
    301:请求的URL指向的资源已经被删除;但在响应报文中通过Location指明资源的新位置,Moved Permanently
    302:与301类似,但在响应报文通过Location指明的是资源所处的临时新位置
    304:客户端发出了条件式请求,但服务器的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
    401:需要输入账号和密码认证方能访问资源
    403:请求被禁止;Forbbiden
    404:请求的资源不存在;Not Found
    500:服务器内部错误;Internal Server Error
    502:代理服务器从后端服务器收到一条伪响应;Bad Gateway

    3、详细描述httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例"

    3.1虚拟主机

    一个物理服务器可以服务于多个站点,每个站点可通过一个或者多个虚拟主机来实现;http三种类型的虚拟主机:基于ip、基于port、基于FQDN。
    定义虚拟主机的方法:

    <VirtualHost "IP:PORT">
    ServerName
    SeverAlias
    DocumentRoot
    </VirtualHost>
    

    注意:大多数可用于全局或‘main’ server中的指令,都可以定义在VirtualHost中;
    实例1:基于IP

    <VirtualHost "192.168.1.103:80">
    SerName www.ilinux.io
    DocumentRoot "/data/web/ilinux"
    </VirtualHost>
    <VirtualHost "192.168.1.110:80">
    SerName www.ilinux.io
    DocumentRoot "/data/web/ilinux"
    </VirtualHost>
    

    注意:要在本机上配置上述两个地址,并能实现网络通信
    实例2:基于Port

    <VirtualHost "192.168.1.103:80">
    SerName www.ilinux.io
    DocumentRoot "/data/web/ilinux"
    </VirtualHost>
    
    Listen 10086
    <VirtualHost "192.168.1.103:80">
    SerName www.ilinux.io
    DocumentRoot "/data/web/ilinux"
    </VirtualHost>
    

    注意:这里的所有端口都要被httpd监听
    实例3:基于域名FQDN

    <VirtualHost "192.168.1.103:80">
    SerName www.ilinux.io
    DocumentRoot "/data/web/ilinux"
    </VirtualHost>
    
    Listen 10086
    <VirtualHost "192.168.1.103:80">
    SerName www.ilinux.io
    DocumentRoot "/data/web/ilinux"
    </VirtualHost>
    

    注意:额外经常用于每个虚拟主机的配置有

    • Errorlog
    • Customlog
    • <Directory>
    • <Location>
    • ServerAlias

    3.2站点访问控制

    访问控制机制:可以基于来源地址或者基于账号进行控制;定义的方式有两种:
    文件系统路径:

    <Directory"/PATH/TO/SOMEDIR>
    ...
    </Directory>
    

    URL路径:

    <Location "URL">
     ...
    </Location>
    

    Directory中的访问控制定义

    (1)Options :定义访问特性

    Indexes:允许索引,指明的URL路径不存在或没有与主页面资源相匹配的文件时,返回给用户索引列表。
    FollowSymLinks:允许跟踪符号链接文件所指向的源文件。
    None:禁止访问
    All:启用除了MultiViews所有选项
    定义格式:

    允许索引,允许跟踪符号链接文件

    <Directory>
    Options Indexes FollowSymLinks
    </Directory>
    

    禁止访问设置

    <Directory>
    Options None
    </Directory>
    

    (2)基于来源地址访问控制
    order:检查次序
    Oder Allow Deny:只有明确allow的地址,才允许访问,其他均为deny;
    Allow from:允许访问的所有地址
    Deny from:拒绝访问的来源地址
    3.3基于用户的访问控制
    生成用户密码文件:
    使用htpasswd生成用户密码文件
    格式为:htpasswd [-c][-m][-D]passwdfile username,分别生成tom,jerry,Obama用户。


    image.png

    编辑/etc/httpd/conf.d/admin.conf,内容如下:


    image.png
    编辑/etc/httpd/conf.d/.htgroup,写入如下内容
    image.png

    完成后,打开浏览器,输入ip+admin即可完成基于组的认证,用户认证省略定义组用户,相对简单,这里不做演示。

    3.4持久链接相关配置

    持久链接:链接建立后,每个资源获取结束后不会断开链接,而是继续
    等待其他资源请求并完成传输;但是总归要断开的,如何断开呢?我们可以通过限制链接请求数量或者限制时间,超时即断开链接。

    劣势:对并发访问量较大的服务器,开持久会使有些请求得不到服务;
    改进:缩短时间,httpd-2.4支持毫秒级
    非持久链接:每个资源都是单独通过专用的链接获取
    持久链接相关参数:
    KeepAlive Off|On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 15

    可以通过Telnet命令来进行持久链接测试:

    telnet Sever 80

    GET /URL HTTP/1.1
    Host:Server
    在超过15秒后没用操作自动断开链接

    相关文章

      网友评论

          本文标题:基于Apache实现linux平台web服务实战

          本文链接:https://www.haomeiwen.com/subject/uhribftx.html