linux httpd 源码包下载,Apache httpd-2.4.33源码包编译安装教程

实验环境:centos6.5

防火墙需要关闭

下载源码包

wget http://archive.apache.org/dist/apr/apr-util-1.5.2.tar.gz

wget http://archive.apache.org/dist/apr/apr-1.5.2.tar.gz

wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.33.tar.gz

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

系统自带工具全部卸载

[root@localhost ~]# rpm -e apr --nodeps

[root@localhost ~]# rpm -e apr-util --nodeps

[root@localhost ~]# rpm -e httpd --nodeps

卸载pcre工具的时候先备份cd /lib64/目录下的libpcre.so.0

[root@localhost lib64]# cp libpcre.so.0 /root

卸载pcre

[root@localhost ~]# rpm -e pcre --nodeps

解压缩apr

[root@localhost ~]# tar xf apr-1.5.2.tar.gz

进入apr-1.5.2目录下开始编译

[root@localhost apr-1.5.2]# ./configure --prefix=/usr/local/apr

c1e259fd02978e011ff9635daaec4076.png

用yum解决一些依赖关系

[root@localhost apr-1.5.2]# yum -y install pcre-devel

[root@localhost apr-1.5.2]# yum -y install gcc make tar libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel expat-devel

[root@localhost apr-1.5.2]# yum -y install libtool-ltdl-devel

解决依赖关系在执行编译

[root@localhost apr-1.5.2]# ./configure --prefix=/usr/local/apr

1712ba83cfba4d466128e8cfa6703048.png

报错解决办法

vim ./configure

编辑 configure文件,查找 $RM "$cfgfile" 这个地方,用#注释掉,然会报错。把RM='$RM'改为RM='$RM -f'。

上面软件包都已经解决在执行一次编译

[root@localhost apr-1.5.2]# ./configure --prefix=/usr/local/apr

成功编译图如下:

7a6db2909a3e34e5f205dd2a9b4b24a3.png

编译安装

[root@localhost apr-1.5.2]# make

成功图如下

8d027222f2885a4df0064d6fce57ac90.png

[root@localhost apr-1.5.2]# make install

成功安装图如下:

0fc00e9f7fdf57943e5fa18bfbe65643.png

编译安装apr-util

[root@localhost ~]# tar xf apr-util-1.5.2.tar.gz

