设为首页 收藏本站
查看: 1506|回复: 0

[经验分享] Apache 2.2源码编译安装

[复制链接]

尚未签到

发表于 2018-11-25 13:08:28 | 显示全部楼层 |阅读模式
  一、apache2.2安装所需的前提条件:
        1.源码编译安装需要系统安装符合ANSI标准的编译器,并且在PATH系统环境变量中必须包含指向make的路径:推荐编译器gcc(源码编译安装软件的方式都必须要有编译器);
      2.Apache使用libtool和autoconf建立编译环境:因此需要安装libtool和autoconf;
      3.必须安装apr/apr-util且版本必须是1.2以上的版本;
      4.确保准确的时间:可以使用ntpdate来同步时间;
二、configure配置编译参数:

        1.安装目录(默认安装在/usr/local/apache2目录下)
        2.Apache工作模式选择:
           必须有且只能有一个MPM被静态载入到服务器中,以下两种工作模式二选一,Linux默认是prefork;
           prefork:非线程型的进程工作模式;
           worker:线程工作模式,可以处理大量请求,同时使用多进程来获得稳定性;
           关于工作模式的工作方式可参看:Apache 2.2中文版手册之多路处理模块
        3.模块选择:
        模块加载两种方式:一种是静态编译进内核即编译进httpd、另外一种是作为DSO模块动态加载;
        模块分为:基本(B)、扩展(E)、实验(X)三种类型,基本B类型模块式默认包含的,即默认静态编译进内核,其他的模块默认不包含,需要使用的话可以明确启用;
        除了core和mod_so模块,所有模块都可以编译为DSO动态加载的方式;
        第三方模块:1.作为配置参数提供(要求:模块的源代码必须是单一文件;模块只能静态连接进核心,而不能作为DSO模块)
                    2.使用apxs(Apache扩展工具)来添加第三方模块支持
      4.其他参数选项:
         1.可以指定环境变量修改configure脚本的默认选择,或者帮助configure脚本找到名字或位置不标准的库和程序;
         2.suexec配置选项:以允许你为CGI程序指定uid和gid (一般不使用)
         3.支持程序选项:
         4.特殊程序包选择:用于定义特殊程序包相关的选项
         5.系统类型:用于交叉编译在其他系统上运行的apache;不使用;
         6.杂项选择:一般不选;
         7.配置选项:configure自身运行的一些参数;

  三、编译:make
四、安装:make install

  总结:Apache源码安装主要就是就是configure配置编译参数。
  1.定义安装目录:
  --prefix参数来指定,默认为/usr/local/apache2目录;
  2.选择哪种工作模式:
  --with-mpm参数指定,linux默认为prefork
  3.根据服务器的功能需求来选择模块,选择的原则是:
      默认加载的Base组模块有哪些是不需要的?
         --disable-MODULE 用此参数禁止掉不需要的模块
      哪些扩展或实验模块是需要使用的,并选择是静态编译进内核还是编译成以DSO方式动态加载
         --enable-MODULE=static
        将MODULE静态连接进核心(仅用于扩展和实验模块)
       --enable-MODULE=shared
        将MODULE编译为DSO(可用于所有模块)
       --enable-mods-shared=MODULE-LIST
        将MODULE-LIST中的所有模块都编译成DSO(可用于所有模块)
       --enable-modules=MODULE-LIST
        将MODULE-LIST静态连接进核心(可用于所有模块)
         MODULE-LIST 可以是:
         (1)用引号界定并且用空格分隔的模块名列表,例如:
         --enable-mods-shared='headers rewrite dav'
         (2)"most"(大多数模块[遇见错误模块时忽略该模块而不中断配置过程])
         (3)"all"(所有模块[遇见错误模块时中断配置过程并报错])

  configure将忽略MODULE和MODULE-LIST中的拼写错误,注意仔细拼写。用于MODULE和MODULE-LIST中的名称是"mod_NAME"中去掉"mod_"并将剩余部分中的下划线"_"替换为连字符"-"以后的结果,比如"mod_log_config"模块应当表示为"log-config"。
  是否有其他功能需要第三方模块来实现?如果有需求的话一般使用apxs来进行添加。然后就是其他选项的参数选择;
  因此更重要的是要了解需求,要了解apache提供的功能模块,以及第三方提供的一些模块都是用来做什么的?需要这些功能吗?这才是要关注的。
