Linux运维学习之一:http服务器架设

3 篇文章 0 订阅

URL 统一资源定位符
http协议的版本:
http/0.9:1991,仅传输文本文档
http/1.0:支持多媒体数据的处理
http/1.1:
http事务:一次请求加一次相应
http方法:get和put,post,delete
http协议:是一种无状态协议
一次事务结束后,链接及行断开
加速方式:并行请求,持久链接
http请求方法:
get,head
post,put,delete,options,trace
get:请求获取一个资源,需要服务器发送
head:和get相似,只要头部,不要资源
post:支持html的表单提交。
put:与get相反,向服务器写入文档
delete:请求删除url指向的资源
options:探测服务器端对某资源的支持
trace:跟踪请求要进过的防火墙

http的状态吗:
1xx;信息状态码
2xx:成功状态码
3xx:重定向状态码
301:永久重定向
302:临时重定向,在报文相应中使用“location:URL’
4xx:客户端类的错误
403:拒绝访问
404:没有资源
405:不允许使用此方法来请求url
5XX:服务器类的错误
500:服务器内部错误
502:从上游收到一个伪响应
503:服务器此时无法提供服务
http首部:
通用首部:请求和相应都可以使用
Conection:定义c/s之间关于请求/响应的有关选向
via:显示报文经过的中间节点
cache-control:缓存指示
请求首部:
Client-ip:
host:请求的主机名和端口号
Referer:指名了包含当前资源的文档的url,及就是上一个资源的url
user-agent:用户代理
Accept:指名服务器能发送的媒体类型
Accept-Charset:支持使用的字符集
Accept-Encoding:支持使用的编码方式

相应首部:
实体首部:用于指定实体属性
拓展首部:非标准首部,可能有程序开发者创建的

一次web请求的基本过程:
建立链接:
接受请求:
处理请求:
访问资源:
构建响应:
发送响应:
记录日志:
web服务器的i/o结构:
单线成结构:
多线程结构:
复用的I/O结构:单个线程响应多个请求
复用的多线程结构:多个线程,每个线程响应多个请求

httpd:高度模块化
MPM:多道处理模块
prefork:一个进程一个请求
最大上线是1024
worker:一个进程多个线程,一个线程一个请求

    event:一个线程响应多个请求
        event-driven:事件驱动,主要目的在于实现单线成响应多个请求

功能特性:
路径别名:alias
用户认证:authentication
虚拟主机:
反向代理:
负载均衡:
用户站点:

