安装httpd
yum -y install httpd
服务脚本:/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd
运行目录:/etc/httpd
配置文件:
主配置文件:/etc/httpd/conf/httpd.conf
扩展配置:/etc/httpd/conf.d/*.conf
Socket:80/tcp,443/tcp
文档根目录:/var/www/html
CGI:/var/www/cgi-bin/
日志滚动:
日志切割
时间、空间
Docroot:文档根目录
配置文件:
/etc/httpd/conf/httpd.conf
配置参数 值
配置指令不区分字符大小写
值有可能区分大小写
有些指令可以重复出现多次
配置文件格式
全局配置
主机配置:用于仅提供一个站点时
虚拟主机配置:用于提供多个站点时
配置文件语法测试
serviice httpd configtest
httpd -t
绝大多数配置修改后,可以用过service httpd reload 来生效,如果修改了监听的地址或端口,必须重启服务才能生效
1.监听套接字
Listen [IP:]port
此指令可以出现多次,用于指定监听多个不同的套接字
Listen 80
Listen 172.16.100.7:8080
2.配置使用Keepalive
KeepAlive {On|Off}
KeepAliveTimeout 2 超时时间
MaxKeepAliveRequests 50 最大连接
3.MPM
多道处理模块
httpd -l 查看编译进内核的模块
想使用不同的机制,修改配置文件即可 /etc/syconfig/httpd文件
StartServers 8 默认启动的工作进程数
MinSpareServers 5 最少空闲进程数
MaxSpareServers 20 最大空闲进程数
ServerLimit 256 最大活动进程数
MaxClients 256 最大并发连接数,最多允许发起的连接请求的个数
MaxRequestsPerChild 4000 每个子进程在生命周期内最大允许服务的最多请求个数
StartServers 4 启动的子进程的个数
MaxClients 300 最大并发连接数,最多允许发起的连接请求的个数
MinSpareThreads 25 最少空闲线程数
MaxSpareThreads 75 最大空闲线程数
ThreadsPerChild 25 每个子进程生成的线程数
MaxRequestsPerChild 0 每个子进程在声明周期内最大允许服务的最多请求个数
4、DSO模块的加载方式
LoadModule module_name /path/to/module
如果使用相对路径,则对于ServerRoot所定义的位置而言
LoadMoudule php5_module /usr/lib64/httpd/modules/php.so
让服务重载配置文件方能生效
httpd -m 列出与加载到所有DSO模块与非DOS模块
取消 注释掉即可
5、配置站点根目录
DocumentRoot /path/to/somewhere
6、页面访问属性
Options 选项
Indexes:缺少指定的默认页面时,允许将目录中的所有文件已列表形式返回给用户:危险:慎用
FollowsymLinks:允许跟随符号链接所指向的原始文件
None:所有都不启用
All:所有的都启用
ExecCGI:允许使用mod_cgi模块执行CGI脚本
Includes:允许使用mod_include模块实现服务器端包含(SSI)
IncludesNOEXEC:允许包含但不允许执行脚本
MultiViews:允许使用mod_negotiation实现内容协商
SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号连接所指向的原始文件
AllowOverride
可以使用正则表达式,使用~
7.基于主机的访问控制
Options
AllowOverride
None 不禁用下面
order 次序,写在后面的为默认
allow,deny: 没有允许的都拒绝
deny,allow:没有拒绝的都允许
Allow from
Deny from
如果都匹配或都不匹配时以默认为准
否则则以匹配到的为准
Allow from
Deny from
IP,Network Address
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
基于用户做访问控制
8.定义默认主页面
DirectoryIndex 依次查找
9.用户目录
如果期望让每个用户都可以创建个人站点:http://Server_IP/~Username/
userdir disablied:禁止
userdir public_html:
public_html是用户家目录下的目录名称,所有位于此目录中的文件均可通过前述的访问路径进行访问
用户的家目录得赋予进行httpd进程的用户拥有执行权限
setfacl -m u:apache:x ~Username
10、配置日志功能
/var/log/http/
access.log:访问日志,其需要记录的内容需要自定义
error.log
访问日志:
CustomLog "/path/to/log_file" LogFormat
LogFormat定义日志格式
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
%h:客户端地址
%l:远程的登录名,通常为-
%u:认证时的远程用户名,通常为-
%t:接收到的请求时的时间,为标准英文格式时间+时区
\" :转义,显示""
%r:请求报文的起始行
%>s:响应状态码,
%b:以字节响应报文的长度,不包含http报文
%{Header_Name}i:记录指定请求报文首部的内容(value)
%u:请求的URL
详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
错误日志:
ErrorLog
11、路径别名
Alias /alias/ "/path/to/somewhere"
意味着访问http://Server_IP/alias时,其页面文件来自于/path/to/somewhere中
12、指定默认的字符集
AddDefaultCharset
13.脚本路径别名(CGI接口)
URL-->FileSystem Directory
CGI:Common Gateway Interface(通用网关接口)使WEB可以跟一个应用程序进行通信,从通信环境中获得结果。
CGI是不安全的
在第一行写入
echo “Content-Type:text/html:
mod_alias,mod_cgi
ScriptAlias /URL/ "/path/to/somewhere" somewhere下的文件可以被执行
也可以在目录中实现
格式一般为
cat << EOF
Content-Type:text/html
The time is : `date`.
EOF
14.基于用户的访问控制
虚拟用户:不是系统用户,只是为了获取某种资源类型的一种虚拟的用户
文件/etc/httpd/conf/.htpasswd
SQL数据库
dbm:
ldap:轻量级目录访问协议
认证类型(auth):
basic:基本认证,账号和密码明文发送
digest:摘要认证,hash编码之后发送
认证提供者(authentication provider):账号和密码的存放位置
authn
授权机制(authorization):根据什么进行授权
案例:基于文件,做基本认证根据用户和组进行授权
1、编辑配置文件,为需要认证的目录配置认证机制
options None
AllowOverride AuthConfig 使用认证配置
AuthType Basic 使用基本认证
AuthName "Private Area" 质询时标题
AuthUserFile /etc/http/conf/.htpasswd 密码的存放位置
Require vaild-user 可访问的用户
2、使用htpsswdm命令使用生成认证库
htpasswd
-c 创建密码,创建第一个用户时使用
htpasswd -c -m /etc/http/conf/.htpasswd tom
-m MD5格式存放
-b 批量模式
-D 删除用户
3、基于组认证
options None
AllowOverride AuthConfig 使用认证配置
AuthType Basic 使用基本认证
AuthName "Private Area" 质询时标题
AuthgroupFile /etc/http/conf/.htpasswd 密码的存放位置
Require group GroupName 可访问的用户
先创建用户,在创建组
组文件:
组名:用户1 用户2 用户3
15.虚拟主机
一个物理服务器提供多个站点;使用虚拟主机得先取消中心主机
基于不同的IP实现不同的虚拟主机
变化IP
基于不同的port实现不同的虚拟主机
变化port
基于不同主机名实现不同的虚拟主机
变化ServerName的值
通过请求报文中的HOST来实现不同的虚拟主机访问
SeverName
DocumentRoot ""
ServerAlias
ServerAdmin
将全局中的DocumentRoot""注释掉
虚拟主机的单独配置
用户认证
访问日志
错误日志
别名
脚本别名
基于IP认证机制,基于用户认证
http协议认证、表单认证
16.https协议
x509.3证书格式
证书格式的版本号
证书序列号
证书签名算法
证书颁发者
有效期
持有者的名称
持有者的公钥
CA的ID
持有者的ID
其他扩展信息
基本约束
证书策略
密钥的使用限制
CA签名
ssl握手要完成的工作
交换协议版本号
选择一个双方都支持的加密方式
对两端实现身份验证
密钥交换
http:文本协议 80/tcp
https:二进制格式的协议 443/tcp
SSL会话基于IP地址进行:不支持在基于主机名的虚拟主机上实现
客户端验证服务器端证书时:
日期检查:证书是否在有效期内
证书颁发者的可信度
证书的签名检测:
持有者的身份检测
httpd:基于mod_ssl模块实现对ssl的支持
可以在/etc/pki/tls/certs
openssl s_client
-connet:验证的地址:端口
-CAfile:CA证书的路径
1)、准备好服务器的私钥和证书
2)、安装mod_ssl模块
yum -y install mod_ssl
3)、配置/etc/httpd/conf.d/ssl.conf
配置实用ssl的虚拟主机
ServerName
DocunmentRoot
配置证书和私钥
SSLCertificatFile 证书文件
SSLCertificatKeyFile 密钥文件
4)、重启httpd服务
5)、测试
openssl s_client -connet:验证的地址:端口 -CAfile:CA证书的路径
URL Rewrite:URL重写
17、服务器status页面
内生的status信息,且此信息可以通过web予以显示
基于URL访问属性
基于单个文件的访问属性
也可以使用
来实现正则表达式的配置
如果要配置其属性的URL能映射到某具体文件系统路径,建议使用
处理器:当文件被调用时,Apache内部表现形式:一般每种文件类型都有其隐式处理器;否则需要自己定义
显式的定义使用的处理器:SetHandler
setHeandler server-status
定义访问控制机制
基于IP控制
基于用户控制
示例:
SetHandler sever-status
AuthType Basic
AuthName "Sever Status"
AuthUserFile "/etc/http/conf/.htpasswd"
Require valid-user
Order deny,allow
Allow from all
18、ab工具的初步使用
-c 模拟的并发数
-n 模拟的总请求数
一般并发数应该小于等于请求数
http_load webbench seige(只做参考)
tcp_copy
19、使用mod_deflate模块压缩页面优化传输速度,可以写为一行,也可以写多行,默认为gzip
SetOutputFilter DEFLATE
# mod_deflate configuration
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
# Level of compression (Highest 9 - Lowest 1)默认为6
DeflateCompressionLevel 9
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
扩展功能
apachectl
Apache HTTP服务控制工具
ab
Apache HTTP服务器性能测试工具
apxs
Apache 扩展工具
configure
配置源代码
dbmmanage
为基本认证创建和更新DBM格式的用户认证文件
htcacheclean
清理磁盘缓存
htdigest
为摘要认证创建和更新用户认证文件。
htdbm
操作 DBM 密码数据库。
htpasswd
为基本认证创建和更新用户认证文件。
httxt2dbm
为 RewriteMap 创建 dbm 文件。
logresolve
将 Apache 日志文件中的 IP 地址解析到主机名称。
rotatelogs
不关闭 Apache 而切换日志文件。
suexec
执行外部程序前切换用户。
20.资源限定
软限制:可以超出的限制,但仅能超出一定时长
硬限制:绝对不能超出的限制
ulimit:只能修改软限制
-n [N]:显示或限制能打开的最大的文件句柄数,
-u [N]:所能够打开的最大进程数
如果修改硬限制
/etc/security/limits.conf,扩展配置etc/security/limits.d/*.conf
对谁进行限定 类型 要限定的选项 值