linux编译安装apache排错,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

[[email protected] test]# tar -zxf apr-1.4.5.tar.gz

[[email protected] test]# cd  apr-1.4.5

[[email protected] apr-1.4.5]# ./configure --prefix=/usr/local/apr

[[email protected] apr-1.4.5]# make && make install

安装apr-util

[[email protected] test]# tar -zxf apr-util-1.3.12.tar.gz

[[email protected] test]# cd apr-util-1.3.12

[[email protected] apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util

-with-apr=/usr/local/apr/bin/apr-1-config

[[email protected] apr-util-1.3.12]# make && make install

安装pcre

[[email protected] test]#unzip -o pcre-8.10.zip

[[email protected] test]#cd pcre-8.10

[[email protected] pcre-8.10]#./configure --prefix=/usr/local/pcre

[[email protected] 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目录下

改成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最下面添加

ServerAdmin [email protected]

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

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

说明 :

lbmethod=byrequests(根据请求数来均衡)

bytraffic(根据传送的字节数来均衡 也就是流量)

bybusyness (根据执行请求的平衡)

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"

改成你的证书路径

下面加上

ServerAdmin [email protected]

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

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

启动 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依赖哪些库

[[email protected] 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/正常访问 解决

安装过程错综复杂 错误频出 结果一一解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值