安装http:
服务脚本:
/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd
运行目录:/etc/httpd
配置文件:
主配置文件:/etc/httpd/conf/httpd.conf
拓展配置文件:/etc/httpd/confd/*.conf
文档根目录:/var/www/html

配置文件的格式:
    配置参数   值
    注:配置文件不区分大小写
    文件格式:
        全局配置
        主机配置:用于仅提供一个站点
        虚拟主机:用于提供多个站点
    配置文件的测试语法
        service httpd configtest
        或httpd -t
    绝大数配置修改后,可以通过service httpd reload来生效;如果修改监听的地址或者端口,必须重启服务才能生效

配置的内容:
    1,监听套接子
        Listen [IP:]port
    2,配置使用keep alive
        KeepAlive {On|Off}    是否使用持久换保持
        KeepAliveTimeout 2
        MaxKeepAliveRequests 50
    3,MPM配置
        系统默认启动的模块可以通过#httpd -l来查看
        系统默认启动的I/O结构为prefork结构
        如果想启动worker:
            1,使用service httpd.worker start来启动
            2.或者配置脚本配置文件/etc/sysconfig/httpd 去掉注释
        如果向启动event:方法一样
        <IfModule prefork.c>         如果mod_userdir.c文件存在,则是用以下的配置文件
            StartServers       默认启动工作进程数
            MinSpareServers    最小空闲进程数
            MaxSpareServers    最大空闲进程数
            ServerLimit        最大活动状态进程数
            MaxClients         最大并发连接数
            MaxRequestsPerChild     每个子进程在生命周期内所能服务的最大请求个数
        </IfModule>
        <IfModule worker.c>
            StartServers         
            MaxClients         
            MinSpareThreads         最小空闲线程数
            MaxSpareThreads     
            ThreadsPerChild         每个子进程可以生成的线程数
            MaxRequestsPerChild     每个子进程所响应的最多个数,0表示不做限定
        </IfModule> 
    4,DSO模块的加载方式
        LoadModule  auth_basic_module  /path
        #httpd -M:列出已经装载的DSO模块
        #httpd -l:列出非DSO模块
    5,配置站点根目录
        DocumentRoot /path
        <Directory /path>      页面访问属性
            Options:
                Indexs:缺少指定的默认页面时,将站点的文件目录展现给用户。
                FollowSymLinks:允许跟随符号链接所指向的原文件
                None:所有都启用
                All:所有否不启用
                ExecCGI:允许使用mod_cgi模块执行CGI脚本
                Includes:允许使用mod_incliude模块实现服务器端包含(SSI)
                MiltiViews:允许使用mod_negotiation实现内容协商
                SymLinkIfOwnerMatch:在链接文件的属主组和原始文件相同时,允许跟随符号链接所指向的原文件
             AllowOverride None
        </Directory>
    6,基于主机的访问控制
        <Directory />
                Options 
            AllowOverride      表示一下内容是否被禁用,None表示不禁用
            Order  Allow,Deny       表示次序
            Allow   from    ip/all
            Deny
        </Directory>
    7,基于用户的访问控制

        虚拟用户:是在访问某一文件而存在用户,不具有系统的任何权限

        认证类型:
            basic:基本认证,帐号密码进行明文发送
            digest:摘要认证
        配置方式:
            <Directory "/path">
                Options None
                AllowOverride AuthConfig
                AuthType Basic           认证类型,表示使用那一种认证机制
                AuthName “”           认证机制的名称
                AuthUserFile /path      基于用户认证时需要的文件
                Require valid—user
            </Directory>
        使用此机制的用户添加
            #htpasswd  -c -m   文件名   用户
            -c:创建文件     -m:添加用户
        基于用户组的认证
            将原有的配置中的AuthUserFile 替换成AuthGroupFile
            在将原有配置中的Require valid-user 替换成Require group group_name
            也可以将两个放在一起,进行两种访问控制


    8,定义默认页面
        DirectoryIndex    index.php index.html
    9,用户目录
        如果期望让每个用户都可以创建个人站点:访问格式
        userdir disablied:表示禁止
        userdir public_html:表示用户家目录名称,注:用户的家目录的赋予运行httpd进程的用户拥有执行权
    10,配置日志功能
        定义访问日志的功能
            Customlog ‘"/path"  日志name
            LogFormat "宏定义" 日志名称
            宏定义:
                %h:客户端地址
                %l:远程登录名,通常为-
                %u:认证时的远程用户名,没有认证时通常伪-
                %t:收到请求时的时间
                %r:请求报文的起始行
                %>s:响应状态码
                %b:响应报文的长度,以字节伪单位
                %{Header_name}i:记录指定请求报文首部的内容
        错误日志ErroeLog  "/path"
    11,路径别名
        Alias  别名 "真路径"
    12,指定默认字符集
        AddDefaultCharset utf-8


httpd配置(2)
13,脚本路径别名
    URL->>filesystem directory  
    CGI:通用网管接口  
    ScriptAliase  /URL/  "/path/"      path路仅下的文件全部执行完了之后将结果返还给用户   
            详细在/var/www/cgi-bin下
14,虚拟主机 (使用虚拟主机,要关闭主机)  
    一个物理服务器提供多个站点
    基于不同的ip实现不同的虚拟
        变化IP
    基于不同的port实现不同虚拟主机
        变化端口
    基于不同的FQDN实现不同的虚拟主机
        变化ServiceName   其中伪*.80
    <VirtualHost *:80>
        ServerName
        DocumentRoot “”
        <Directory "">
        ServiceAliase
        ServiceAdmin
    </VirtualHost *:80>

日志滚动:
就是创建新的日志文件,将原有的日志文件进行重命名

15,https的实现
    https:是二进制格式协议,监听在443端口
    SSL会话基于ip地址进行,不支持基于FQDNDE虚拟主机上实现
    在httpd基于mod_ssl模块实现ssl的支持
    a,准备证书和密钥
    b,安装mod_ssl模块
    c,配置ssl.conf文件
        配置使用ssl的虚拟主机
            ServerName
            DocumentRoot ""
        配置证书和私钥
            SSLCertificatFile  证书文件
            SSLCertificatKeyFile  密钥文件
    d.重启

16.页面压缩
    在配置文件中使用#mod_deflate configuration模块
    SetOutputFilter DEFLATE          //启用DEFLATE
    <IfModule mod_deflate.c>
        AddOutputFilterByType   DEFLATE   文件类型(如text/html)
        BrowserMatch ...           #进行浏览器匹配,解决浏览器不支持压缩页面的解压 
    </IfModule>

安装httpd2.4在原有的基础上
下载apr-1.5.2.tar.gz,apr-util-1.5.4.tar.gz,httpd-2.4.5.tar.gz
编译安装
1,先安装apr
a,先安装pcre-devel
yum install pcre-devel
yum -y groupinstall
b,./configure –prefix=/usr/local/apr
c,

    2,在安装apr-util
        a,./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr
        b,
    3.在安装httpd
         httpd2.4新特性
            1)MPM支持在运行时装载
                 --enable-mpms-shared=all --with-mpm=event 启用默认的event
            2) 支持event
            3)异步读写
            4) 在每模块及每目录上指定日志级别
            5)每请求配置:<If> <Elseif>
            6) 增强版的表达式分析器
            7) 毫秒级的keepalive timeout
            8)支持主机名的虚拟主机不在需要NameVirtualHost指令
            9) 支持使用自定义变量
            新增一些模块:mod_proxy_fcgi,mod_ratelimit,mod_request,mod_remoteip
            对于基于IP的访问做了修改,不在使用order,allow,deny这些机制;而是统一使用require进行
        编译安装
        a,./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable--ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modeles=most(常用的) --enable-mpms-shared=all --with-mpm=event
   make && make install
        b,头文件、库文件、帮助文档、二进制
        c,后续的配置
               1 导出头文件
               ln -sv /usr/local/appache/include /usr/include/httpd
               2 导出库文件
            ldconfig -p 显示当前系统的库文件
            ???
               3 导出帮助文件
                修改vim /etc/man.config
               4 修改环境变量
                编辑/etc/profile.d/httpd
                    export PATH=/usr/local/apache/bin:$PATH
            5.编辑/etc/rc.d/init.d.httpd脚本,或者复制。

配置虚拟主机     修改httpd-vhosts.conf

基于IP访问控制:
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all deny
控制某主机的访问
     Require ip IPADDR
     Require not ip IPADDR
      IPADDR:
     单个IP地址,例如172.16.100.7
     network/netmask 例如172.16.0.0/255.255.0.0
     network/Length 例如172.16.0.0/16
     Net 172.16
     Require host IPADDR
     Require not host IPADDR
     Hostname
       GQDN:具体的主机
       域:.magedu

设置为service启动
1,复制/etc/rc.d/init.d/http 为/etc/rc.d/init.d/http24
2,vim http24
apachectl=/usr/local/apache/bin/apachectl
httpd=/usr/local/apache/bin/httpd
prog=httpd
pidfile= PIDFILE/var/run/httpd24.pidlockfile= {LOCKFILE-/var/lock/subsys/httpd24}

    在httpd24配置文件中加入Pidfile "/var/run/httpd24.pid"
3.可以启动了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值