apr-1.5.2.tar.gz :./configure --prefix=/usr/local/dev/apr-1.5.2 #个人习惯,将依赖包归类放在一起
#编译apr到最后会报cannot remove ‘libtoolT’的错,编辑configure注释掉 $RM "$cfgfile"这行即可
apr-util-1.5.4.tar.gz :./configure --prefix=/usr/local/dev/apr-util-1.5.4 --with-apr=/usr/local/dev/apr-1.5.2
pcre-8.39.tar.gz:./configure --prefix=/usr/local/dev/pcre-8.39
openssl -1.0.2k.tar.gz :./config --prefix=/usr/local/dev/openssl-1.0.2k #openssl使用config而不是Configure
httpd-2.4.25.tar.gz :#实际功能按照需要配置
./configure --prefix=/usr/local/apache-2.4.25
--with-apr=/usr/local/dev/apr-1.5.2
--with-apr-util=/usr/local/dev/apr-util-1.5.4
--with-pcre=/usr/local/dev/pcre-8.38
--with-ssl=/usr/local/dev/openssl-1.0.2k
--enable-module=so #打开so模块
--enable-deflate=shared #页面压缩
--enable-expires=shared #http控制
--enable-rewrite=shared #url重写
--enable-ssl #ssl加密
--enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache#(支持缓存,文件缓存,记忆缓存,磁盘缓存)
--enable-static-support --enable-static-htpasswd --enable-static-htdigest #这里的功能按照需要添加,此处有个[链接]apache功能介绍
--enable-mpms-shared=all --with-mpm=( prefork | worker | event ) #工作模式,此处有个文献详细介绍[链接]工作模式之间的不同
Apache的主配置文件在httpd.conf,建议配置前先备份一份httpd.conf.default
由于httpd.conf默认带注释的很多,导致文件很冗长,执行一下:sed -i -e '/#/'d -e '/^$/'d httpd.conf (要确认你真的已经备份了一份原始配置),这个指令的意思是:'#'d 删除带#号的行;'^$'d 删除空白行
[主配置项]
ServerRoot "/Apache path"#Apache软件安装的位置
PidFile /httpd.pid #httpd父进程pid文件
Listen 80 #监听的端口号
ServerName hostname #主站点名称(域名)
DocumentRoot "/web path" #主站点网页存储位置(最好使用绝对路径)
[模块项]
LoadModule 模块名 模块位置 导入的.so文件
默认部分模块会被注释,在加入新模块时候去掉注释即可,(备份原始配置最主要就是注释使用模块这里很多是注释掉的,按照需要选择添加),使用了哪些模块会有对应的模块配置项出现,在模块配置项进行自定义配置
[工作模式配置]
#不同的工作模式在配置时会有参数赋值,这里介绍参数
NumServers #服务器启动时启动的子进程数
StartThreads #每个子进程启动时启动的线程数
MinSpareThreads #内存中的最小空闲线程数
MaxSpareThreads #最大空闲线程数
MaxThreadsPerChild #每个线程最多被请求多少次后退出,0不受限制
MaxRequestsPerChild #每个子进程服务多少次后被重新fork,0表示不受限制
[目录参数配置]
Options #Options控制目录将启用哪些服务器特性[可选参数]
①All:使用所有特性(默认);None:不使用任何特性
②FollowSymLinks:允许目录使用符号链接;SymLinksIfOwnerMatch:符号链接的属主和访问人匹配时才可访问
③Indexes:若DirectoryIndex不存在则返回目录列表 ;DirectoryIndex:定义页面主文件
④MultiViews:若存在同名文件返回最匹配用户需求的文件(需要mod_negotiation模块)
⑤ExecCGI:允许使用CGI脚本(需要mod_cgi模块);Includes:允许包含提供的服务器端包含功能(需要mod_include模块)
AllowOverride #对.htaccess文件的属性配置[可选参数,根目录一般为None,其他按照需求]
①All:允许使用全部属性;None:不允许任何属性
②AuthConfig:允许使用与认证授权相关的指令(包括AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require等)
③FileInfo:允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令);控制文档元数据的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName);mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令
④Indexes:允许使用控制目录索引的指令(包括AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName等)
⑤Limit:允许使用控制主机指令(Allow,Deny,Order)
⑥Options:允许使用控制指定目录功能指令(Options和XBitHack)
#访问控制[2.2版本]
Order allow,deny #控制在访问时allow和deny的优先级别
Allow from all #Allow from为允许访问列表 ,Deny from为拒绝访问列表
#访问控制[2.4版本]
Require [ all | ip | host | local ] #控制的对象,ip和host需要指定 [ granted | denied ] #允许或拒绝
[文件类型配置]
#设置默认目录资源列表文件
DirectoryIndex index.html #添加新的文件支持,按照顺序访问文件类型
#拒绝某类文件后缀
#[2.2版本]
Order allow,deny
Deny from all
Satisfy All
#[2.4版本]
Require all denied
#设定默认MIME内容类型
DefaultType text/plain
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#增加映射类型
[日志配置]
#错误日志
ErrorLog /path/error_log #错误日志的保存位置
LogLevel [ debug < info < notice < warn < error < crit < alert < amerg ]
#选择一个级别,对应 [调试<普通<重要<警告<发生错误<紧急情况<需要立刻处理<即将崩溃] 错误时候记录
#访问日志
CustomLog /path/access_log combined #访问日志存放位置 和日志使用哪种格式
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined #"日志内容" 日志格式名为combined
#日志格式介绍:
%h:客户端ip地址或主机名
%l:这是由客户端判断的RFC身份,输出中的符号 "-" 表示此处信息无效
%u:由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 "-" 表示此处信息无效
%t:服务器完成对请求的处理时的时间
"%r":引号中是客户发出的包含了许多有用信息的请求内容
%>s:这个是服务器返回给客户端的状态码
%b:最后这项是返回给客户端的不包括响应头的字节数
"%{Referer}i":此项指明了该请求是从被哪个网页提交过来的
"%{User-Agent}i":此项是客户浏览器提供的浏览器识别信息
[虚拟主机配置]
#不同IP配置虚拟主机(机器有多个IP支持)
Listen 80
DocumentRoot /path
ServerName hostname
DocumentRoot /path
ServerName hostname
#不同端口配置虚拟主机
Listen 80
Listen 81
DocumentRoot /path
ServerName hostname
DocumentRoot /path
ServerName hostname
还有其他配置方式可以自行选择
[其他配置]
ServerTokens #http头信息[ Prod:应用名apache;OS:应用,完整版本和操作系统 apache/2.4.2(Unix);Full:OS包含的与是用的模块信息,不推荐使用 ]
ServerSignature [ On | Off ]#页面错误时是否显示服务器版本信息
KeepAlive [ On | Off ] #客户端是否保持连接状态
MaxKeepAliveRequests #单个连接服务最多请求数
KeepAliveTimeout #若连接无请求数据,则对应时间后断开连接,默认15秒
Alias /url/ "/path/url/" #设置别名,访问url可以映射/path/url
ScriptAlias /cgi-bin/ "/path/cgi-bin/"#设置cgi脚本,对应的脚本文件要有可执行属性
[链接]2.2版本和2.4版本的配置改动
[链接]更多功能的详解
[链接]httpd.conf详解与翻译