centos7下源码编译方式安装httpd

时间:2021-06-12 20:28:26

前言

Apache至少需要apr、apr-util、pcre组件的支持。

APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期 的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。随着Apache的进一步开 发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。目前APR主要还是由Apache使用,不过由于APR的较好的移植性,因此一些需要进行移植的C程序也开始使用APR。

APR-util是在APR的基础上提供了更多的数据结构和操作系统封装接口。APR-util依赖于APR,必须先安装APR再安装APR-util。

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括perl兼容的正则表达式库。

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)

1.查询是否安装了apache服务器httpd

[root@localhost src]# rpm -qa|grep httpd

httpd-2.4.6-45.el7.centos.x86_64

httpd-tools-2.4.6-45.el7.centos.x86_64
2.卸载系统自动装的apache服务器httpd

[root@localhost src]# httpd -k stop     #停止httpd服务器

[root@localhost src]# yum remove httpd    #卸载httpd服务器

4 下载httpd-2.4.25   apr-1.5.2  apr-util-1.5.4  pcre-8.40

[root@localhost src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.25.tar.gz

[root@localhost src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.5.2.tar.gz

[root@localhost src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.5.4.tar.gz

[root@localhost src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
5 检查系统是否安装了GCC

[root@localhost src]# gcc

bash: gcc: 未找到命令...      #出现未找到命令提示,说明没有安装GCC
6 安装GCC和gcc-c++

[root@localhost src]# yum -y install gcc

[root@localhost pcre-8.40]# yum -y install gcc-c++

注意:如果没有安装gcc-c++,那么在 执行./configure  -prefix=/usr/local/pcre 时会报 configure: error: You need a C++ compiler for C++ support. 错误

7 将下载的压缩文件拷贝到/usr/local目录下

[root@localhost src]# cp apr-1.5.2.tar.gz /usr/local

[root@localhost src]# cp apr-uril-1.5.4.tar.gz /usr/local

[root@localhost src]# cp httpd-2.4.25.tar.gz  /usr/local

8 编译安装apr-1.5.2

#解压缩apr文件

[root@localhost local]# tar -zxvf apr-1.5.2.tar.gz

#改变目录到apr-1.5.2

[root@localhost local]# cd apr-1.5.2

#指定apr的安装目录为/usr/local/apr 配置

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

#编译安装

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

9 编译安装 apr-uril-1.5.4

#解压缩apr-util文件

[root@localhost local]# tar -zxvf apr-util-1.5.4.tar.gz

#改变目录到apr-util-1.5.4/

[root@localhost local]# cd apr-util-1.5.4/

#指定apr-util的安装路径,指定apr-util所对应的apr

[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]# make && make install
10 编译安装pcre

#卸载系统自带的pcre

[root@localhost apr-util-1.5.4]# rpm -qa pcre

pcre-8.32-15.el7_2.1.x86_64

#解压缩apr-util文件

[root@localhost local]# tar -zxvf pcre-8.40.tar.gz 

#改变目录到pcre-8.40/

[root@localhost local]# cd pcre-8.40/

#指定prce的安装路径,指定apr-util所对应的apr

[root@localhost pcre-8.40]# ./configure  -prefix=/usr/local/pcre

#编译安装(make是编译 make install是安装)

[root@localhost pcre-8.40]# make && make install

11 编译安装apache

编译和安装apache分为动态、静态两种方式。动态编译是指在以后的使用中随时调整配置文件就可以加载模块;静态则相反,在编译时就决定了相应的模块。

#解压缩httpd-2.4.25文件

[root@localhost local]# tar -zxvf httpd-2.4.25.tar.gz

#改变目录到httpd-2.4.25/ 

[root@localhost local]# cd httpd-2.4.25/

#配置

[root@localhost httpd-2.4.25]# ./configure -prefix=/usr/local/apache2 -sysconfdir=/etc/httpd -enable-so -enable-rewrite -with-apr=/usr/local/apr -with-apr-util=/usr/local/apr-util -with-pcre=/usr/local/pcre

#编译安装

[root@localhost httpd-2.4.25]#make && make install

12配置apache防火墙

#永久开放http服务

[root@localhost httpd-2.4.25]# firewall-cmd --permanent --add-service=http

success

#重新加载防火墙

[root@localhost httpd-2.4.25]# firewall-cmd --reload

success

12 启动,停止apache服务

#编辑httpd.conf文件

[root@localhost httpd-2.4.25]#vi /etc/httpd/httpd.conf

在#ServerName www.example.com:80 下增加下面的语句

 ServerName localhost:80

#使用脚本控制Apache,启动服务

[root@localhost ~]#  /usr/local/apache2/bin/apachectl start

#使用脚本控制Apache,停止服务

[root@localhost ~]#  /usr/local/apache2/bin/apachectl stop

#服务启动后,在浏览器输入http://localhost浏览器内容显示出it works,该内容存在于/usr/local/apache2/htdocs/index.html文件中

13 设置apache开机启动

方法一

1、将apachectl命令拷贝到/etc/init.d目录下,改名为httpd

# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd

2、编辑/etc/init.d/httpd文件,在第1行#!/bin/sh的后面添加如下两行

# vi /etc/init.d/httpd

# chkconfig: 2345 70 30   //注意:前面的#号是要保留的

# description: Apache //注意:前面的#号是要保留的

其中,所增加的第二行中三个数字,第一个表示在运行级别2345下启动Apache,第二、三是关于启动和停止的优先级配置。

3、Apache服务尚未被添加到chkconfig列表中,需要使用–add参数将其添加进去

[root@localhost init.d]# chkconfig --add httpd

[root@localhost init.d]# chkconfig --list httpd

通过上面的设置,每次开机时apache服务都是自动启动的

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。 

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'。

httpd              0:关    1:关    2:开    3:开    4:开    5:开    6:关

注:chkconfg是检查,设置系统的各种服务。

chkconfg语法如下:

chkconfig --list [name]

chkconfig --add name

chkconfig --del name

chkconfig [--level levels] name <on|off|reset>

chkconfig [--level levels] name

方法二: 将服务加到/etc/rc.d/rc.local中 vi /etc/rc.d/rc.local 添加以下内容

/usr/local/apache/bin/apachectl start

14 去除开机启动

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

[root@localhost init.d]# rm -f httpd

vi /etc/rc.d/rc.local 删除以下内容

/usr/local/apache/bin/apachectl start

重起计算机