Linux下HTTP服务配置教程
HTTP SERVER
进程名:httpd
俗称:apache
httpd的功能特性
路经别名:alias
用户认证:authentication
虚拟主机:virtual host
反向代理:负载均衡
用户站点:访问控制
默认网关接口--CGI:Comman Gateway Interface
安装httpd服务
查看当前主机是否安装有httpd
rpm -q httpd
当前没有则安装
yum -y install httpd
查看httpd配置文件
rpm -ql httpd
#1.服务脚本
/etc/rc.d/init.d/httpd
#2.服务配置脚本
/etc/sysconf/httpd
#3.运行目录
/etc/httpd
#4.主配置文件
/etc/httpd/httpd.conf
#5.扩展配置
/etc/httpd/conf.d/*.conf
#6.默认文档根目录(可修改)
/var/www/html
#7.CGI目录
/var/www/cgi-vin/
配置文件详解
面向三种区域的配置
全局配置 主机配置:用于仅提供一个站点 虚拟主机:用于提供多个站点
主机和虚拟主机不能同时存在
格式:指令 + 值
配置指令一般不区分字符大小写,但一般开头为大写,值有可能区分大小写,有些指令可以重复出现
常用配置指令介绍
1)监听套接字
#此指令可以出现多次,用于监听多个不同的套接字
Listen 80
Listen 172.16.36.207:8080
例:查看第二个8080端口是否起作用
#1.检测语法
httpd -t
#2.重新加载配置文件
service httpd reload
#3.查看端口是否被监听
ss -tnl
#4.浏览器测试
172.16.36.207:8080
2)持久连接
#1.开关
KeepAlive On / Off
#2.超时断开
KeepAliveTimeOut 15
#3.限制最大请求数,超过断开
MaxKeepAliveRequest 100
例:设置超时时间为5秒
#1.用telnet连接网站
telnet 172.16.36.207 80
#2.获取资源
GET /test.html http/1.1
Host:xiaoc
3.响应状态
connnection 连接状态不是马上关闭,还可以发送GET请求
5秒后自动关闭连接
3)MPM(multipath processing module)–多道处理模块
并不是指一个模块,而是对一种特性的称谓
类型
(1)prefork : 多个进程,每个进程对应一个请求(1对一)
(2)worker : 多个进程,每个进程有多个线程,每个线程对应一个请求(多对多)
(3)event : 单线程响应多个请求,一般只适合做测试使用
查看可使用模块
httpd -l
httpd服务默认启动的为prefork,修改服务配置脚本/etc/sysconfig/httpd,将HTTPD注释取消即可
#1.取消注释
HTTPD=/usr/sbin/httpder
#2.重新启动服务
service httpd restart
#3.查看服务进程,已经是httpder
ps -eFH | tail -5
模块内控制指令
Module 模块格式
指令 值
指令值 MODULE_NAMEprefork.cStartServers8默认启动工作进程数MinSpareServers5最少空闲进程数MaxSpareServers20最大空闲进程数ServerLimit256最大活动进程数MaxClients256并发请求最大数MaxRequestsPerChild4000每个子进程在生命周期内所能服务的请求最大数
MODULE_NAME|worker||
StartServers | 4|默认启动的进程数
MaxClients |300|最大请求并发
MinSpareThreads |25|最小空闲线程数
MaxSpareThreads |75|最大空闲线程数
ThreadsPerChild |25|每个子进程可生成的线程数
MaxRequestsPerChild |0|每个子进程在生命周期内所能服务请求最大数,0表示不限定
4)DSO(Dynamic Shared Object)
Apache HTTP Server是一个模块化程序,管理员可以通过选择一组模块来选择要包含在服务器中的功能。模块将被编译为与主httpd 二进制文件分开存在的动态共享对象(DSO)。
用法格式:
LoadModule MODULE_NAME /path/to/module
重载配置文件就能生效
如果使用相对路径,则对于ServerRoot所定义的位置而言
列出已经装载的所有DSO模块
httpd -M
5)站点根目录
#默认值
DocumentRoot "/var/www/html"
设置该站点网页访问属性
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from allOptions Indexes缺少指定的默认页面时,允许将目录中的所有文件已列表形式返回给用户:危险:慎用FollowsymLinks允许跟随符号链接所指向的买手游原始文件None所有都不启用All所有的都启用ExecCGI允许使用mod_cgi模块执行CGI脚本Includes允许使用mod_include模块实现服务器端包含(SSI)IncludesNOEXEC允许包含但不允许执行脚本MultiViews允许使用mod_negotiation实现内容协商SymLinksIfOwnerMatch在链接
7)基于主机的访问控制
Options
AllowOverride
None 不禁用下面
order 次序,写在后面的为默认
allow,deny: 没有允许的都拒绝
deny,allow:没有拒绝的都允许
Allow from
Deny from
8)定义默认的主页面
DirectoryIndex index.html index.html.var
9)用户目录
允许每个用户都能创建个人站点
#默认为禁止状态
UserDir disabled
#取消注释开启
UserDir public_html
例:创建test用户,创建其个人站点
useradd test
su - test
mkdir public_html
cd public_html
vim index.html
#其他人如test2能够访问我的网站
setfacl -m u:test2:x /home/test
#打开浏览器访问test个人站点
172.16.36.207/~test
10)配置日志功能
#配置日志显示格式
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
#配置日志文件
CustomLog logs/access_log combinedOptions %h远程主机名%l远程登录名%u认证时远程用户名%t收到请求的时间%r请求报文的起始行%>s响应状态码%b响应报文的长度,单位为字节%{referer}i指定请求报文首部的内容%{User_Agent}i用户代理,上一次跳转到本次页面的位置,“-”表示直接访问
11)路经别名
访问server_ip/icons时,其页面来自于/var/www/icons
Alias /icons/ "/var/www/icons/"Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
设定默认字符集
AddDefaultCharset UTF-8