[root@localhost apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config

成功图如下:

b77d73b3c3723cbe5c6b142297488eaf.png

[root@localhost apr-util-1.5.2]# make

38149d920543848196f30b84c00a527a.png

[root@localhost apr-util-1.5.2]# make install

8c6adfb3ed308fcfc598050a27e05606.png

解压安装pcre

[root@localhost ~]# unzip -o pcre-8.10.zip

[root@localhost ~]# cd pcre-8.10

[root@localhost pcre-8.10]# ./configure --prefix=/usr/local/pcre --enable-utf8

e271d0263a0818488f5d18b5021e1d86.png

[root@localhost pcre-8.10]# make

8f5e63d964dfc14ce7b0266d96de5eb5.png

[root@localhost pcre-8.10]# make install

506713d3ae9d486d72eee0ae3ba0ddf0.png

编译安装/usr/local/目录下会有刚才安装的工具目录

[root@localhost local]# ls

apr apr-util bin etc games include lib lib64 libexec pcre sbin share src

编译安装httpd源码包

[root@localhost ~]# tar xf httpd-2.4.33.tar.gz

[root@localhost ~]# cd httpd-2.4.33

[root@localhost httpd-2.4.33]# ./configure --prefix=/usr/local/httpd --enable-rewrite --enable-so --enable-headers --enable-expires --with-mpm=worker --enable-modules=most --enable-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre

安装成功图如下:

ca81468ade7c358276ad15a5c0416f46.png

[root@localhost httpd-2.4.33]# make

[root@localhost httpd-2.4.33]# make install

解释编译Apache的参数:

--enable-so // 允许运行时加载DSO模块

--enable-ssl // 启用https, 此项需要先安装openssl-devel包,我们需要使用yum安装

--enable-cgi // 允许使用cgi脚本

--enable-deflate //支持网页压缩

--enable-expires //支持网页缓存

--enable-rewrite // 支持URL重写机制

--enable-modules=most // 支持动态启用模块,most表示常用,all表示所有,以后自行到 httpd.conf 中决定是否开启模块

--enable-mpms-shared=all // 表示以共享方式启用哪些MPM模块(prefork、worker、event),all表示所有的

--with-mpm=prefork // 默认启用模块:prefork,worker,event

--with-zlib // 依赖zlib,用于支持压缩功能,我们已经使用yum安装了,

--with-pcre // 依赖的pcre

--with-apr // 依赖的apr

--with-apr-util // 依赖的apr-util

编译安装/usr/local/目录下会有刚才安装的工具目录

[root@localhost local]# ls

apr apr-util bin etc games httpd include lib lib64 libexec pcre sbin share src

添加软链接

[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/

[root@localhost ~]# ll /usr/local/bin/ | grep ^l

lrwxrwxrwx. 1 root root 23 7月 6 11:03 ab -> /usr/local/httpd/bin/ab

lrwxrwxrwx. 1 root root 30 7月 6 11:03 apachectl -> /usr/local/httpd/bin/apachectl

lrwxrwxrwx. 1 root root 25 7月 6 11:03 apxs -> /usr/local/httpd/bin/apxs

lrwxrwxrwx. 1 root root 29 7月 6 11:03 checkgid -> /usr/local/httpd/bin/checkgid

lrwxrwxrwx. 1 root root 30 7月 6 11:03 dbmmanage -> /usr/local/httpd/bin/dbmmanage

lrwxrwxrwx. 1 root root 28 7月 6 11:03 envvars -> /usr/local/httpd/bin/envvars

lrwxrwxrwx. 1 root root 32 7月 6 11:03 envvars-std -> /usr/local/httpd/bin/envvars-std

lrwxrwxrwx. 1 root root 32 7月 6 11:03 fcgistarter -> /usr/local/httpd/bin/fcgistarter

lrwxrwxrwx. 1 root root 33 7月 6 11:03 htcacheclean -> /usr/local/httpd/bin/htcacheclean

lrwxrwxrwx. 1 root root 26 7月 6 11:03 htdbm -> /usr/local/httpd/bin/htdbm

lrwxrwxrwx. 1 root root 29 7月 6 11:03 htdigest -> /usr/local/httpd/bin/htdigest

lrwxrwxrwx. 1 root root 29 7月 6 11:03 htpasswd -> /usr/local/httpd/bin/htpasswd

lrwxrwxrwx. 1 root root 26 7月 6 11:03 httpd -> /usr/local/httpd/bin/httpd

lrwxrwxrwx. 1 root root 30 7月 6 11:03 httxt2dbm -> /usr/local/httpd/bin/httxt2dbm

lrwxrwxrwx. 1 root root 31 7月 6 11:03 logresolve -> /usr/local/httpd/bin/logresolve

lrwxrwxrwx. 1 root root 31 7月 6 11:03 rotatelogs -> /usr/local/httpd/bin/rotatelogs

备份/usr/local/httpd/bin/apachectl

[root@localhost ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

添加权限

[root@localhost ~]# chmod +x /etc/init.d/httpd

写入脚本里启动

[root@localhost ~]# sed -i -e '1a#chkconfig: 35 85 21 n#description: Startup script for the Apache HTTP Server' /etc/init.d/httpd

查看写入没有

[root@localhost ~]# sed -n '1,3p' /etc/init.d/httpd

#!/bin/sh

#chkconfig: 35 85 21

#description: Startup script for the Apache HTTP Server

添加httpd系统服务

[root@localhost ~]# chkconfig --add httpd

[root@localhost ~]# chkconfig --list httpd

httpd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭

进入目录/usr/local/httpd/conf/

[root@localhost ~]# cd /usr/local/httpd/conf/

[root@localhost conf]#

备份

[root@localhost conf]# cp httpd.conf httpd.conf.origin

查询ServerName www.example.com:80在哪一行

[root@localhost conf]# awk '/#ServerName/{print NR,$0}' httpd.conf

194 #ServerName www.example.com:80

ServerName www.example.com:80前面去掉#号

[root@localhost conf]# sed -i -e '194 s/#//;s/example/amber/' httpd.conf

[root@localhost conf]# sed -n '194p' httpd.conf

ServerName www.amber.com:80

检测语法

[root@localhost conf]# apachectl -t

Syntax OK

[root@localhost conf]# httpd -t

Syntax OK

启动httpd服务

[root@localhost conf]# /etc/init.d/httpd start

[root@localhost conf]# netstat -anpt |grep :80

tcp 0 0 :::80 :::* LISTEN 17654/httpd

测试httpd

0ecb1d572e63f37388b4cbf2026823a2.png

#CentOS-7.3安装apache 创建webapp用户,cd /home/webapp yum install -y bzip2 zip unzip gcc gcc-c++ expat-devel tar jxvf httpd-2.4.33.tar.bz2 tar jxvf apr-1.6.3.tar.bz2 tar zxvf apr-util-1.6.1.tar.gz tar jxvf pcre-8.42.tar.bz2 mv apr-1.6.3 httpd-2.4.33/srclib/apr mv apr-util-1.6.1 httpd-2.4.33/srclib/apr-util #注释这里是因为只要将解压后的apr-1.6.3,apr-util-1.6.1放到httpd-2.4.33/srclib下,用--with-included-apr指令会自动配置编译安装。 #cd /home/webapp/httpd-2.4.33/srclib/apr #./configure --prefix=/home/webapp/apache_tools/extra/apr #make&&make; install #cd /home/webapp/httpd-2.4.33/srclib/apr-util #./configure --prefix=/home/webapp/apache_tools/extra/apr-util --with-apr=/home/webapp/apache_tools/extra/apr #make&&make; install cd pcre-8.42 ./configure --prefix=/home/webapp/apache_tools/httpd-2.4.33/srclib/pcre make&&make; install cd ../httpd-2.4.33/ ./configure --prefix=/home/webapp/apache/httpd --with-pcre=/home/webapp/apache_tools/httpd-2.4.33/srclib/pcre --with-included-apr make&&make; install 这个是个坑,没有百度这个是我解决的步骤: [root@ha-weix-app08 /]# find ./ -name "libcrypto*"|xargs ls -lrt -rwxr-xr-x. 1 root root 2012800 Jun 23 2015 ./usr/lib64/libcrypto.so.1.0.1e lrwxrwxrwx. 1 root root 19 Mar 6 14:42 ./usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.1e -rw-r--r--. 1 root root 4001668 Mar 6 16:30 ./usr/local/ssl/lib/libcrypto.a -r-xr-xr-x. 1 root root 2239838 Mar 6 16:30 ./usr/local/ssl/lib/libcrypto.so.1.0.0 lrwxrwxrwx. 1 root root 18 Mar 6 16:30 ./usr/local/ssl/lib/libcrypto.so -> libcrypto.so.1.0.0 -rw-r--r--. 1 root root 264 Mar 6 16:30 ./usr/local/ssl/lib/pkgconfig/libcrypto.pc [root@ha-weix-app08 /]# cd /usr/lib64/ [root@ha-weix-app08 lib64]# ln -s /usr/local/ssl/lib/libcrypto.a libcrypto.a [root@ha-weix-app08 lib64]# ln -s /usr/local/ssl/lib/libcrypto.so.1.0.0 libcrypto.so 跳坑集锦: 1、AH02432: Cannot find LB Method: byrequests #to resolve the start failed issue: #AH02432: Cannot find LB Method: byrequests #AH01183: Cannot share balancer #AH00020: Configuration Failed, exiting LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so 2apache Cannot share balancer错误 启动apache时报错, [Fri Jun 24 22:06:33.756444 2016] [proxy:crit] [pid 3108:tid 140708199278336] AH02432: Cannot find LB Method: byrequests [Fri Jun 24 22:06:33.756460 2016] [proxy_balancer:emerg] [pid 3108:tid 140708199278336] (22)Invalid argument: AH01183: Cannot share balancer [Fri Jun 24 22:06:33.756521 2016] [:emerg] [pid 3108:tid 140708199278336] AH00020: Configuration Failed, exiting [Fri Jun 24 22:12:21.376172 2016] [proxy:crit] [pid 3124:tid 139884237899520] AH02432: Cannot find LB Method: byrequests [Fri Jun 24 22:12:21.376237 2016] [proxy_balancer:emerg] [pid 3124:tid 139884237899520] (22)Invalid argument: AH01183: Cannot share balancer [Fri Jun 24 22:12:21.376250 2016] [:emerg] [pid 3124:tid 139884237899520] AH00020: Configuration Failed, exiting 原来是还要启动lbmethod_byrequests_module模块,把配置文件中的这行,去掉注释 #LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so 3、Apache启动报错:Invalid command 'ProxyPass', perhaps misspelled or defined by a module not inclu ded in t 今天在服务器上刚装完Apache,需要发布一个新的系统,但是启动Apache的时候报错: Invalid command 'ProxyPass', perhaps misspelled or defined by a module ... 看看配置文件httpd,问题出在 ProxyPass 这个环节: ProxyPass /vict_service http://localhost:8080/vict_service 也就是要为 /vict_service 这个请求路径匹配一个实际可用的路径,既然提示ProxyPass命令无效,那么肯定是某个地方的设置问题。 解决的方法就在httpd这个配置文件里,找到以下两条: #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_http_module modules/mod_proxy_http.so 前面有# 号,说明被注释掉了,不起作用,把#号去掉,就可以了。 4、centos7 80端口被tcp6监听,改为tcp 今天在虚拟机上装了centos7 配置好apache后,输入 netstat -tnpl | grep 80 发现 80端口竟然在tcp6上。 造成了无法访问的尴尬。 netstat -tnpl | grep 80 tcp6 0 80 0.0.0.0:* LISTEN 2937/httpd 经过一番搜索,在apache官网发现了最简单实用的方法:修改apache文件 将 Listen 80 改为:Listen 0.0.0.0:80 完美解决~ 5、Centos 7防火墙firewalld开放80端口(最大的坑,没少坑我时间,见笑了)一直以为是iptables,结果是这个防火墙 如果使用的是iptables防火墙的话请看下面文章 Centos 7防火墙iptables开放指定端口(80)和设置ftp的方法 开启80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 出现success表明添加成功 命令含义: --zone #作用域 --add-port=80/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效 重启防火墙 systemctl restart firewalld.service 1、运行、停止、禁用firewalld 启动:# systemctl start firewalld 查看状态:# systemctl status firewalld 或者 firewall-cmd --state 停止:# systemctl disable firewalld 禁用:# systemctl stop firewalld 2、配置firewalld 查看版本:$ firewall-cmd --version 查看帮助:$ firewall-cmd --help 查看设置: 显示状态:$ firewall-cmd --state 查看区域信息: $ firewall-cmd --get-active-zones 查看指定接口所属区域:$ firewall-cmd --get-zone-of-interface=eth0 拒绝所有包:# firewall-cmd --panic-on 取消拒绝状态:# firewall-cmd --panic-off 查看是否拒绝:$ firewall-cmd --query-panic 更新防火墙规则:# firewall-cmd --reload # firewall-cmd --complete-reload 两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务 将接口添加到区域,默认接口都在public # firewall-cmd --zone=public --add-interface=eth0 永久生效再加上 --permanent 然后reload防火墙 设置默认接口区域 # firewall-cmd --set-default-zone=public 立即生效无需重启 打开端口(貌似这个才最常用) 查看所有打开的端口: # firewall-cmd --zone=dmz --list-ports 加入一个端口到区域: # firewall-cmd --zone=dmz --add-port=8080/tcp 若要永久生效方法同上 打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,这个不详细说了,详情参考文档 # firewall-cmd --zone=work --add-service=smtp 移除服务 # firewall-cmd --zone=work --remove-service=smtp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值