一. 預備環境:
# 編譯安裝apache之前需要確認:apr(apache虛擬機),apr-util,apr-util-ldap的版本, 不同的版本所依賴的apr版本不同.
# httpd-2.2.*只需依賴於apr-1.3.9即可
# httpd-2.4.*需要依賴於apr-1.4.*或以上的版本
# 如需下載相應的版本: http://apr.apache.org/
# 查看apr的版本
[root@caiya ~]# rpm -qa apr*
apr-1.3.9-5.el6_2.i686
apr-util-ldap-1.3.9-3.el6_0.1.i686
apr-util-1.3.9-3.el6_0.1.i686
[root@caiya ~]#
# centos 6.X 版本自帶的apr基本都是 apr-1.3.X, 滿足httpd-2.2.x的要求. 直接安裝即可
二. 安裝apache(httpd)
# 下載httpd安裝包(就近選擇的下載地址, 搜狐鏡像站點)
[root@caiya software]# wget http://mirrors.sohu.com/apache/httpd-2.2.31.tar.gz
[root@caiya software]# tar zxvf httpd-2.2.31.tar.gz
[root@caiya software]# cd httpd-2.2.31
# httpd的模塊解釋:
# 指定安裝路徑
# --prefix=/usr/local/apache
# 指定配置文件的路徑
# --sysconfdir=/etc/httpd
# 裝載核心模塊,支持動態共享模塊,以模塊的方式加載PHP, 如果不開啓, 無法使用PHP
# --enable-so
# 支持URL重寫
# --enable-rewrite
# 支持ssl的功能, 否則無法使用https
# --enable-ssl
# 啓動壓縮機會, 將文本信息壓縮後回覆給客戶端, 瀏覽器自動解壓, 很常用的一種壓縮機制
# --enable-deflate
# 讓PHP以FastCGI的模式工作, 必須要開啓此項
# --enable-proxy-fcgi
# 配置
[root@caiya httpd-2.2.31]# ./configure \
--prefix=/usr/local/httpd-2.2.31 \
--sysconfdir=/etc/httpd \
--enable-so \
--enable-rewirte \
--enable-ssl \
--enable-cgi \
--enable-cgid \
--enable-modules=most \
--enable-mods-shared=most \
--enable-mpms-shared=all
# 如果報如下錯誤:
checking for pcre-config... false
configure: error: pcre-config for libpcre not found.
PCRE is required and available from http://pcre.org/
# 解決辦法
[root@caiya httpd-2.2.31]# yum install pcre-devel -y
# 編譯, 安裝
[root@caiya httpd-2.2.31]# make
[root@caiya httpd-2.2.31]# make install
# 注意: httpd受selinux控制, 如果selinux爲運行狀態, 有可能導致httpd無法啓動
# 此時爲關閉狀態, 如果不是關閉狀態, 修改selinux配置文件 vim /etc/selinux/config 修改爲: SELINUX=disabled
[root@caiya local]# getenforce
Disabled
[root@caiya local]#
# 至此apache已經安裝完畢
三. 配置apache
# 啓動apache
# 編譯安裝的啓動腳本在: /usr/local/httpd-2.2.31/bin/apachectl
[root@caiya bin]# /usr/local/httpd-2.2.31/bin/apachectl start
# 如果報如下錯誤:
AH00557: httpd: apr_sockaddr_info_get() failed for caiya.localdomain
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1.
Set the 'ServerName' directive globally to suppress this message
# 解決辦法:
[root@caiya httpd]# vim /etc/httpd/httpd.conf
找到"#ServerName www.example.com:80" 去掉前面的註釋
# 檢測是否正常啓動(當前爲正常狀態)
[root@caiya bin]# /usr/local/httpd-2.2.31/bin/apachectl start
[root@caiya bin]# netstat -tnlp | grep 80
5:tcp 0 0 :::80 :::* LISTEN 41862/httpd
[root@caiya bin]# ps -ef | grep httpd
65:root 1397 1 0 15:14 ? 00:00:00 /usr/local/httpd-2.2.31/bin/httpd -k start
66:daemon 1398 1397 0 15:14 ? 00:00:00 /usr/local/httpd-2.2.31/bin/httpd -k start
67:daemon 1399 1397 0 15:14 ? 00:00:00 /usr/local/httpd-2.2.31/bin/httpd -k start
68:daemon 1400 1397 0 15:14 ? 00:00:00 /usr/local/httpd-2.2.31/bin/httpd -k start
69:daemon 1401 1397 0 15:14 ? 00:00:00 /usr/local/httpd-2.2.31/bin/httpd -k start
70:daemon 1402 1397 0 15:14 ? 00:00:00 /usr/local/httpd-2.2.31/bin/httpd -k start
71:daemon 1403 1397 0 15:14 ? 00:00:00 /usr/local/httpd-2.2.31/bin/httpd -k start
73:root 1405 1778 0 15:14 pts/1 00:00:00 grep --color -n httpd
[root@caiya bin]#