这篇短文主要描述在ubuntu环境下源码安装apache2的遇到的问题以及解决方式。
思路:
1.ubuntu12.04默认安装下没有安装C++,需要先安装C++编译所依赖的相关组件。
2.安装apache多个依赖库,包括:apr, apr-util,pcre,zlib-devel.
3.安装apache2
c++编译依赖组件
刚装好的Ubuntu系统中已经有GCC了,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。
安装所需要的软件包:
sudo apt-get install build-essential
安装apache依赖库
为了方便,我们先进入/usr/local/src目录
1.源码安装apr
(1)下载
sudo wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
(2)解压
tar -zxvf apr-1.4.5.tar.gz
或者 gzip -d apr-1.4.5.tar.gz ,tar xvf apr-1.4.5.tar
(3)进入apr-1.4.5,指定apr安装路径
cd apr-1.4.5
./configure -prefix=/usr/local/apr
(4)编译
make
(5)安装
make install
2.源码安装apr-util
(1)下载
sudo wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
(2)解压
tar -zxvf apr-util-1.3.12.tar.gz
(3)进入apr-util-1.3.12,指定apr-util安装路径时一并带上 apr安装路径
cd apr-util-1.3.12
./configure -prefix=/usr/local/apr-util --with-apr=/usr/local/apr
(4)编译
make
(5)安装
make install
3.源码安装pcre
(1)下载
sudo wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
(2)解压
sudo unzip pcre-8.10.zip -d ./
(3)进入pcre-8.10,指定pcre安装路径
cd pcre-8.10
./configure -prefix=/usr/local/pcre
(4)编译
make
(5)安装
make install
4.安装zlib-devel
sudo apt-get install zlib1g-dev
若不安装该包,则在安装Apache2时会出现checking whether to enable mod_deflate... configure: error:
mod_deflate has been requested but can not be built due to prerequisite failures错误
此包不建议下载安装,因多次尝试未成功。
安装Apache2
为了方便,我们先进入/usr/local/src目录
(1)手工下载 httpd-2.4.10.tar.gz 地址:http://httpd.apache.org/download.cgi#apache24
(2)解压
tar -zxvf httpd-2.4.10.tar.gz
(3)进入httpd-2.4.10,指定Apache安装路径
cd httpd-2.4.10
./configure -prefix=/usr/local/apache2 --enable-deflate --enable-expires --enable-headers --enable-modules=most
--enable-so --with-mpm=worker --enable-rewrite --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
--with-pcre=/usr/local/pcre
此步可能以下几种错误:
a.出现checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but
can not be built due to prerequisite failures
解决办法:sudo apt-get install zlib1g-dev
b. 出现/bin/bash: bison: command not found
解决办法:sudo apt-get install bison
c.出现/bin/bash: flex: command not found
解决办法:sudo apt-get install flex
(4)检查apache2是否有安装错误
echo $?
若返回0,则表示安装正确
(5)编译
make
(6)安装
make install
{% raw %}
{% endhighlight %}
##Apache2启动、停止、重启
前提apahce安装目录为/usr/local/apache2,若不是,请相应修改
{% highlight bash %}
{% raw %}
(1)apahce启动
/usr/local/apache2/bin/apachectl start
(2)apache停止
/usr/local/apache2/bin/apachectl stop
(3)apache重新启动
/usr/local/apache2/bin/apachectl restart
(4)在重启 Apache 服务器时不中断当前连接
/usr/local/sbin/apachectl graceful
(5)若apache安装成为linux的服务则可以:
service httpd start 启动
service httpd restart 重新启动
service httpd stop 停止服务
如何检查是否工作
打开浏览器,输入http://127.0.1.1
可以看到Its work
表示已经启动了
后记
在我们安装apache2是配置了一堆参数,他们的目的是什么?为什么要这么配?
./cofigure后面的参数说明: –prefix=/opt/demo/apache2 这个选项指定apache的安装位置,可以根据实际情况更改,如/usr/local等
–enable-rewrite 实时重写URL
–enable-so DSO动态模块加载,很多第三方模块都需要此选项支持
–enable-ssl 使用安全套接字层(SSL)和传输层安全(TLS)协议实现高强度加密传输
–enable-vhost-alias 提供大批量虚拟主机的动态配置支持
–enable-proxy 提供HTTP/1.1的**/网关功能支持
–enable-proxy-connect mod_proxy的扩展,提供HTTP connect方法支持
–enable-proxy-http mod_proxy的扩展,提供http支持
–enable-proxy-ajp mod_proxy的扩展,提供Apache JServ Protocol支持,ajp是对tomcat提供整合的新模块
–with-mpm=prefork MPM是你想要使用的多路处理模块的名字,这里选择prefork,worker模式的mpm是一种混合型模式,可以处理海量请求的同时又保持了基于进程mpm的稳定性,具体可以google一下