下边就是几个例子:
  lnmp0.9一键安装脚本中的apache配置参数:


  • tar xvf httpd-2.2.8.tar.gz  
  • cd httpd-2.2.8  
  • ./configure \  
  • "--prefix=/usr/local/apache2" \  
  • "--disable-userdir" \  
  • "--enable-so" \  
  • "--enable-deflate=shared" \  
  • "--enable-rewrite=shared" \  
  • "--enable-expires=shared" \  
  • "--enable-static-support" \  
  • "--with-included-apr"   
  • make  
  • make install

  《基于CentOS构建高性能的LAMP平台》 一文中的配置参数:


  • tar zxvf httpd-2.2.22.tar.gz  
  • cd httpd-2.2.22/  
  • ./configure \  
  • "--prefix=/usr/local/apache" \  
  • "--disable-userdir" \  
  • "--enable-so" \  
  • "--enable-deflate" \  
  • "--enable-rewrite" \  
  • "--enable-headers" \  
  • "--enable-mime-magic" \  
  • "--enable-proxy" \  
  • "--enable-ssl" \  
  • "--enable-suexec" \  
  • "--with-included-apr" \  
  • "--with-mpm=prefork" \  
  • "--with-ssl=/usr"
  • "--disable-cgid" \  
  • "--disable-cgi"   
  • make   
  • make install

  lanmp/lnmp/lamp一键包提供的:一键安装脚本中apache的配置参数:



  • tar zxvf httpd-2.2.22.tar.gz  
  • cd httpd-2.2.22  
  • make_clean  
  • ./configure \  
  • "--prefix=/www/wdlinux/httpd-2.2.22" \  
  • "--disable-userdir" \  
  • "--enable-so" \  
  • "--enable-deflate" \  
  • "--enable-rewrite"   
  • "--enable-headers" \  
  • "--enable-expires"   
  • make  
  • make install


模块列表:
  基本(B)模块默认包含,必须明确禁用;扩展(E)/实验(X)模块默认不包含,必须明确启用
  
模块名称状态简要描述
mod_actions[/td]

[td]
(B)[/td]

[td]
根据特定的媒体类型或请求方法,激活特定的CGI脚本
mod_alias[/td]

[td]
(B)[/td]

[td]
提供从文件系统的不同部分到文档树的映射和URL重定向
mod_asis[/td]

[td]
(B)[/td]

[td]
发送自己包含HTTP头内容的文件
mod_auth_basic[/td]

[td]
(B)[/td]

[td]
使用基本认证
mod_authn_default[/td]

[td]
(B)[/td]

[td]
在未正确配置认证模块的情况下简单拒绝一切认证信息
mod_authn_file[/td]

[td]
(B)[/td]

[td]
使用纯文本文件为认证提供支持
mod_authz_default[/td]

[td]
(B)[/td]

[td]
在未正确配置授权支持模块的情况下简单拒绝一切授权请求
mod_authz_groupfile[/td]

[td]
(B)[/td]

[td]
使用纯文本文件为组提供授权支持
mod_authz_host[/td]

[td]
(B)[/td]

[td]
供基于主机名、IP地址、请求特征的访问控制
mod_authz_user[/td]

[td]
(B)[/td]

[td]
基于每个用户提供授权支持
mod_autoindex[/td]

[td]
(B)[/td]

[td]
自动对目录中的内容生成列表,类似于"ls"或"dir"命令
mod_cgi[/td]

[td]
(B)[/td]

[td]
在非线程型MPM(prefork)上提供对CGI脚本执行的支持
mod_cgid[/td]

[td]
(B)[/td]

[td]
在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本
mod_dir[/td]

[td]
(B)[/td]

[td]
指定目录索引文件以及为目录提供"尾斜杠"重定向
mod_env[/td]

[td]
(B)[/td]

[td]
允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量
mod_filter[/td]

[td]
(B)[/td]

[td]
根据上下文实际情况对输出过滤器进行动态配置
mod_imagemap[/td]

[td]
(B)[/td]

[td]
处理服务器端图像映射
mod_include[/td]

[td]
(B)[/td]

[td]
实现服务端包含文档(SSI)处理
mod_isapi[/td]

[td]
(B)[/td]

[td]
仅限于在Windows平台上实现ISAPI扩展
mod_log_config[/td]

[td]
(B)[/td]

[td]
允许记录日志和定制日志文件格式
mod_mime[/td]

[td]
(B)[/td]

[td]
根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码)
mod_negotiation[/td]

[td]
(B)[/td]

[td]
提供内容协商支持
mod_nw_ssl[/td]

[td]
(B)[/td]

[td]
仅限于在NetWare平台上实现SSL加密支持
mod_setenvif[/td]

[td]
(B)[/td]

[td]
根据客户端请求头字段设置环境变量
mod_status[/td]

[td]
(B)[/td]

[td]
生成描述服务器状态的Web页面
mod_userdir[/td]

[td]
(B)[/td]

[td]
允许用户从自己的主目录中提供页面(使用"/~username")
mod_auth_digest[/td]

[td]
(X)[/td]

[td]
使用MD5摘要认证(更安全,但是只有最新的浏览器才支持)
mod_authn_alias[/td]

[td]
(E)[/td]

[td]
基于实际认证支持者创建扩展的认证支持者,并为它起一个别名以便于引用
mod_authn_anon[/td]

[td]
(E)[/td]

[td]
提供匿名用户认证支持
mod_authn_dbd[/td]

[td]
(E)[/td]

[td]
使用SQL数据库为认证提供支持
mod_authn_dbm[/td]

[td]
(E)[/td]

[td]
使用DBM数据库为认证提供支持
mod_authnz_ldap[/td]

[td]
(E)[/td]

[td]
允许使用一个LDAP目录存储用户名和密码数据库来执行基本认证和授权
mod_authz_dbm[/td]

