HTTP服务器应用(包括安装介绍MPM介绍)

it2024-11-27  23

HTTP服务器应用(安装/MPM介绍)

HTTP 服务器程序应用程序服务器HTTPD 介绍HTTPD 诞生HTTPD 特性 MPM 工作模式preforkworkerevent HTTPD 功能特性安装 HTTPDCentOS 6:httpd-2.2配置文件服务脚本主程序文件日志文件站点文档模块文件路径服务控制和启动 CentOS 7:httpd-2.4httpd 2.4 的特性配置文件服务单元文件(systemd unit file)主程序文件日志文件站点文档模块文件路径服务控制语法检查帮助文档包配置应用 示例浏览器访问欢迎界面自制主页安装帮助手册登陆帮助网页 增加一个监听端口

HTTP 服务器程序

httpd apache:最稳定。经验最丰富 nginx lighttpd

应用程序服务器

IIS .asp tomcat .jsp jetty 开源的servlet容器,基于Java的web容器 Resin CAUCHO公司,支持servlets和jsp的引擎 webshpere(IBM), weblogic(BEA), jboss,oc4j(Oracle

HTTPD 介绍

HTTPD 诞生

20世纪90年代初,国家超级计算机应用中心NCSA开发 1995年开源社区发布apache(a patchy server) ASF: apache software foundation FSF:Free Software Foundation

HTTPD 特性

高度模块化:core + modulesDSO: Dynamic Shared Object 动态加/卸载MPM:multi-processing module多路处理模块

MPM 工作模式

prefork

prefork:多进程模型,每个进程响应一个请求:

一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理n个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024个

worker

worker:多进程多线程模型,每线程处理一个用户请求

一个主进程:负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理多个子进程:每个子进程负责生成多个线程每个线程:负责响应用户请求并发响应数量:m*n m:子进程数量n:每个子进程所能创建的最大线程数量

event

event:事件驱动模型,多进程模型,每个进程响应多个请求

一个主进程:生成m个子进程,每个进程直接响应n个请求,并发响应请求:m*n,有专门的线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力 一个主进程 :负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理子进程:基于事件驱动机制直接响应多个请求 httpd-2.2: 仍为测试使用模型 httpd-2.4:event可生产环境中使用

)

HTTPD 功能特性

CGI:Common Gateway Interface 通用网关接口 虚拟主机:IP,PORT, FQDN 反向代理 负载均衡 路径别名 丰富的用户认证机制 basic digest 支持第三方模块

安装 HTTPD

rpm包:CentOS 发行版中直接提供; 编译安装:定制新功能,或其它原因; [root@Neo ~]# yum install httpd -y # 安装 httpd [root@Neo ~]# yum info httpd # 查看 httpd 信息 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Installed Packages Name : httpd Arch : x86_64 Version : 2.4.6 Release : 89.el7.centos Size : 9.4 M Repo : installed From repo : updates Summary : Apache HTTP Server URL : http://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server. [root@Neo ~]# yum list all http* # 查看 httpd 安装包 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Installed Packages httpd.x86_64 2.4.6-89.el7.centos @updates httpd-tools.x86_64 2.4.6-89.el7.centos @updates [root@Neo ~]# systemctl status httpd.service # 查看 httpd 的状态 ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:httpd(8) man:apachectl(8) [root@Neo ~]# systemctl start httpd.service # 启动 httpd 程序 [root@Neo ~]# systemctl status httpd.service # 查看 httpd 状态 ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2019-08-03 11:33:20 EDT; 3s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 7470 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─7470 /usr/sbin/httpd -DFOREGROUND ├─7471 /usr/sbin/httpd -DFOREGROUND ├─7472 /usr/sbin/httpd -DFOREGROUND ├─7473 /usr/sbin/httpd -DFOREGROUND ├─7474 /usr/sbin/httpd -DFOREGROUND └─7475 /usr/sbin/httpd -DFOREGROUND Aug 03 11:33:20 Neo systemd[1]: Starting The Apache HTTP Server... Aug 03 11:33:20 Neo httpd[7470]: AH00558: httpd: Could not reliably determine ...ge Aug 03 11:33:20 Neo systemd[1]: Started The Apache HTTP Server. Hint: Some lines were ellipsized, use -l to show in full. [root@Neo ~]# ss -tnl # 查看监听端口 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::80 :::* LISTEN 0 32 :::21 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*

CentOS 6:httpd-2.2

配置文件

/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf

服务脚本

/etc/rc.d/init.d/httpd 脚本配置文件:/etc/sysconfig/httpd

主程序文件

/usr/sbin/httpd /usr/sbin/httpd.event /usr/sbin/httpd.worker

日志文件

/var/log/httpd: access_log:访问日志 error_log:错误日志

站点文档

/var/www/html

模块文件路径

/usr/lib64/httpd/modules

服务控制和启动

chkconfig httpd on|off service {start|stop|restart|status|configtest|reload} httpd

CentOS 7:httpd-2.4

httpd 2.4 的特性

