Centos7 编译安装apache2.4

一、前言

为了更好地理解学习Linux系统程序包的编译安装,因此自己尝试编译安装了apache,本文记录了编译安装的过程和相应出现的报错及解决办法,以供之后再次翻阅。

二、环境准备

系统版本:CentOS Linux release 7.2.1511 (Core)
内核版本:3.10.0-327.el7.x86_64
在进行编译安装前,我也在网上翻阅了不少资料,基本上都在进行编译安装前均需要安装相关的依赖软件包,如:

yum install -y gcc gcc++ zlib zlib-devel expat-devel pcre-devel

上述部分是一些常见的依赖包,expat-devel和pcre-devel是我在安装过程中报错后补充的。

随后使用wget命令下载相应的源码包到指定的目录:
httpd:http://mirrors.shu.edu.cn/apache//httpd/httpd-2.4.29.tar.gz
apr:http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.3.tar.gz
apr-util:http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz

在做完相应的准备工作后,我们就可以开始编译安装的过程了。

三、编译安装

在编译安装httpd的源码包之前,我们得下编译安装apr和apr-until这两个对应源码包。

1、安装apr

[root@localhost tmp]# tar xf apr-1.6.3.tar.gz    
[root@localhost tmp]# cd apr-1.6.3
[root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.6.3]# make && make install
执行./configure后的结果输出

执行make && make install后的结果输出

上述为正常完成编译安装的输出结果,如果编译安装过程中出现报错,可按照该编译报错的提示查找相应的解决办法,此前我安装就出现了xml/apr_xml.c:35:19: 致命错误:expat.h:没有那个文件或目录 #include <expat.h>的报错,需要安装expat-devel才能解决。(已补充到环境准备中。)

2、安装apr-util

[root@localhost tmp]# tar xf apr-util-1.6.1.tar.gz 
[root@localhost tmp]# cd apr-util-1.6.1
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@localhost apr-util-1.6.1]# make && make install
./configure的执行结果
make && make install的执行结果

3、安装httpd

[root@localhost tmp]# tar xf httpd-2.4.29.tar.gz 
[root@localhost tmp]# cd httpd-2.4.29
[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
[root@localhost httpd-2.4.29]# make && make install
编译完成后的输出结果

在此处我,我之前安装的时候,出现了下述的报错:configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/,需要安装pcre-devel才能解决这个问题。(已补充到环境准备中。)

(另外./configure --help,可以查看对应的源码包支持的选项,这些选项对于编译来说挺重要的,这里暂且不作太多介绍,后续研究透了再另起一篇文章作总结。)

四、编译安装完成后的工作

1、启动Apache

[root@localhost ~]# cd /usr/local/apache/bin/
[root@localhost bin]# ./apachectl start

此处可能会出现报错:AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
需要编辑/usr/local/apache/conf/httpd.conf文件中找到#ServerName www.example.com:80并在其下方添加:ServerName localhost:80

2、修改iptables允许访问80端口

通过情况下,Linux系统的iptables 会拒绝任何访问到80端口的流量,此时可以通过使用iptables添加对应的访问规则来允许对应的流量。

[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]

如果系统无法找到service iptables save命令,需先yum安装iptables-service。

另外也可以停用iptables:

[root@localhost ~]# systemctl stop firewalld       #临时停用firewalld
[root@localhost ~]# systemctl disable firewalld  #关闭开机自动开启firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

3、设置开机自动开启apache

首先将/usr/local/apache/bin/apachectl 复制到/etc/init.d/目录下。

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

随后编辑/etc/rc.d/init.d/apachectl,在首行#!/bin/sh下添加下面两句命令:

#chkconfig: 234 20 80
#description: apache

随后用chkconfig命令将apachectl添加到系统服务并设置开机启动:

[root@localhost ~]# chkconfig --add apachectl
root@localhost ~]# chkconfig apachectl on

此时使用systemctl命令就能正常管理到apachectl服务了:

[root@localhost ~]# systemctl status apachectl
● apachectl.service - SYSV: apache
   Loaded: loaded (/etc/rc.d/init.d/apachectl)
   Active: active (exited) since 五 2018-01-05 05:14:59 CST; 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 66466 ExecStart=/etc/rc.d/init.d/apachectl start (code=exited, status=0/SUCCESS)

1月 05 05:14:59 localhost.localdomain systemd[1]: Starting SYSV: apache...
1月 05 05:14:59 localhost.localdomain apachectl[66466]: httpd (pid 64222) already running
1月 05 05:14:59 localhost.localdomain systemd[1]: Started SYSV: apache.
[root@localhost ~]# 

此处的/etc/init.d/apachectl,在复制时可以重命名为httpd,这样调用起来会更方便些。(我这里纯粹因为懒了=_=)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容