q2009a06z22 发表于 2018-11-23 06:14:00

centos5.8 x64编译安装apache httpd 2.4.9

  apache httpd 2.4.9编译安装:
  系统基础:centos x64
已有apache版本:2.2.4
已有apr1.2、apr-uitl1.2、pcre
  现需安装apache httpd 2.4.9
  1、备好安装包:
apr-1.5.0.tar.gz,apr-util-1.5.3.tar.gz,pcre-8.35.tar.gz,httpd-2.4.9.tar.bz2
httpd-2.4.9需要用到最新的apr和apr-util版本,可到www.apache.org下载
  2、安装apr-1.5.0:
tar -zxvf apr-1.5.0.tar.gz#解压apr安装包
  ./configure --prefix=/usr/local/apr#检查
  提示:config.status:creating include/arch/unix/apr_private.h
      config.status:excuting libtool commands
      rm:cannot remove 'libtoolT': NO such file or directory
      config.status:executing default commands
(这个提示可不理会,继续安装)
  make && make install#编译 安装
  3、安装apr-util-1.5.3:
tar -zxvf apr-util-1.5.3.tar.gz#解压
  ./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr#检查

make && make install#编译 安装
  4、安装pcre-8.35.tar.gz:
tar -zxvf pcre-8.35.tar.gz#解压
  ./configure --prefix=/usr/local/pcre#检查
  make && make install#编译 安装
  注意,如不安装pcre包 安装apache httpd的时候会提示如下错误:
util_pcre.c:128: error: 'PCRE_DUPNAMES' undeclared (first use in this function)
util_pcre.c:128: error: (Each undeclared identifier is reported only once
util_pcre.c:128: error: for each function it appears in.)
make: *** 错误 1
make: Leaving directory `/software/httpd-2.4.9/server'
make: *** 错误 1
make: Leaving directory `/software/httpd-2.4.9/server'
make: *** 错误 1
  5、安装apache httpd-2.4.9:
tar -zxvf httpd-2.4.9.tar.gz #解压
  #检查
./configure --prefix=/home/apache-249   #指定httpd安装路径
--with-pcre=/usr/local/pcre                                 #指定pcre的路径
--with-apr=/usr/local/apr                                 #指定apr的路径
--with-apr-util=/usr/local/apr-util                         #指定apr-util的路径
--enable-so                                                 #支持动态共享模块,如果没有这个模块PHP将无法与apache结合工作
--enable-rewrite                                          #启动rewrite模块
--enable-mods-shared=most                                 #安装大多数模块为动态模块
--enable-mpms-shared=all                                    #支持全部多道处理方式
--with-mpm=event                                          #设置httpd工作模式为event
  make && make install#编译 安装
  5.1、启动httpd:
到/home/apache-249/bin/
./apachectl start
  提示apr_xxxx_xx没有安装 没有编译什么的,具体忘记截图,请见谅。
  # ldd httpd    #使用ldd查看httpd依赖的库
      linux-vdso.so.1 =>(0x00007fff583fd000)
      libpcre.so.1 => /usr/local/pcre/lib/libpcre.so.1 (0x00002b8d0b300000)
      libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 (0x00002b8d0b51c000)
      libexpat.so.0 => /lib64/libexpat.so.0 (0x0000003804a00000)
      libapr-1.so.0 => /usr/lib64/libapr-1.so.0 (0x00002b8d0b76d000)#问题就出在这里,系统是x64,而且原本的系统也安装了apr,导致现在连接了旧版本的apr
      libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003807600000)
      librt.so.1 => /lib64/librt.so.1 (0x0000003808200000)
      libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003816c00000)
      libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003802e00000)
      libdl.so.2 => /lib64/libdl.so.2 (0x0000003802a00000)
      libc.so.6 => /lib64/libc.so.6 (0x0000003802600000)
      /lib64/ld-linux-x86-64.so.2 (0x0000003802200000)

# ./apachectl -V   #查看httpd的版本 (如果在之前出现提示apr_xxxx_xx没有安装 没有编译什么的,这个命令会出现相同的错误提示)
Server version: Apache/2.4.9 (Unix)
Server built:   Apr 15 2014 19:11:19
Server's Module Magic Number: 20120211:31
Server loaded:APR 1.2.0, APR-UTIL 1.5.3    #Server loaded:APR 1.2.0为旧版本的apr
Compiled using: APR 1.5.0, APR-UTIL 1.5.3
Architecture:   64-bit
Server MPM:   event
threaded:   yes (fixed thread count)
    forked:   yes (variable process count)

解决方法:1、查找libapr-1.so.0这个文件(一般在/usr/local/apr下),复制到/usr/lib64/目录下并覆盖(使用ln软连接也可以)
          2、重新安装apr和apr-util,在编译检查时加上--libdir=/usr/lib64
             ./configure --libdir=/usr/lib64 --prefix=/usr/local/apr
             ./configure --libdir=/usr/lib64 --prefix=/usr/local/apr-util--with-apr=/usr/local/apr
             添加后,在usr/lib64/目录下查看libapr-1.so.0这个文件会看到已经创建了软连接

             # ls -lal libapr-1.so*
lrwxrwxrwx 1 root root   17 04-15 19:04 libapr-1.so -> libapr-1.so.0.5.0
lrwxrwxrwx 1 root root   17 04-15 19:04 libapr-1.so.0 -> libapr-1.so.0.5.0
-rwxr-xr-x 1 root root 160944 2011-06-01 libapr-1.so.0.2.7
-rwxr-xr-x 1 root root 771023 04-15 19:04 libapr-1.so.0.5.0
  3、重新安装apache httpd,并把apr和apr-util解压到apache httpd安装文件的srclib目录下,改名为apr和apr-util,
             解压和改名后重新安装apache httpd-2.4.9,编译时把--with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util这两句删除,
             修改为--with-included-apr(apr和apr-util解压并改名在httpd的srclib目录下时使用)

以上三种方法使用其中一种可解决apr错误链接并提示apr缺失或没有安装的问题。
  6、启动apache httpd
#./apachectl -k start
  

  如启动httpd-2.4.9时出现如下错误:
   AH00548: NameVirtualHost has no effect and will be removed in the next release /home/apache-249/conf/extra/httpd-vhosts.conf:19
意思是 NameVirtualHost 已经无效,所以配置虚拟主机httpd-vhosts.conf时不要设置NameVirtualHost就行了。
  

  如启动httpd-2.4.9后登陆页面出现如下错误:
  You don't have permission to access /.net on this server.
  请修改:
  
  AllowOverride none
  #Require all denied    #把这句注析
  Require all granted#增加这句
  
  

  Require all denied
  比较常用到的有以下几种
  Require all denied
  Require all granted
  Require host xxx.com
  Require ip 192.168.1 192.168.2
  Require local
  若有设定在 .htaccess 中的也要修改
  官方参考文档:http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html
  
安装时候参看了如下链接:
http://xiaomazi.blog.51cto.com/5891742/1393730
http://blog.sina.com.cn/s/blog_701300bc0101dbi2.html
  


  

  

  




页: [1]
查看完整版本: centos5.8 x64编译安装apache httpd 2.4.9