Apache 安装 静态编译 动态编译
2014-09-19 09:53 (分类:Linux)
排名第一的web服务器。
(linux环境:CentOS release 6.5 (Final))
安装出错:如下
configure: error: APR not found . Please read the documentation
什么是APR?
APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
随着Apache的进一步开 发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。目前APR主要还是由Apache使用,不过由于APR的较好的移植性。
apache 的apr项目目前有三部分组成,分别是apr、apr-util、apr-iconv
1.apr中包含了一些通用的开发组件,包括mmap,DSO等等
2.apr-util该目录中也是包含了一些常用的开发组件。这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等。
3.apr-iconv包中的文件主要用于实现iconv编码。目前的大部分编码转换过程都是与本地编码相关的。在进行转换之前必须能够正确地设置本地编码。因此假如两个非本地编码A和B需要转换,则转换过程大致为A->Local以及Local->B或者B->Local以及Local->A。
1.解决apr not found问题
# 编译和安装 apr-1.4.5
[root@xxx apr-1.4.5]# ./configure --prefix=/usr/local/apr
[root@xxx apr-1.4.5]# make
[root@xxx apr-1.4.5]# make install
2.解决APR-util not found问题
[root@xxx test]# tar -zxf apr-util-1.3.12.tar.gz
[root@xxx apr-util-1.3.12]#./configure --with-apr=/usr/local/apr
[root@xxx apr-util-1.3.12]# make
[root@xxx apr-util-1.3.12]# make install
3.解决pcre问题
[root@xt test]#unzip -o pcre-8.10.zip
[root@xt test]#cd pcre-8.10
[root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre
[root@xt pcre-8.10]#make && make install
3.1
下载pcre-8.20编译安装,make时报错: *** [pcrecpp.lo] Error 1
这里记录下,这个错误是缺少安装gcc-c++,只需
yum -y install gcc-c++
对pcre-8.20重新configure,make && make install通过
4.最后安装Apache
Apache文档目录下
cd httpd-2.4.3
./configure --prefix=/usr/local/apache
在命令后加以下参数
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util/
--with-pcre=/usr/local/pcre
最后
make
make install
成功编译完成Apache安装~
启动Apache
service httpd start http服务启动
chkcongfig httpd on 设置httpd每次开机自己启动,但并不现在就启动
(如果启动没有成功,看下防火墙是否开启,
*关闭SElinux方法
.修改文件:/etc/selinux/config,将 SELINUX=disabled 然后重启系统
.运行命令:setup,进入”防火墙配置“,在selinux栏,选择”禁用
.运行命令:setenforce 0 不需要重启)
*关闭iptable
service iptables stop
chkconfig iptables off
有时在 执行 service httpd start时出现以下报错
httpd:unrecognized service
解决方法
将apache安装为系统服务
# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)
# chkconfig: 2345 50 90
# description: Activates/Deactivates Apache Web Server(此处为描述)
参数说明:2345表示在2345这四种启动级别里面加载这个服务,50表示启动(开机时)顺序号,90表示关闭(关机时)顺序号
最后,运行chkconfig把Apache添加到系统的启动服务组里面:
# chkconfig --add httpd
# chkconfig httpd on
然后再service httpd start
apache 的静态编译 和 动态编译
Apache拥有4层结构,从核心到外层的module。
而外层的module可以用通过静态和动态两种方式与Apache共同工作。这也就引入下文的“动态”和“静态”两种编译安装方式:
一、静态编译:
静态编译: 编译的时候,所有的模块自己编译进 httpd 这个文件中 ,启动Apache的时候这些模块就已经加载进来了,可以直接来使用,而不用再 httpd.conf 中在 LoadModule 来加载,只要在 <ifmodule></ifmodule> 中来配置就可以了。
就是编译的时候,使用--enable-mods-shared=[module]或者--enable-[module]=shared 来动态编译。那么什么是动态? 静态是直接编译进httpd中, 那么动态显然就不编译进去了,也就是你启动的时候根本不会加载这个模块, 而是给你一个module.so 文件,你一定要使用Loadmodule 这个语法来加载,这个模块才有效。
说明:
--enable-mods-shared=all 动态加载所有标准模块(并不是说apache所有的模块都已经通过这条命令被加载进来了)
--enable-modules=all 静态加载所有模块,由于编译参数中使用了动态加载所有标准模块,所 以其它需要被编译进来的模块都会以动态加载模块方式进行编译。
enable-so 选项:让 Apache 可以支持DSO模式,但是不实际编译任何动态模块;
注意,这里采用的是 Apache2.0 的语法。如果Apache 是1.3版本,应改为–enable-module=so
总结三点:
1) 如果编译参数中有--enable-mods-shared=all 或者--enable-mods-shared=most,那么所有(大多数)--enable-[module]都将会以动态模式来编译,
除非特别指定--enable-[module]=static 为静态编译
./configure --prefix=/app/apache2
--enable-mods-shared=all
--enable-cache=static
--enable-disk-cache=static
2)如果编译参数中有--enable-modules=all | most 指定所有静态方式的话
还可以用--enable-[module]=shared来动态加载模块。
./configure --prefix=/app/apache2
--enable-modules=all
--enable-cache=shared
--enable-mem-cache=shared
3)特别注意如果编译参数中既有--enable-mods=all静态编译又有--enable-mods-shared=all动态编译,那么最终会使用动态编译。
官方说是静态编译比动态编译性能要好5%左右
推荐是静态编译所有模块,但保留动态加载选项--enable-so,之后还是可以在配置文件中动态加载自己编译的模块。
./configure --prefix=/app/apache2
--enable-modules=all
--enable-cache=static
--enable-mem-cache=static
--enable-file-cache=static
--enable-disk-cache=static
--enable-ssl=satic
--enable-so
举例:
1.安装不带任何参数,只是指定一个安装目录 (静态编译)
/configure --prefix=/app/apache2
来看看默认静态编译安装有哪些模块
# httpd -l
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_version.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_cgid.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c
2.第二次安装使用动态编译安装,参数也只是多了一个
./configure --prefix=/app/apache2 --enable-mods-shared=all
看一下结果
# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
只有几个核心的模块,也就是说这4个被静态编译进httpd主文件,
随着主进程的开启就直接启动模块了。
再查看httpd.conf配置文件中包含了以下LoadModule 模块的行,共有51个,
这些模块的路径都在modules/ 目录下,这些就是被动态加载的模块,
如果你不需要某个模块,只要在行首加#就可以。
但这51个模块并不是apache的所有模块,
这一点需要搞清楚,在这51个模块之外的其他所有模块都需要在编译参数中明确指定,后面会讲到这一点。
|
LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_anon_module modules/mod_authn_anon.so LoadModule authn_dbd_module modules/mod_authn_dbd.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so |
Apache 安装 静态编译 动态编译的更多相关文章
- OpenCV:Debug和Release模式 && 静态和动态编译
1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...
- 关于静态与动态编译arm平台程序的比較
因为近期弄个console程序,调用了readline,ncurses库,这两个动态库加起来有四百多k.而程序事实上非常小,其它地方也没使用到这两个库 所以想静态编译看看console程序有多大. # ...
- Apache静态编译与动态编译详解
Apache拥有4层结构,从核心到外层的module.而外层的module可以用通过静态和动态两种方式与Apache共同工作.这也就引入下文的“动态”和“静态”两种编译安装方式: 静态编译: 编译的时 ...
- JIT(动态编译)和AOT(静态编译)编译技术比较
Java 应用程序的性能经常成为开发社区中的讨论热点.因为该语言的设计初衷是使用解释的方式支持应用程序的可移植性目标,早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之类的编译语言.尽管 ...
- 关于HotSpot VM以及Java语言的动态编译 你可能想知道这些
目录 1 HotSpot VM的历史 2 HotSpot VM 概述 2.1 编译器 2.2 解释器 2.3 解释型语言 VS 编译型语言 3 动态编译 3.1 什么是动态编译 3.2 HotSpot ...
- ASP.NET Core Razor 视图预编译、动态编译
0x01 前言 ASP.NET Core在默认发布情况下,会启动预编译将试图编译成xx.Views.dll,也许在视图中打算修改一处很细小的地方我们需要再重新编译视图进行发布.下面我将从 ASP.NE ...
- Java学习:注解,反射,动态编译
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解 什么是注解 ? Annotat ...
- apache 静态编译和动态编译参考
apache-2.2.22 编译安装笔记 一.静态编译 在使用./configure 编译的时候,即没有使用--enable-mods-shared=[module]或者--enable-[m ...
- apache动态编译与静态编译
静态: 在使用./configure 编译的时候,如果不指定某个模块为动态,即没有使用:enable-mods-shared=module或者enable-module=shared 这个2个中的一个 ...
随机推荐
- 【 Tomcat 】tomcat8.0 基本参数调优配置-----(2)
Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你.对于操作系统优化来说,是尽可能的增大可使用的内存容量.提高CPU 的频率,保证文件 ...
- 匈牙利算法(Kuhn-Munkres)算法
这个算法有点难度,一般比较标准的描述网页上也有相关的描述,我在这里就简单的用十分通俗的语言给大家入个门 主要可以结合https://blog.csdn.net/zsfcg/article/detail ...
- SSM框架整合中,不报错,数据库只能存ID进去问题解决
嗯,这个错误其实不能算错误,是粗心造成的,在配置文件中对于传递的参数没有写#字符,直接写的的属性名.居然错了两次,哎!!! 嗯,还有一个问题,在动态SQL中,if标签中test属性中判断时,不能用大写 ...
- 玩转Django2.0---Django笔记建站基础十三(第三方功能应用)
第13章 第三方功能应用 在前面的章节中,我们主要讲述Django框架的内置功能以及使用方法,而本章主要讲述Django的第三方功能应用以及使用方法.通过本章的学习,读者能够在网站开发过程中快速开发网 ...
- 异想家IDEA的偏好配置
最好将配置文件位置改为软件安装目录下,因为只有自己用,易于便携. 修改bin目录下的idea.properties,注释#去掉修改idea.config.path.idea.system.path配置 ...
- http轮询,长轮询
轮询,长轮询 轮询 轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 优点:后端程序编写比较容易. 缺点:请求中有大半是无用,浪费带宽和服务器资源. 实例:适于小 ...
- ios---剪裁圆形图片方法
剪裁圆形图片 - (instancetype)xmg_circleImage { // 1.开启图形上下文 // 比例因素:当前点与像素比例 UIGraphicsBeginImageContextWi ...
- Java8新特性一点通 | 回顾功能接口Functional Interface
Functional Interface Functional Interface是什么? 功能接口是java 8中的新增功能,它们只允许一个抽象方法.这些接口也称为单抽象方法接口(SAM接口).这些 ...
- Exception:Request processing failed; nested exception is org.apache.ibatis.binding.BindingException
异常 在测试Spring MVC+Mybatis整合时,运行 Maven build -> tomcat7:Run 遇到如下异常 从异常信息上看,是找不到mapper对应的xml文件,于是我到t ...
- python学习Day02
[主要内容] 1. 循环. while循环 while 条件: 代码块(循环体) 执行流程: 1. 判断条件是否为真. 如果真. 执行代码块 2. 再次判断条件是否为真...... 3. 当条件为假. ...