前面介绍了源码安装,现在小试牛刀一把。在linux中安装httpd,下面是安装步骤:
一、下载httpd-2.4.4.tar.bz2.
二、tar�Cjxvf httpd-2.4.4.tar.bz2 -C /usr/local/src
三、进入 /usr/local/src 可以看到你解压缩后的一个名为httpd-2.4.4的文件夹
四、使用ls查看里面的内容,一般源码安装的文件都有一些特征的文件,如README INSTALL (这
两个一般都是说明文件,为了知道你的安装),CONFIGURE(它是一个可执行的脚本文件,目的是
为了 生成makefile文件,由源码的开发商提供)
INSTALL的内容:
$ ./configure --prefix=PREFIX (安装目录)
$ make (经过第一步之后就生成了makefile文件)
$ make install (将产出的makefile文件安装同一个目录)
$ PREFIX/bin/apachectl start 在安装目录的中会生成一个bin文件,里面有可执行的脚本)
五、在安装时指明两个目录安装路径配置文件路径sysconfigdir
六、--with-apr-util= apach可移植运行库,为了在多种操作系统中使用,如果不安装的话就
无法安装apache。
七、然后运行 ./ configure --prefix=/usr/local/apache --sysconfdir = /etc/apache 开
始进行编译
八、可是这步报错了,为什么呢?因为./configure 是一个脚本,在生成maikefile时会检测你的
系统运行环境,看你的系统是否满足它所要运行的环境。
九、上面的错误说明你没有安装APR ,所以你就有查看你是否安装了APR。如果你安装了的话,那
可能是缺少库文件,APR的库文件在一个APR-DEVEL-1..RPM。如果你的linux版本是redhat el5的
话,你可以在光盘中找到。
使用命令rpm �Civh/mnt/cdrom/Server/apr-devel-1.2.7-11.el5_31.i386.rpm安装。
十、然后在使用命令:./configure --prefix =/usr/local/apache --sysconfdir=/etc/apache.
可能你又失败了,原因是你的版本太低。没关系,失败是成功的妈。你可以在网上下载一个高版本
的。www.rpmfind.net。 apr-1.4.6.tar.gz apr-util-1.4.6.tar.gz
十一、下载一个高版本的之后
使用命令将这两个文件解压缩,tar �Czxvf 压缩文件名 -C 解压的目录 /usr/local/src
使用上面的方法,你就可以通过查看它们的大致信息了。通过README查看基本的安装方式。
./configure --prefix =/usr/local/apr (它只是一个运行库,所有不需要―sysconfdir这个
参数了)
在编译的过程中如果不出现error,那就没事。
十二、编译之后,就产生了很多的makefile文件,此时你就可以用make来将这些makefile文件安
装到一块儿。最后一步就是make install。
十三、然后你进入apache的安装目录(/usr/local/apr),
可以看到有bin、build-1,include、lib。Bin是二进制文件,可执行文件,include 头
文件。Lib库文件,你这个程序产生的库文件,和头文件可能被其他的某些程序用到,所
有你就要有一个共享的精神,独乐乐不如众乐乐!那别的程序如何找到你的头文件和库文
件呢。为了让别人找到它们。你需要进入/usr/include,因为这里有许多的include,系
统在运行某些程序时就从这里开始查找,没有的话可能就无法执行了。进入系统能识别的
目录 /usr/include ln �Cs/usr/local/apr/include/apr-1/* ./这样就可以识
别include文件了。
十四、那库文件这么做呢。首先你打开vim /etc/ld.so.conf 这个文件说明,你可以将你源码
安装的库文件的路径加进来就可以了。如何做呢?你进入/etc/ld.so.conf.d/中创建一
个apr.conf文件。在里面写入/usr/local/apr/lib (这个是你安装apache时的目
录,lib是自动生成的)。这样还不行,你要更新一下缓存文件,这样系统才能找到。使
用ldconfig更新缓存。然后使用 ldconfig �Cpv |grep apr
十五、我们还下载了一个apr-util的工具,在安装一下。方法和apr的安装大同小异。进入你解
压缩的文件,你会看到configure 和README。
./configure �Cprefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin
然后make。
最后makeinstall
十六、如果出现error:pcre-cofigfor libpcre not found (这是缺少描述正则表达式的扩展
库)
看是否安装了pcre,如果安装了,可能就是少了库文件。你还需要安装pcre-devel这个库
文件。rpm �Civh /mnt/cdrom/Server/pcre-devel-6.6-2.el5_1.7.i386.rpm
十七、重新来到/usr/local/src/httpd-2.4.4/
十八、最后执行./configure --prefix=/usr/local/apache �Csysconfdir=/etc/apache --
with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util =/usr/local/apr- util,
编译后出现了很多makefile文件,那就编译吧,make,最后一步执行makeinstall。
进入/usr/local/apache apache的安装目录,可以看到apache的安装文件,同样的,要把它的头文件加载到系统的头文件中,进入/usr/include 使用命令:ln �Cs /usr/local/apache/include/* ./
进入/usr/local/apache/bin 中可以找到apache的相关运行脚本和可执行程序。其中的httpd就是可执行程序,而apachectl是运行脚本程序。你在apache的bin目录中使用命令./httpd就可以启动httpd服务了。
但是这样肯定是不行的,因为httpd源码安装是可以在很多平台上安装的,那根据不同的平台和要求,
实现不同的功能,就得需要配置文件。所以我们应该结合前面安装的apache的配置文件 运行apache。可以使用./httpd -h来查看相关参数。可以看到一个-f的参数。./httpd �Cf/etc/apache/httpd.conf
但是这样运行的话比较麻烦,你可以编写一个脚本程序来控制它的运行。你还记得你用rpm安装某些服务时,启动服务的命令吗?service 服务名 start(stop,restart,status),其实你也可以这样来运行你的httpd。Service 控制的这些脚本一般都在/etc/init.d里。所以你就可以在这里面写一个控制你httpd的脚本。这样你也可以使用service httpd start来开启你的httpd了。
httpd服务脚本:
vim httpd
chmod a+x httpd
#!/bin/bash
prog=/usr/local/apache/bin/httpd *htpd源文件
configfile=/etc/apache/httpd.conf *配置文件
lockfile=/var/lock/subsys/httpd *锁文件
. /etc/init.d/functions *引进sources文件
start () {
if [ -e $lockfile ] ; then
echo “the program `basename $prog`
isstarted……”
else
echo �Cn �Ce “the program `basename $prog
`is starting….”
sleep 2
$prog �Cf $chonfigfile && echo �Ce
“\033[31m [ ok ] \033[0m” && touch
$lockfile || echo -e “\033[31m [ faile ]
\033[0m”
fi
}
stop() {
if [ -e $lockfile] ; then
echo �Cn “the program `basename $prog` is
stoping……”
sleep 2
killproc httpd && echo “ok” &&rm �Crf
$lockfile || echo “faile”
else
echo “the program`basename $prog` is
stoped”
fi
}
status () {
if [-e $lockfile ] ; then
echo “the program `basename $prog`
isrunning…..”
else
echo “the program `basename $prog ` is
stop “
fi
}
case “$1” in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
*)
echo “usage : start | stop | restart
|status”
esac
本文出自 “人生在勤,不索何获” 博客,谢绝转载!