HTTP服务安装与配置
HTTP服务初识
-
http请求流程
- 建立、处理连接
- 接受请求
- 处理请求
- 访问资源
- 构建响应报文
- 发送响应报文
- 记录日志
-
提供http服务的软件
- 静态资源web程序
- httpd(apache)
- nginx
- lighttpd
- 动态资源web程序
- IIS
- tomcat、jboss、jetty (轻量级)
- weblogic、webshpere (企业级)
- 静态资源web程序
-
apache httpd的特点
- 高度模块化
- DSO动态共享对象
- MPM多路访问模块
- prefork:多进程模型,每个进程响应一个请求。一个主进程(监听套接字),负责生成n个子进程,子进程为工作进程,没有用户请求,也会生成空闲进程,等待新的请求,最大不超过1024个进程
- worker:多线程模型(多进程生成,一个进程生成多个线程),一个线程响应一个请求
- event:事件驱动模型,多个进程,一个进程响应多个请求
-
查看当前所使用的MPM模块(默认为prefork)
ps -aux | grep http
-
httpd -M #查看所有加载的模块
-
httpd 2.2修改所使用的MPM模式
-
httpd 2.4 修改配置文件/etc/httpd/conf.modules.d/00-mpm.conf 加载指定的MPM模块
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #加载prefork多进程模式
LoadModule mpm_worker_module modules/mod_mpm_worker.so #加载work多线程模式
LoadModule mpm_event_module modules/mod_mpm_event.so #加载event事件驱动模式
- 其他相关知识
- URI: Universal Resource Identifier 统一资源标志符 ,由三部分组成:访问资源的命名机制,存放资源的主机名,资源自身的名称
- URL:Universal Resource Locator 统一资源定位符 ,由三部分组成:第一部分是协议(或称为服务方式);第二部分是存有该资源的主机IP地址(有时也包括端口号);第三部分是主机资源的具体路径
- PV:page view(一次页面的访问) 即页面访问量,每打开一次页面PV计数+1,刷新页面也是。包括全站PV,首站PV等
- UV:user view (多少用户访问过,跟页面数量多无关,表现为用户活跃度,一台电脑终端为一个访客)
- AC:Active connection 活动连接数,当前在使用的活动的连接数
- IV:是IP访问数指独立IP访问数,一个独立的IP在一个计算时段内访问网站计算为1次IP访问数。在同一个计算时段内不管这个IP访问多少次均计算为1次。计算时段有以1天为一个计算时段,也有以1个小时为一个计算时段。
- qps:每秒查询数 并发/响应
- 并发:多个客户机同时请求服务器资源,服务器对多个请求交替进行响应
- 并行:多个客户机同时请求服务器资源,服务器同时对多个请求进行响应
- 进程:是程序的运行实体,进行资源分配的基本单位,拥有独立的资源,进程之间相互独立一个进程可以包含多个线程
- 线程:程序执行的最小单位,线程间共享进程的资源,线程间通信更方便
HTTP服务安装与初始化配置
环境:
http2.2 服务端:Centos6.10 192.168.10.110
windows客户端:windows 10 10.10.86.68
Linux客户端:Centos6.10 192.168.10.111
- 安装httpd(需要关闭防火墙、selinux)
- 备份配置文件/etc/httpd/conf/httpd.conf
- 默认配置文件如下
ServerTokens OS #服务器标识
ServerRoot "/etc/httpd" #服务器根,其他配置文件的相对目录
PidFile run/httpd.pid
Timeout 60 #响应超时时长(秒)
KeepAlive Off #是否保持长连接
MaxKeepAliveRequests 100 #长连接最大请求次数
KeepAliveTimeout 15 #同一用户同一连接的长连接超时时长(秒)
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
#Listen 127.0.0.1:80 #监听的ip和端口,可以为多个
#Listen [::1]:80 #使用ipv6时需要将ip地址括起来
Listen 80 #监听端口
#LoadModule为加载的模块
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
...
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
Include conf.d/*.conf
User apache #提供服务的用户
Group apache #提供服务的用户组
ServerAdmin root@localhost #错误发送邮箱
UseCanonicalName Off
DocumentRoot "/var/www/html" #网站根目录
<Directory /> #指定根的一组配置
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/html"> #/var/www/html该目录的一组配置
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny #访问控制,先检查allow后检查deny,后面的规则会覆盖前面规则
# Order Mutual-failure #只有出现在allow中且未出现在deny中的允许访问
# Order deny,allow #先检查deny
Allow from all #设定允许的范围,all允许所有
# Deny from all #设定拒绝的范围,all拒绝所有
</Directory>
DirectoryIndex index.html index.html.var #网站首页名
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
TypesConfig /etc/mime.types #MIME类型配置文件
DefaultType text/plain #默认MIME内容类型
<IfModule mod_mime_magic.c>
# MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule>
HostnameLookups Off
ErrorLog logs/error_log
LogLevel warn #日志级别
#emerg 紧急(系统无法使用)
#alert 必须立即采取措施
#crit 致命情况
#error 错误情况
#warn 警告情况
#notice 一般重要情况
#info 普通信息
#debug 调试信息
#LogFormat定义日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log combined #设置日志文件名和格式
ServerSignature On
Alias /icons/ "/var/www/icons/" #Alias命名的别名
<Directory "/var/www/icons">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
AddDefaultCharset UTF-8 #默认字符集
...
- 修改配置如下
- 分别在/var/www/html和/var/www/html/sub下创建主页
- 重启服务
- 或
- 也可以不重启,只重载配置
- windows客户端测试
- linux客户端curl命令测试