MPM支持运行为DSO机制;以模块形式按需加载event MPM生产环境可用异步读写机制支持每模块及每目录的单独日志级别定义每请求相关的专用配置增强版的表达式分析式毫秒级持久连接时长定义基于FQDN的虚拟主机不需要NameVirutalHost指令新指令,AllowOverrideList支持用户自定义变量更低的内存消耗

配置文件

/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf # 模块化配置文件,如果需要添加内容,直接编辑新增 .conf 结尾的文件即可,不需要了直接删除即可 # 模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf 模块的功能特性

服务单元文件(systemd unit file)

/usr/lib/systemd/system/httpd.service

主程序文件

/usr/sbin/httpd httpd-2.4支持MPM的动态切换

日志文件

/var/log/httpd: access_log:访问日志 error_log:错误日志

站点文档

/var/www/html

模块文件路径

/etc/httpd/modules /usr/lib64/httpd/modules

服务控制

systemctl enable|disable httpd.service systemctl {start|stop|restart|status} httpd.service\

语法检查

httpd –t

帮助文档包

httpd-manual

配置应用

切换使用的MPM:编辑配置文件/etc/httpd/conf.modules.d/00-mpm.conf,启用要启用的MPM相关的LoadModule指令即可。

访问控制:

第一种:基于IP的访问控制 允许所有主机访问 # Require all granted 拒绝所有主机访问 # Require all deny 控制特定的IP访问: # Require ip IPADDR # 授权指定来源的IP访问 # Require not ip IPADDR # 拒绝指定来源的IP访问 控制特定的主机访问: # Require host HOSTNAME # 授权指定来源的主机访问 # Require not host HOSTNAME # 拒绝指定来源的主机访问 HOSTNAME: # FQDN # 特定主机 # domin.tld # 指定域名下的所有主机 示例: <RequireAll> Require all granted Require not ip 172.16.100.2 </RequireAll>

虚拟主机

<VirtualHost *:80> ServerName www.b.net DocumentRoot "/apps/b.net/htdocs" <Directory "/apps/b.net/htdocs"> Options None AllowOverride None Require all granted </Directory> </VirtualHost> 注意:任意目录下的页面只有显式授权才能被访问

可支持 https:http over ssl

支持毫秒级持久连接时长定义KeepAliveTimeout #ms

示例

浏览器访问欢迎界面

在安装完 httpd 服务后,用浏览器进行访问。 在没有主页的情况下,会显示欢迎界面。如下。

[root@Neo ~]# ip addr list | grep ens33 | grep inet inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33

自制主页

[root@Neo ~]# echo "Tang & Neo" > /var/www/html/index.html

安装帮助手册

[root@Neo ~]# yum install httpd-manual -y

安装完毕后,会生成一个 manual.conf文件。

[root@Neo ~]# ll /etc/httpd/conf.d/ total 20 -rw-r--r--. 1 root root 2926 Jul 29 13:18 autoindex.conf -rw-r--r--. 1 root root 323 Jul 29 11:15 manual.conf -rw-r--r--. 1 root root 366 Jul 29 13:19 README -rw-r--r--. 1 root root 1252 Jul 29 11:15 userdir.conf -rw-r--r--. 1 root root 824 Jul 29 11:15 welcome.conf

登陆帮助网页

安装完httpd的帮助手册后,会生成一个帮助网页。在此页面上,可以查看具体的使用帮助。如下:

增加一个监听端口

在 conf.d 目录下,新增一个 .conf 结尾的文件重启服务时,会加载所有 .conf 文件(主配置文件中IncludeOptional conf.d/*.conf代表加载所有 .conf文件)然后再重启httpd 服务,就会发现多了一个监听端口如果不需要了的话,直接删除此文件,然后在重启 httpd 服务即可修改网页内容的话是不需要重启 httpd 服务的修改网页名称的话是需要重启 httpd 服务的 [root@Neo ~]# ll /etc/httpd/conf.d/ total 24 -rw-r--r--. 1 root root 2926 Jul 29 13:18 autoindex.conf -rw-r--r--. 1 root root 323 Jul 29 11:15 manual.conf -rw-r--r--. 1 root root 366 Jul 29 13:19 README -rw-r--r--. 1 root root 13 Aug 3 12:24 test.conf -rw-r--r--. 1 root root 1252 Jul 29 11:15 userdir.conf -rw-r--r--. 1 root root 824 Jul 29 11:15 welcome.conf [root@Neo ~]# cat /etc/httpd/conf.d/test.conf # 新增一个 .conf 文件 Listen 10080 [root@Neo ~]# httpd -t # 语法检测 Syntax OK [root@Neo ~]# systemctl restart httpd.service [root@Neo ~]# ss -tnl # 查看监听端口(多了一个10080端口) State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::80 :::* LISTEN 0 32 :::21 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 :::10080 :::*

删除此 .conf 文件后,就不会再有此端口了。

[root@Neo ~]# rm /etc/httpd/conf.d/test.conf rm: remove regular file ‘/etc/httpd/conf.d/test.conf’? y [root@Neo ~]# systemctl restart httpd.service [root@Neo ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::80 :::* LISTEN 0 32 :::21 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
最新回复(0)