Linux下编译安装Apache Http Server

1.下载httpd-2.4.12.tar.bz2

wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.12.tar.bz2

2.解压下载的文件##

tar -xjvf httpd-2.4.12.tar.bz2

3.configure配置编译安装条件

./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
--prefix=/usr/local/apach2设置编译安装到的系统目录
--enable-s使httpd服务能够动态加载模块功能
--enable-rewrite使httpd服务具有网页地址重写功能

ARP not found 错误

o@o-pc:~/work/Apache-httpd-2.4.12$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
configure:
configure: Configuring Apache Portable Runtime library...
configure:
checking for APR... no
configure: error: APR not found. Please read the documentation.

解决办法

下载 arp-1.5.2的源码包

解压后编译安装

o@o-pc:~/work/arp$ tar -xjvf apr-1.5.2.tar.bz2
o@o-pc:~/work/arp/apr-1.5.2$ ./configure --prefix=/usr/local/apr
...
o@o-pc:~/work/arp/apr-1.5.2$ make
...
o@o-pc:~/work/arp/apr-1.5.2$ sudo make install

APR-util not found 错误

o@o-pc:~/work/Apache-httpd-2.4.12$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
checking for chosen layout... Apache
...
configure: Configuring Apache Portable Runtime library...
configure:
checking for APR... yes
setting CC to "gcc"
setting CPP to "gcc -E"
setting CFLAGS to " -g -O2 -pthread"
setting CPPFLAGS to " -DLINUX -D_REENTRANT -D_GNU_SOURCE"
setting LDFLAGS to " "
configure:
configure: Configuring Apache Portable Runtime Utility library...
configure:
checking for APR-util... no
configure: error: APR-util not found. Please read the documentation.

解决办法

下载 apr-util-1.5.4 源码包

解压后编译安装

注意./configure配置的时候需要制定APR路径--with-apr=/usr/local/apr是前面编译安装apr的时候设置的路径。

o@o-pc:~/work/arp$ tar -xjvf apr-util-1.5.4.tar.bz2
o@o-pc:~/work/arp/apr-util-1.5.4$ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
...
o@o-pc:~/work/arp/apr-util-1.5.4$ make
...
o@o-pc:~/work/arp/apr-util-1.5.4$ sudo make install

pcre-config for libpcre not found错误

o@o-pc:~/work/Apache-httpd-2.4.12$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --with-apr-util=/usr/local/apr-util
checking for chosen layout... Apache
...
configure:
configure: Configuring Apache Portable Runtime Utility library...
configure:
checking for APR-util... yes
...
checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

解决办法

下载pcre-8.36源码包

解压后编译安装

o@o-pc:~/work/arp$ tar -xjvf pcre-8.37.tar.bz2
o@o-pc:~/work/arp/pcre-8.37$ ./configure --prefix=/usr/local/pcre
...
o@o-pc:~/work/arp/pcre-8.37$ make
...
o@o-pc:~/work/arp/pcre-8.37$ sudo make install

上面的错误解决后,再次./configure配置

注意添加的两个--with-...

o@o-pc:~/work/Apache-httpd-2.4.12$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre

4.编译安装

o@o-pc:~/work/Apache-httpd-2.4.12$ make
o@o-pc:~/work/Apache-httpd-2.4.12$ sudo make install

5.启动apache服务

o@o-pc:~/work$ /usr/local/apache2/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs

注意,需要root权限

o@o-pc:~/work$ sudo /usr/local/apache2/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

提示错误,无法确定服务名(就是端口号)

切换到目录/usr/local/apache2/conf

vi编辑文件httpd.conf(文件是只读的,修改需要root权限)

o@o-pc:/usr/local/apache2/conf$ sudo vi httpd.conf

添加一行

ServerName localhost:80

然后重新启动服务试试

o@o-pc:~$ sudo /usr/local/apache2/bin/apachectl start
httpd (pid 31083) already running

现在我们可以试试是否生效了

打开浏览器,输入地址localhost回车看看是否显示 Is Work!

显示了就说们Apache Http Server已经在运行了

不方便截图,这里直接用curl来获取下网页的内容

o@o-pc:~$ curl localhost
<html><body><h1>It works!</h1></body></html>

6.停止Apache Http 服务

可以看到停止后再去获取就失败了

o@o-pc:~$ sudo /usr/local/apache2/bin/apachectl stop
o@o-pc:~$ curl localhost
curl: (7) Failed to connect to localhost port 80: 拒绝连接
04-25 13:30