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

    xiaoxiao2021-03-25  132

    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.可以启动了
    转载请注明原文地址: https://ju.6miu.com/read-5660.html

    最新回复(0)