实验环境正则表达式
centos6apache
在centos6上,若是经过yum命令安装httpd的rpm版本是httpd-2.2,若是须要安装httpd-2.4,必需要依赖于apr-1.4+, apr-util-1.4+环境,可是centos6对应环境工具apr版本是apr-1.39,apr-util-1.39,不能直接经过rpm来安装,要经过编译来安装。须要的步骤:vim
编译安装apr-1.4+的版本centos
编译安装apr-1.4+的版本缓存
编译安装httpd-2.4版本dom
手动生成服务控制脚本,若是是经过rpm来安装,rpm包的制做者会帮咱们制做对应的服务控制脚本,可是源码包没有,须要本身生成。工具
操做步骤网站
将原来安装的rpm版本的httpd-2.2 httpd服务关闭,并关闭开机自启,避免和如今安装的包产生影响ui
[root@localhost ~]#service httpd stop Stopping httpd: [ OK ] [root@localhost ~]#chkconfig --list httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
安装开发包组spa
[root@localhost ~]#yum -y groupinstall "Development Tools" "Server Platform"
安装pcrce-devel包
[root@localhost ~]#yi pcre-devel
下载须要的源码包组
httpd-2.4 网站 http://httpd.apache.org/download.cgi#apache24 apr apr-util 网站 http://apr.apache.org/download.cgi [root@localhost ~]#wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz [root@localhost ~]#wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz [root@localhost ~]#wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.23.tar.gz
解压安装apr包
[root@localhost ~]#tar -xf apr-1.5.2.tar.gz [root@localhost ~]#cd apr-1.5.2 [root@localhost ~/apr-1.5.2]#./configure --prefix=/usr/local/apr [root@localhost ~/apr-1.5.2]#make && make install [root@localhost ~/apr-1.5.2]#cd /usr/local/apr/ [root@localhost /usr/local/apr]#ls bin build-1 include lib
解压安装apr-util包
[root@localhost ~]#tar -xf apr-util-1.5.4.tar.gz [root@localhost ~]#cd apr-util-1.5.4 [root@localhost ~/apr-util-1.5.4]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ #必须指定须要的文件的路径,否则系统会去系统路径找,找不到报错 [root@localhost ~/apr-util-1.5.4]#cd /usr/local/apr-util/ [root@localhost /usr/local/apr-util]#ls bin include lib
解压安装httpd包
指定具体的安装路径;支持动态模块加载机制;支持ssl功能;支持cgi;依赖于zilib,用来压缩页面用;依赖pcre,更强大的正则表达式;
[root@localhost ~]#tar -xf httpd-2.4.23.tar.gz [root@localhost ~]#cd httpd-2.4.23 [root@localhost ~/httpd-2.4.23]#./configure --prefix=/usr/local/httpd24 -enable-so -enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util [root@localhost ~/httpd-2.4.23]#cd /usr/local/httpd24/ [root@localhost /usr/local/httpd24]#ls bin build cgi-bin conf error htdocs icons include logs man manual modules
能够经过自带的命令启动,自带的服务控制脚本:apchectl命令的目录:/usr/local/apache24/bin,不能直接使用apachectl,由于默认是去/usr/sbin/目录下面找的
[root@localhost /usr/local/httpd24/bin]#./apachectl start
若是想直接使用命令,不用每次都输入路径全名,将这个路径添加到环境变量中,必须放在前面,寻找命令是从左往右,若是找到第一个apachctl命令,则不会去/sbin/目录下面找系统自带的命令,想永久有效的话将这条命令放在/etc/profile.d/httpd.sh文件,文件名必须以.sh结尾,文件名本身起,不会当即生效,可是新登陆用户有效,
能够经过hash命令查看缓存的命令,能够看到命令的全路径,
[root@localhost ~]#apachectl start AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. httpd (pid 46798) already running [root@localhost ~]#hash hits command 1 /usr/local/httpd24/bin/apachectl
默认的配置文件在apache24/conf目录下面,若是想要放在/etc/http24目录下面,编译安装的时候加上--sysconfdir=/etc/httpd24,从新编译
[root@localhost ~/httpd-2.4.23]#make clean #命令能够清除源码包中的全部的中间文件和生成的可执行文件的,可是若是已经执行了make && make install 命令,则复制到目标路径的文件不会被删除 [root@localhost ~/httpd-2.4.23]#./configure ...... --sysconfdir=/etc/httpd24 [root@localhost ~/httpd-2.4.23]#make && make install
输出头文件
[root@localhost /usr/include]#ln -sv /usr/local/httpd24/include /usr/include/httpd `/usr/include/httpd' -> `/usr/local/httpd24/include' [root@localhost /usr/include]#ll httpd lrwxrwxrwx. 1 root root 26 Oct 11 15:49 httpd -> /usr/local/httpd24/include
导出库文件:vim /etc/ld.so.conf.d/httpd.conf 将路径写入,可是没有发现库文件
制做服务控制脚本,可是制做比较麻烦,直接使用一个现成的服务脚本改
[root@localhost ~]#cd /etc/rc.d/init.d [root@localhost /etc/rc.d/init.d]#cp httpd httpd24 [root@localhost /etc/rc.d/init.d]#vim httpd24 26 if [ -f /etc/sysconfig/httpd ]; then #这里咱们不用加载这个配置文件,直接将这三行删除就能够 27 . /etc/sysconfig/httpd 28 fi 39 apachectl=/usr/local/httpd24/bin/apachectl #命令路径 40 httpd=${HTTPD-/usr/local/httpd24/bin/httpd} #主命令路径 41 prog=httpd 42 pidfile=${PIDFILE-/usr/local/httpd24/logs/httpd.pid} 43 lockfile=${LOCKFILE-/var/lock/subsys/httpd24} [root@localhost /etc/rc.d/init.d]#chkconfig --add httpd24 #将服务加载 [root@localhost /etc/rc.d/init.d]#chkconfig --list httpd24 httpd24 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost /etc/rc.d/init.d]#service httpd24 start Starting httpd: [root@localhost /etc/rc.d/init.d]#service httpd24 stop Stopping httpd: [ OK ] [root@localhost /etc/rc.d/init.d]#service httpd24 restart Stopping httpd: [ OK ]
若是要更改服务的工做模式
[root@localhost /usr/local/httpd24/conf]#vim httpd.conf #确保可以加载对应的配置文件,去掉前面的注释 454 #Include conf/extra/httpd-mpm.conf #去掉注释 135 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #将这个改成本身要修改成的服务名称, [root@localhost /usr/local/httpd24/conf/extra]#ls 在conf目录下面的extra目录里面有对应的模块控制,取消前面的注释,并使用本身制做的服务脚本重启服务,就能够启动,
p