Linux上从源码安装Apache

1. 前言
本文档试图以最简单方式阐明Apache2.4版本的安装。Apache采用的是automake编译方式,包括它所依赖的库,正因为这种依赖,使用得编译安装稍变复杂。
如果喜欢英文阅读,可直接查看官方的指南:http://httpd.apache.org/docs/2.4/install.html,这里有详细的说明。
2. 依赖库
Apache依赖apr、apr-util和pcre,下载网址为:
1) Apr和Apr-util:http://apr.apache.org/。截止2012/12/26,版本分别为:apr-1.4.6.tar.gz和apr-util-1.5.1.tar.gz;
2) Pcre:http://pcre.org/(实际下载网址是http://sourceforge.net/projects/pcre/files/pcre/和ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/,建议从sourceforge.net处下载,后一个经常抽风)。截止2012/12/26,版本为:pcre-8.32.tar.gz。
3. Apache2.4下载网址
http://httpd.apache.org/download.cgi#apache24
Apache2.4的源代码包为:httpd-2.4.3.tar.gz(注意最后一位版本号3可能不同)。
4. 安装步骤
Apr和Apr-util不用特别去编译和安装,随Apache一起完成,见下面的“安装Apache”一节。
4.1. 安装Pcre
在安装Apache之前,需要安装好Pcre,安装过程完全遵循automake方式,步骤依次如下:
1) ./configure –prefix=/usr/local/pcre(注:将Pcre安装到/usr/local/pcre目录下)
2) make
3) make install
4.2. 安装Apache
1) 将httpd-2.4.3.tar.gz上传到编译目录下(这里假设编译目录为/tmp/X,也可以为其它任意目录)
2) 进入/tmp/X目录,解压源码包:tar xzf httpd-2.4.3.tar.gz,解压后会在/tmp/X产生一个httpd-2.4.3目录,在httpd-2.4.3目录下还会有个srclib子目录
3) 将Apr和Apr-util源码包上传到srclib子目录
4) 进入srclib子目录,将Apr和Apr-util源码包解压,如:tar xzf apr-1.4.6.tar.gz; tar xzf apr-util-1.5.1.tar.gz,注意解压后产生的Apr和Apr-util目录是带版本号的
5) 重命名Apr和Apr-util目录,去掉后面的版本号,如:mv apr-1.4.6 apr; mv apr-util-1.5.1 apr-util(这个在官方的指南里有说明的)
6) 进入/tmp/X/httpd-2.4.3目录,按照automake方式来编译Apache(注意需要指定Pcre):
./configure –prefix=/usr/local/httpd –with-pcre=/usr/local/pcre (注:/usr/local/httpd是Apache的安装目录,可根据需要修改)。
7) 接下来执行make编译源代码
8) 编译成功后,执行make install即可将Apache安装到/usr/local/httpd 目录下
9) 至此,大功告成!!!
5. 修改配置
如将Apache安装在/usr/local/httpd目录下,则进入/usr/local/httpd/conf目录,对http.conf按照需要进行修改,常修改的行有:
1) Listen 80
2) DocumentRoot “/usr/local/httpd/htdocs”
6. 附1:Apache官方中文文档主页
http://httpd.apache.org/docs/2.4/
7. 附2:一键脚本7.1. 一键脚本前提
1) 使用root用户操作;
2) Apr、Apr-util、Pcre和Apache安装包都放在同一个目录下,如:
~/app # ls
apr-1.4.6.tar.gz apr-util-1.5.1.tar.gz httpd-2.4.3.tar.gz pcre-8.32.tar.gz
3) 目录下不要放其它后缀为.tar.gz的文件
7.2. 一键脚本全文
#!/bin/sh
# Writed by yijian on 2012/12/26
# A key to install apache
# Download
#which wget
#if test $? -ne; then
# echo “wget NOT FOUND”
#else
# wget “http://mirror.bjtu.edu.cn/apache/apr/apr-1.4.6.tar.gz”
# wget “http://mirror.bjtu.edu.cn/apache/apr/apr-util-1.5.1.tar.gz”
# wget “http://labs.mop.com/apache-mirror/httpd/httpd-2.4.3.tar.gz”
# wget “http://nchc.dl.sourceforge.net/project/pcre/pcre/8.32/pcre-8.32.tar.gz”
#fi
# Get names
apr_tar_gz=`ls |grep -e “apr-[0-9]*\.[0-9]*\.[0-9]*\.tar\.gz”`
apr_util_tar_gz=`ls |grep -e “apr-util-[0-9]*\.[0-9]*\.[0-9]*\.tar\.gz”`
apr=`basename $apr_tar_gz .tar.gz`
apr_util=`basename $apr_util_tar_gz .tar.gz`
httpd=`basename httpd-*.tar.gz .tar.gz`
pcre=`basename pcre-*.tar.gz .tar.gz`
echo $apr
echo $apr_util
echo $pcre
echo $httpd
# unzip files
tar xzf $apr.tar.gz
tar xzf $apr_util.tar.gz
tar xzf $pcre.tar.gz
tar xzf $httpd.tar.gz
# Depends
mv $apr $httpd/srclib/apr
if test $? -ne 0; then
exit 1
fi
mv $apr_util $httpd/srclib/apr-util
if test $? -ne 0; then
exit 1
fi
# Compile pcre
cd $pcre
./configure –prefix=/usr/local/pcre
make
if test $? -ne 0; then
exit 1
fi
make install
if test $? -ne 0; then
exit 1
fi
# Compile apache
cd ../$httpd
./configure –prefix=/usr/local/httpd –with-pcre=/usr/local/pcre
if test $? -ne 0; then
exit 1
fi
make
if test $? -ne 0; then
exit 1
fi
make install
if test $? -ne 0; then
exit 1
fi
# Congratulation
echo “finished”
cd /usr/local/httpd/conf

此条目发表在lnmpa分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据