编译前准备
首先下载:httpd-2.4,apr-1.4以上, apr-util-1.4以上
httpd-2.4.48.tar.gz下载地址:https://downloads.apache.org/httpd/httpd-2.4.48.tar.gz
apr-1.7.0.tar.gz下载地址:https://downloads.apache.org/apr/apr-1.7.0.tar.gz
apr-util-1.6.1.tar.gz下载地址:https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
解压httpd包 tar -zxvf httpd-2.4.48.tar.gz
解压apr-util和apr包,并将包放在加压后的httpd/srclib/目录下
tar -zxvf apr-1.7.0.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
cp -ar ./apr-1.7.0 ./httpd-2.4.48/srclib/apr
cp -ar ./apr-util-1.6.1 ./httpd-2.4.48/srclib/apr-util
安装依赖包
yum -y install gcc make pcre-devel openssl-devel expat-devel
根目录创建文件夹:/apps/httpd24
进入httpd-2.4.48/下启动
./configure --prefix=/apps/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite -with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
配置解释
–enable-so 启动模块动态装卸载功能
–enable-ssl 编译ssl模块,要先安装完毕
–enable-cgi 支持cgi机制(能够让静态web服务器能够解析动态请求的一个协议)
–enable-rewrite 支持url重写(重定向功能)
–with-zlib 支持数据包压缩
–with-pcre 支持正则表达式
–with-apr=/usr/local/apr 指明依赖的apr所在目录(注意必须指明路径)
–with-apr-util=/usr/local/apr-util/ 指明依赖的apr-util所在的目录
–enable-modules=[all | most | ……] 启用的模块。all表示启用所有模块,most表示启用大多数常用模块
–enable-mpms-shared=all 以共享方式编译的模块。 其他选项为[prefork | worker | event | all]
–with-mpm=prefork 指明httpd的工作方式为prefork 。 3种MPM模块为 [prefork | worker | event]
编译并安装
make -j 8 && make install
配置环境变量
echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/httpd.sh && . /etc/profile.d/httpd.sh
编译安装Apache以后,无法启动httpd服务,提示unit not found的主要原因是没有把httpd服务添加到Linux的service里面
1 复制到init.d 并重命名为httpd
cp /apps/httpd24/bin/apachectl /etc/rc.d/init.d/httpd
2链接文件的S61是启动时的序号。当init.d目录下有httpd脚本后,我们就可以通过service命令来启动关闭apache了
ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S61httpd
3编辑httpd脚本,在第2行(#!/bin/sh下面)添加如下注释信息(包括#):
*# chkconfig: 35 61 61
*# description: Apache**
第一行的3个参数意义分别为:在哪些运行级别启动httpd(3,5);启动序号(S61);关闭序号(K61)。注意:第二行的描述必须要写!
保存后,执行
chkconfig --add httpd #所有开机模式下自启动,另外chkconfig httpd on 表示345模式下自启动
执行
service httpd start
如果报错:::AH00534:httpd的:配置错误:没有MPM加载
编辑vim /apps/httpd24/conf/httpd.cof加上一句话
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
保存即可,然后启动