centos 6.5 编译安装 httpd-2.4.10
centos 6.5 编译安装 httpd-2.4.101. 小金子又来了,今天让我们折腾下编译httpd-2.4.10吧,废话不多,先看一下平台的基本环境
1
2
3
4
5
6
7
8
9
# uname -r
2.6.32-431.el6.i686
# uname -a
Linux jinyongri.com 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux
# gcc -v
Using built-in specs.
Target: i686-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
2. 下载相应的源码包
openssl-1.0.1i.tar.gz
apr-util-1.5.4.tar.bz2
apr-1.5.1.tar.gz
httpd-2.4.10.tar.bz2
源码包上传到 /root/src/ 目录下
确认一下目录:
1
2
3
4
5
6
# ll
total 10916
-rw-r--r-- 1 root root 1020833 Sep 30 20:20 apr-1.5.1.tar.gz
-rw-r--r-- 1 root root694427 Sep 30 20:20 apr-util-1.5.4.tar.bz2
-rw-r--r-- 1 root root 5031834 Sep 30 20:20 httpd-2.4.10.tar.bz2
-rw-r--r-- 1 root root 4422117 Sep 30 20:20 openssl-1.0.1i.tar.gz
首先安装openssl, 安装之前请确认一定要有gcc编译器啊, 没有的话自行yum install gcc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# tar -xf openssl-1.0.1i.tar.gz
# cd openssl-1.0.1i
#这里我们把文件都安装到 /usr/local/openssl-1.0.1i
##注意如果是64位操作系统环境:
# ./config --prefix=/usr/local/openssl-1.0.1i -fPIC no-gost
##注意如果是32位操作系统环境:
# ./config --prefix=/usr/local/openssl-1.0.1i
#####....此处省略1w字
making links in apps...
make: Entering directory `/root/src/openssl-1.0.1i/apps'
make: Nothing to be done for `links'.
make: Leaving directory `/root/src/openssl-1.0.1i/apps'
making links in test...
make: Entering directory `/root/src/openssl-1.0.1i/test'
make: Nothing to be done for `links'.
make: Leaving directory `/root/src/openssl-1.0.1i/test'
making links in tools...
make: Entering directory `/root/src/openssl-1.0.1i/tools'
make: Nothing to be done for `links'.
make: Leaving directory `/root/src/openssl-1.0.1i/tools'
generating dummy tests (if needed)...
make: Entering directory `/root/src/openssl-1.0.1i/test'
make: Nothing to be done for `generate'.
make: Leaving directory `/root/src/openssl-1.0.1i/test'
Configured for linux-elf. #出现这个信息的话, 就OK了, 如果报错可以Google下, 一定是缺了什么
#OK! 我们继续
# make && make install
####....此处又省略1w字
installing libssl.a
cp libcrypto.pc /usr/local/openssl-1.0.1i/lib/pkgconfig
chmod 644 /usr/local/openssl-1.0.1i/lib/pkgconfig/libcrypto.pc
cp libssl.pc /usr/local/openssl-1.0.1i/lib/pkgconfig
chmod 644 /usr/local/openssl-1.0.1i/lib/pkgconfig/libssl.pc
cp openssl.pc /usr/local/openssl-1.0.1i/lib/pkgconfig
chmod 644 /usr/local/openssl-1.0.1i/lib/pkgconfig/openssl.pc
#出现上面的信息就ok了, openssl安装完毕
#我们还需要安装pcre-devel
# yum -y install pcre-devel #即可完成安装
#下面开始安装apr-util-1.5.4
# cd ..
# ll
total 10920
-rw-r--r--1 root root 1020833 Sep 30 20:20 apr-1.5.1.tar.gz
-rw-r--r--1 root root694427 Sep 30 20:20 apr-util-1.5.4.tar.bz2
-rw-r--r--1 root root 5031834 Sep 30 20:20 httpd-2.4.10.tar.bz2
drwxr-xr-x 22 root root 4096 Sep 30 20:27 openssl-1.0.1i
-rw-r--r--1 root root 4422117 Sep 30 20:20 openssl-1.0.1i.tar.gz
# tar -xf apr-1.5.1.tar.gz
# cd apr-1.5.1
# ./configure --prefix=/usr/local/apr-1.5.1
####....此处又省略1w字
config.status: creating test/internal/Makefile
config.status: creating include/arch/unix/apr_private.h
config.status: executing libtool commands
rm: cannot remove `libtoolT': No such file or directory
config.status: executing default commands
#出现以上信息即可
# make && make install #开始安装
####....此处又省略1w字
/usr/bin/install -c -m 755 /root/src/apr-1.5.1/build/mkdir.sh /usr/local/apr-1.5.1/build-1
for f in make_exports.awk make_var_export.awk; do
/usr/bin/install -c -m 644 /root/src/apr-1.5.1/build/${f} /usr/local/apr-1.5.1/build-1;
done
/usr/bin/install -c -m 644 build/apr_rules.out /usr/local/apr-1.5.1/build-1/apr_rules.mk
/usr/bin/install -c -m 755 apr-config.out /usr/local/apr-1.5.1/bin/apr-1-config
#出现以上信息即可
#下面开始安装apr-util-1.5.4
# tar -xf apr-util-1.5.4.tar.bz2
# cd ./apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util-1.5.4
>--with-apr=/usr/local/apr-1.5.1/ && make && make install
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apr-util-1.5.4/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
/usr/bin/install -c -m 644 aprutil.exp /usr/local/apr-util-1.5.4/lib
/usr/bin/install -c -m 755 apu-config.out /usr/local/apr-util-1.5.4/bin/apu-1-config
#OK apr-util-1.5.4 安装好了,
#我们该安装httpd-2.4.10了
# cd ..
# ll
total 10928
drwxr-xr-x 28 1000 1000 4096 Sep 30 20:34 apr-1.5.1
-rw-r--r--1 root root 1020833 Sep 30 20:20 apr-1.5.1.tar.gz
drwxr-xr-x 20 1000 1000 4096 Sep 30 20:42 apr-util-1.5.4
-rw-r--r--1 root root694427 Sep 30 20:20 apr-util-1.5.4.tar.bz2
-rw-r--r--1 root root 5031834 Sep 30 20:20 httpd-2.4.10.tar.bz2
drwxr-xr-x 22 root root 4096 Sep 30 20:27 openssl-1.0.1i
-rw-r--r--1 root root 4422117 Sep 30 20:20 openssl-1.0.1i.tar.gz
# tar -xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
#./configure --prefix=/usr/local/httpd24
--sysconfdir=/etc/httpd24
--enable-so
--enable-ssl
--enable-cgi
--enable-rewrite
--with-zlib
--with-pcre
--with-apr=/usr/local/apr-1.5.1/
--with-apr-util=/usr/local/apr-util-1.5.4/
--enable-modules=most
--enable-mpms-shared=all
--with-mpm=event
--with-ssl=/usr/local/openssl-1.0.1i
#..省略一万字
config.status: creating support/phf_abuse_log.cgi
config.status: creating support/split-logfile
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
#这样就ok, 开始安装
# make && make install
# ln -sv /usr/local/httpd24/include /usr/include/httpd
#导出头文件
# vim /etc/profile.d/httpd.sh
#添加下面这一行来加到环境变量中
export PATH=/usr/local/httpd24/bin:$PATH
#然后我们再配置下启动脚本
# vim /etc/rc.d/init.d/httpd.24
启动脚本内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
Starting httpd:
# cat /etc/rc.d/init.d/httpd.24
#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: The Apache HTTP Server is an efficient and extensible
# server implementing the current HTTP standards.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd/httpd.pid
#
### BEGIN INIT INFO
# Provides: httpd
# Required-Start: $local_fs $remote_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Should-Start: distcache
# Short-Description: start and stop Apache HTTP Server
# Description: The Apache HTTP Server is an extensible server
#implementing the current HTTP standards.
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/httpd24/bin/apachectl
httpd=/usr/local/httpd24/bin/httpd
prog=httpd
pidfile=/usr/local/httpd24/logs/httpd.pid
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
STOP_TIMEOUT=${STOP_TIMEOUT-10}
# The semantics of these two functions differ from the way apachectl does
# things -- attempting to start while running is a failure, and shutdown
# when not running is also a failure.So we just do it the way init scripts
# are expected to behave here.
start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
# When stopping httpd, a delay (of default 10 second) is required
# before SIGKILLing the httpd parent; this gives enough time for the
# httpd parent to SIGKILL any errant children.
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
# Force LSB behaviour from killproc
LSB=1 killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
if [ $RETVAL -eq 7 ]; then
failure $"httpd shutdown"
fi
fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart|try-restart)
if status -p ${pidfile} $httpd >&/dev/null; then
stop
start
fi
;;
force-reload|reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
RETVAL=2
esac
exit $RETVAL
1
2
3
4
5
6
#给服务脚本执行权限
# chmod +x /etc/rc.d/init.d/httpd.24
#配置主机名信息
# vim /etc/httpd24/httpd.conf
#添加如下内容
ServerName diguojin #注意这里第二段填写自己服务器的主机名
尝试启动服务
1
2
3
4
# service httpd.24 start
Starting httpd:
# service httpd.24 stop
Stopping httpd:
用浏览器试试看
页:
[1]