apache的部署学习

编译环境:centos7,准备好需要的源码包,这里使用包编译顺序如下:

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详解与翻译





 

你可能感兴趣的:(Apache)