[td]
(E)[/td]

[td]
使用DBM数据库文件为组提供授权支持
mod_authz_owner[/td]

[td]
(E)[/td]

[td]
基于文件的所有者进行授权
mod_cache[/td]

[td]
(E)[/td]

[td]
基于URI键的内容动态缓冲(内存或磁盘)
mod_cern_meta[/td]

[td]
(E)[/td]

[td]
允许Apache使用CERN httpd元文件,从而可以在发送文件时对头进行修改
mod_charset_lite[/td]

[td]
(X)[/td]

[td]
允许对页面进行字符集转换
mod_dav[/td]

[td]
(E)[/td]

[td]
允许Apache提供DAV协议支持
mod_dav_fs[/td]

[td]
(E)[/td]

[td]
mod_dav访问服务器上的文件系统提供支持
mod_dav_lock[/td]

[td]
(E)[/td]

[td]
mod_dav锁定服务器上的文件提供支持
mod_dbd[/td]

[td]
(E)[/td]

[td]
管理SQL数据库连接,为需要数据库功能的模块提供支持
mod_deflate[/td]

[td]
(E)[/td]

[td]
压缩发送给客户端的内容
mod_disk_cache[/td]

[td]
(E)[/td]

[td]
基于磁盘的缓冲管理器
mod_dumpio[/td]

[td]
(E)[/td]

[td]
将所有I/O操作转储到错误日志中
mod_echo[/td]

[td]
(X)[/td]

[td]
一个很简单的协议演示模块
mod_example[/td]

[td]
(X)[/td]

[td]
一个很简单的Apache模块API演示模块
mod_expires[/td]

[td]
(E)[/td]

[td]
允许通过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容
mod_ext_filter[/td]

[td]
(E)[/td]

[td]
使用外部程序作为过滤器
mod_file_cache[/td]

[td]
(X)[/td]

[td]
提供文件描述符缓存支持,从而提高Apache性能
mod_headers[/td]

[td]
(E)[/td]

[td]
允许通过配置文件控制任意的HTTP请求和应答头信息
mod_ident[/td]

[td]
(E)[/td]

[td]
实现RFC1413规定的ident查找
mod_info[/td]

[td]
(E)[/td]

[td]
生成Apache配置情况的Web页面
mod_ldap[/td]

[td]
(E)[/td]

[td]
为其它LDAP模块提供LDAP连接池和结果缓冲服务
mod_log_forensic[/td]

[td]
(E)[/td]

[td]
实现"对比日志",即在请求被处理之前和处理完成之后进行两次记录
mod_logio[/td]

[td]
(E)[/td]

[td]
对每个请求的输入/输出字节数以及HTTP头进行日志记录
mod_mem_cache[/td]

[td]
(E)[/td]

[td]
基于内存的缓冲管理器
mod_mime_magic[/td]

[td]
(E)[/td]

[td]
通过读取部分文件内容自动猜测文件的MIME类型
mod_proxy[/td]

[td]
(E)[/td]

[td]
提供HTTP/1.1的代理/网关功能支持
mod_proxy_ajp[/td]

[td]
(E)[/td]

[td]
mod_proxy的扩展,提供Apache JServ Protocol支持
mod_proxy_balancer[/td]

[td]
(E)[/td]

[td]
mod_proxy的扩展,提供负载平衡支持
mod_proxy_connect[/td]

[td]
(E)[/td]

[td]
mod_proxy的扩展,提供对处理HTTP CONNECT方法的支持
mod_proxy_ftp[/td]

[td]
(E)[/td]

[td]
mod_proxy的FTP支持模块
mod_proxy_http[/td]

[td]
(E)[/td]

[td]
mod_proxy的HTTP支持模块
mod_rewrite[/td]

[td]
(E)[/td]

[td]
一个基于一定规则的实时重写URL请求的引擎
mod_so[/td]

[td]
(E)[/td]

[td]
允许运行时加载DSO模块
mod_speling[/td]

[td]
(E)[/td]

[td]
自动纠正URL中的拼写错误
mod_ssl[/td]

[td]
(E)[/td]

[td]
使用安全套接字层(SSL)和传输层安全(TLS)协议实现高强度加密传输
mod_suexec[/td]

[td]
(E)[/td]

[td]
使用与调用web服务器的用户不同的用户身份来运行CGI和SSI程序
mod_unique_id[/td]

[td]
(E)[/td]

[td]
为每个请求生成唯一的标识以便跟踪
mod_usertrack[/td]

[td]
(E)[/td]

[td]
使用Session跟踪用户(会发送很多Cookie),以记录用户的点击流
mod_version[/td]

[td]
(E)[/td]

[td]
提供基于版本的配置段支持
mod_vhost_alias[/td]

[td]
(E)[/td]

[td]
提供大批量虚拟主机的动态配置支持


  参考资料:
  Apache 2.2 中文手册:http://www.xuchao.org/docs/apache/




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-639424-1-1.html 上篇帖子: Apache 2.2 configure 配置选项参数 下篇帖子: 在Mac OS X中配置php,apache,mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表