一 源代码安装的好处:
1、自定义软件功能
2、优化编译参数,提高性能
3、解决不必要的软件间依赖
二 前期准备
首先下载软件包
我用的是下面三个版本的源码包
httpd-2.4.33
apr-1.6.3 http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz
apr-util-1.6.1 https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
然后安装开发者工具
yum –disablerepo=* –enablerepo=c7-media groupinstall “Development Tools” -y
三 解压缩
为了方便查找我们为它指定解压缩路径
tar -zxvf apr-1.6.3.tar.gz -C /usr/local/src/
tar -zxvf apr-util-1.6.1.tar.gz -C /usr/local/src/
tar -zxvf httpd-2.4.33.tar.gz -C /usr/local/src/
接下来我们可以在指定目录下找到它们如下图
四 安装APR
[root@localhost src]# cd /usr/local/src/apr-1.6.3/
[root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr #配置安装目录
[root@localhost apr-1.6.3]# make #编译
[root@localhost apr-1.6.3]# make install #安装
五 安装apr-util
[root@localhostapr-util-1.6.1]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
[root@localhost apr-util-1.6.1]# make #编译
[root@localhost apr-util-1.6.1]# make install #安装
在编译时会出现如下错误:
解决办如下
yum –disablerepo=* –enablerepo=c7-media install expat-devel -y
六 安装httpd
[root@localhost httpd-2.4.33]# ./configure \
> --prefix=/usr/local/apache \ #配置安装目录
> --sysconfdir=/etc/httpd \
> --with-apr=/usr/local/apr/bin/apr-1-config \
> --with-apr-util=/usr/local/apr-util/bin/apu-1-config \
> --with-included-apr #包含apr
此时会出现如下错误:
解决办法如下:
cp -r /usr/local/src/apr-1.6.3/ ./srclib/apr
cp -r /usr/local/src/apr-util-1.6.1/ ./srclib/apr-util
继续配置会出现如下错误:
解决办法是安装PCRE
yum –disablerepo=* –enablerepo=c7-media install pcre-devel -y
继续配置就会顺利完成
然后编译并安装
make && make install
七 启动http服务
切换到/usr/local/apache/bin/目录下
[root@localhost bin]# ./apachectl start
可通过查看80端口是否打开来确认http服务的状态
[root@localhost bin]# netstat -tupln |less
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 897/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1000/master
tcp6 0 0 :::80 :::* LISTEN 64887/httpd
tcp6 0 0 :::22 :::* LISTEN 897/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1000/master
udp 0 0 0.0.0.0:68 0.0.0.0:* 707/dhclient
udp 0 0 0.0.0.0:9457 0.0.0.0:* 707/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 551/chronyd
udp6 0 0 :::40391 :::* 707/dhclient
udp6 0 0 ::1:323 :::* 551/chronyd
此时只要关闭防火墙便可在浏览器中测试
如果想修改网页内容只需切换到/usr/local/apache/htdocs/目录下编辑index.html如图:
八 后续处理:
为了启动和停止http服务我们需要修改搜索路径
操作如下:
编辑/etc/profile
为了方便使用man手册需修改man的搜索路径步骤如下:
执行vim /etc/man_db.conf 所做改动如图所示
改写apache动态链接库的搜索路径步骤如下:
执行vim /etc/ld.so.conf.d/apache.conf
编辑如图所示
为了方便后期的操作可以在/etc/rc.d/init.d/目录下编辑一个名为httpd的脚本文件,代码如下:
#!/bin/bash
#chkconfig: 2345 20 80
#description: the apache httpd server
prog=/usr/local/apache/bin/httpd
#configfile=/etc/httpd/httpd.conf
lockfile=/var/lock/subsys/httpd
start () {
if [ -e $lockfile ];then
echo -n "the httpd server is started"
fi
echo -n "the httpd server is starting......"
sleep 3
$prog -k start &>/dev/null && touch $lockfile && echo -e "[ \033[32m ok \033[0m ]" ||echo -e"[\033[31m fail \033[0m ]"
} #启动httpd服务
stop () {
if [ ! -e $lockfile ];then
echo -n "the httpd server is stoped"
else
echo -n "the httpd server is stoping......"
sleep 3
$prog -k stop &>/dev/null && rm -rf $lockfile && echo -e "[ \033[32m ok \033[0m ]" ||echo -e"[\033[31m fail \033[0m ]"
fi
} # 停止httpd服务
status (){
if [ -e $lockfile ];then
echo -e "the httpd server is \033[32m ACTIVE \033[0m"
httpdid=`ps aux |grep httpd |head -n 1 |awk '{print $2}'`
echo -e "PID is $httpdid"
else
echo "the httpd server is stoped"
fi
} # 查看httpd状态
case "$1" in
start)
start;;
stop)
stop;;
restart)
stop
start;;
status)
status;;
*)
echo "Usage:start|stop|restart|status"
;;
esac
Apache源码安装到此也就完成了