zoukankan      html  css  js  c++  java
  • linux 安装apache2.2.4

    安装 apache先需要先安装三个组件

    http://apr.apache.org/download.cgi 

    下载 apr和apr-util

     http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip

    下载后传送到linux上

    安装apr

    1. [root@xt test]# tar -zxf apr-1.4.5.tar.gz  
    2. [root@xt test]# cd  apr-1.4.5  
    3. [root@xt apr-1.4.5]# ./configure --prefix=/usr/local/apr  
    4. [root@xt apr-1.4.5]# make && make install  

    安装apr-util

    1. [root@xt test]# tar -zxf apr-util-1.3.12.tar.gz  
    2. [root@xt test]# cd apr-util-1.3.12  
    3. [root@xt apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util 
    4. -with-apr=/usr/local/apr/bin/apr-1-config  
    5. [root@xt apr-util-1.3.12]# make && make install 
    安装pcre

       

    1. [root@xt test]#unzip -o pcre-8.10.zip  
    2. [root@xt test]#cd pcre-8.10  
    3. [root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre
    4. [root@xt pcre-8.10]#make && make install 


    将apr和apr-util 放到 apache安装目录下的srclib下 去掉版本号 改名为apr和apr-util
     
    通过命令执行下面脚本运行
    ./configure --prefix=/usr/local/apache --sysconfdir=/usr/local/apache/conf
    --enable-so --enable-ssl --with-ssl=/usr/local/ssl
    --enable-track-vars --enable-rewrite --with-z-dir=/usr/local/zlib
    --enable-mods-shared=most--with-included-apr --with-apr=/usr/local/apr
    --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre
     
    红色的这个必须要加 不然无法启动httpd 会报错如下
    httpd: Syntax error on line 140 of /usr/local/apache2/conf/httpd.conf: 
    Cannot load /usr/local/apache2/modules/mod_dir.so 
    into server: /usr/local/apache2/modules/mod_dir.so: undefined symbol: apr_array_clear
     
    记得命令中每个--前面必须要有空格 不然 加了相当于没加
     
     
    --with-z-dir=/usr/local/zlib命令使用zlib压缩网络数据
    需要安装zlib库
    ./configure --prefix=/usr/local/zlib
    make
    make install
     
    需要openssl (必须在安装apache之前安装不然缺少lib库 红色的部分不能缺少不然apache无法加载ssl库)
    openssl.org下载
    ./config --prefix=/usr/local/ssl -g3 shared zlib-dynamic enable-camellia
    make && make install
     
    安装apache
    /usr/local/apache 安装了apache组件

    安装完成后 使用 进入apche/bin目录 使用命令 apachectl -k start
    出现错误 
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
     
    进入配置文件目录/conf目录下
    修改ServerNamewww.exam.com:80 前面的#去掉
    改成ServerName 127.0.0.1:80 即可 
     
    如果配置文件配置在 etc/httpd下面而不是apache/conf 不是/etc/httpd的httpd.conf 而是 conf目录下的httpd.conf 不然无效
     强烈建议最好配置文件安装在apache/conf目录下 不然会出现加loadmodule 失败的各种问题
    配置集群
    打开httpd.conf 
    LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
    LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
    LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
    LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
    LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
     LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    前面#去掉
     如果红色部分不加上 可能启动不报任何错误 但是看日志error文件会出现以下错误

    [Fri Aug 10 18:32:25.298650 2012] [:emerg] [pid 7859:tid 47937562389216] AH00020: Configuration Failed, exiting

     

    判断是否启动直接看log下或者httpd/run目录下是否有httpd.pid文件 或者 ps -ef | grep httpd或者 netstat -aon | grep 端口号

    如果不加载lbmethod 这几个模块 下面集群的lbmethod就没法使用
     如果需要配置粘性session 集群 如果将proxy放在virtualhost外 粘性session无效
    在httpd.conf最下面添加

    <VirtualHost *:8888>  
        ServerAdmin lixin1112003@126.com  
        ServerName localhost  
        ServerAlias localhost  
        ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=JSESSIONID|jsessionid nofailover=On  
        ProxyPassReverse / balancer://cluster/  
        #ErrorLog "/logs/error.log"  
        #CustomLog "/logs/access.log" common  
        <proxy balancer://cluster>  
       BalancerMember ajp://localhost:8019 loadfactor=1 route=tomcat_a  smax=5 max=20 ttl=120 retry=300 timeout=15  
       BalancerMember ajp://localhost:9019 loadfactor=1 route=tomcat_b  smax=5 max=20 ttl=120 retry=300 timeout=15  
       ProxySet lbmethod=byrequests  
        </proxy>  
    </VirtualHost>   
    说明 :
    lbmethod=byrequests(根据请求数来均衡)
    bytraffic(根据传送的字节数来均衡 也就是流量)
    bybusyness (根据执行请求的平衡)
     具体参数干嘛用的 直接参考 http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
    8888是上面配置的端口
    Listen 8888

    如果需要重新编译apache 安装 直接删除掉开始的usr/local/apache
    然后就编译运行 安装过程只生成了 文件 没有任何其他服务生成  不像rpm包
    注意一个问题 不要再相同的解压好了的包重新编译 不然配置是无效的
    最好删除掉重新解压一份在配置 编译

    如果需要配置ssl
    打开httpd.conf 去掉注释
    LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
    LoadModule ssl_module modules/mod_ssl.so

    # Secure (SSL/TLS) connections
    Include conf/extra/httpd-ssl.conf

    打开httpd-ssl.conf
    找到
    SSLCertificateFile "/root/qymg/server.cer"
    SSLCertificateKeyFile "/root/qymg/server.key"
    改成你的证书路径
    在<VirtualHost _default_:443>
    下面加上
    ServerAdmin lixin1112003@126.com  
        ServerName localhost  
        ServerAlias localhost  
        ProxyRequests Off 
        ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=JSESSIONID|jsessionid nofailover=On  
        ProxyPassReverse / balancer://cluster/  
        #ErrorLog "/logs/error.log"  
        #CustomLog "/logs/access.log" common  
        <proxy balancer://cluster>  
       BalancerMember ajp://localhost:8019 loadfactor=1 route=tomcat_a  smax=5 max=20 ttl=120 retry=300 timeout=15  
       BalancerMember ajp://localhost:9019 loadfactor=1 route=tomcat_b  smax=5 max=20 ttl=120 retry=300 timeout=15  
       ProxySet lbmethod=byrequests  
        </proxy> 

    启动 apachectl -k start 报错
    Syntax error on line 21 of /usr/local/apache/conf/httpd.conf:
    Cannot load /usr/local/apache/libexec/libssl.so into server: libssl.so.1.0.0.: cannot open shared object file: No such file or directory
    
    因为我们加载的模块是 mod_ssl.so
    通过命令查询 mod_ssl.so依赖哪些库
    [root@tianchi154 modules]# ldd mod_ssl.so
         
            linux-vdso.so.1 =>  (0x00007fffdabfa000)
            libssl.so.1.0.0 => not found
            libcrypto.so.1.0.0 => not found
            libuuid.so.1 => /lib64/libuuid.so.1 (0x00002ac2a25e7000)
            librt.so.1 => /lib64/librt.so.1 (0x00002ac2a27eb000)
            libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002ac2a29f5000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ac2a2c2d000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00002ac2a2e48000)
            libc.so.6 => /lib64/libc.so.6 (0x00002ac2a304d000)
            /lib64/ld-linux-x86-64.so.2 (0x0000003ebc400000)

    发现libssl.so.1.0.0和libcrypto.so.1.0.0找不到
    通过 whereis libssl.so.1.0.0命令找不到这个库 说明环境变量没有
    最后发现这两个库是openssl的两个库
    到openssl目录的lib下发现有这两个库
    如果要让mod_ssl.so找到这两个库必须将ssl/lib添加到 LD_LIBRARY_PATH变量下
    ~/.bashrc(每次登录每次打开shell读取一次) 或者 ~/.bash_profile(每次登录读取一次)添加语句
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ssl/lib
    重新打开shell 输入 echo $LD_LIBRARY_PATH 可以看到路径ok
    在执行 apachectl -k start
    访问https://ip/正常访问 解决
    安装过程错综复杂 错误频出 结果一一解决

  • 相关阅读:
    leetcode 13. Roman to Integer
    python 判断是否为有效域名
    leetcode 169. Majority Element
    leetcode 733. Flood Fill
    最大信息系数——检测变量之间非线性相关性
    leetcode 453. Minimum Moves to Equal Array Elements
    leetcode 492. Construct the Rectangle
    leetcode 598. Range Addition II
    leetcode 349. Intersection of Two Arrays
    leetcode 171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331342.html
Copyright © 2011-2022 走看看