您的位置:首页 > 运维架构 > Apache

Linux入门之源码编译安装配置apache---“风一样的软件安装“

2014-04-11 09:53 639 查看
在来到马哥教育之前,我只在Windows上安装过软件。昨天,就在昨天,才知道,真正的软件安装是什么。一切都可以自己定制,不会出现莫名其妙的问题,一切都可以追根溯源,一切都在掌控之中。再也不用担心注册表的问题了。我称之为“风一样的软件安装”。

在Linux系统中,软件安装可以通过rpm管理器安装,也可以通过本地的yum或者服务器端yum来安装软件。但,这一切都要依靠他人做好的程序包。如果我们自己想自定义安装,按需索取,只安装自己需要的功能模块,可能源代码编译安装就更加合适了。

这里以编译安装apache为例,简单介绍源代码编译安装软件的过程。

一、概述

源代码编译安装是指获取程序的源代码,然后在Linux开发环境下,编译,然后安装到系统中的过程。本文以CentOS 6.5 X86_64 relase作为实验环境,实验室内部拥有yum源。无局域网yum源的小友,可以使用互联网yum源。本文主要涉及到的内容有:

编译安装前的环境配置

获取源代码

查看帮助信息

运行配置脚本

编译源代码

安装程序

测试安装结果

配置环境变量

输出头文件至系统

配置man手册文件路径

加载库文件

二、编译安装前的环境配置

源代码编译需要系统提供gcc开发环境,因此需要事先配置好编译环境。当前系统为 CentOS 6.5,常用的开发包组为“Development Tools”和“Server Platform Development”。安装即可。具体怎么配置访问内部yum源,请参见博主的另一篇博客。此处仅给出安装开发编译环境的过程

如果看到如上所述的Complete,基本可以确定安装成功。可以测试一下

三、获取源代码

从本地ftp服务器上获取源码包。源码包名字一般格式是package-version.tar.{gz|bz2|xz}(马帮风格,或的意思)。这里博主从本地服务器获取到一份源码。名称为

httpd-2.2.25.tar.bz2 。解压该文件至家目录(作为当前临时的工作目录)。

四、查看帮助信息

切换当前工作目录至~/httpd-2.2.25,作为当前的工作目录(十分重要)。


目录中,INSTALL等包含了丰富的帮助信息。这里我们通过查看配置脚本自带的帮助信息。

五、运行配置脚本

configure脚本主要是用来检查编译环境,定义相关的目录,定义启用或者禁用的特性。

背后的故事:在工作繁忙的./configure运行的间隙,探析下源码包都做了些什么工作。要知道configure这个文件不是一开始就有的,make也不是一开始就能用的。在他们能够被我们使用的背后,开发人员和程序做了大量的工作,其中,生成configure脚本和mkkefile是重中之重。源码包提供了autoconf工具,生成了伟大的configure脚本。在cofigure脚本和自定应的配置(例如--prefix)的共同作用下,atuomake以Makefile.in为模板,生成勤劳的make。make根据配置文件给出的信息,以及模板中已经提供的内容(由程序开发人员维护),编译安装程序。需要特别说明的是,这里的make并不是一个命令,而是系统提供给我们的一个程序管理项目,它后面有着复杂的管理工作,极大的简化了我们编译安装源码的难度。

六、编译源代码

根据源代码的数量,编译的时间长短也会有所不同。需耐心等待,若没有出现error信息,咋表明编译成功,否则,则需要根据具体的错误信息一一排除。

七、安装程序

将源代码编译好后,就可以安装了。这里的安装,可以通俗的理解成将编译好的二进制程序和相关文件等复制到配置文件中指定的路径。因此,可以明确,需要卸载编译安装的程序,只需要移除指定的目录即可。

八、测试安装结果

启动httped服务,在远程主机上使用浏览器测试安装部署结果

在远程主机上输入服务器地址,出现如下信息,说明httpd服务已启动。





九、配置环境变量

为什么要配置环境变量?在配置之前一定要搞清楚。要不然,只知其然,不知其所以然。在Linux系统中,运行一个命令(内置命令除外),shell进程都会去环境变量PATH中列举的路径中搜素,如果搜索到了有这个命令,那么就创建子进程,执行命令;若没有找到,则会报错,提示命令没有找到。

我们编译安装好httd后,相关的二进制程序被放置在了/usr/local/apache目录下,如果要执行其中bin目录下的二进制程序就必须要写完整的路径才能执行。比如说这样写才能启动httpd服务。/usr/local/apache/bin/apachectl start。只有将bin路径添加至环境变量中才能实现直接使用命令,而不用完整路径。

在/etc/profile.d/目录下创建新的配置文件,apache.sh,然后,添加目录之PATH路径中。

在bash中直接启动httpd服务

十、配置man手册文件路径

man手册存放在/usr/share/man目录中,系统通过配置文件/etc/man.config中的MANPATH来指定查找路径。这里我们新安装的程序的man手册并没有在这个配置文件中,因此系统无发找到man手册。我们使用vim编辑器添加一条MANPATH即可。

十一、输出头文件至系统

头文件以.h结尾。系统中其他源代码程序如果需要头文件中的定义的相关函数等,会在代码中声明调用此头文件,在编译程序时,会连接该库文件,动态生成二进制程序。多用于二次开发的过程中。

Linux系统的库文件都存放在/usr/include中,程序使用时会到这个目录中调用,因此需要将我们安装后的库文件跟系统库文件做以关联。我们使用软连接的方式,将httpd的头文件目录整个连接到/usr/include目录下。

查看链接信息

十二、加载库文件

在Linux系统中,库文件以.os(share object)结尾。库文件是编译好的二进制程序(这里仅指共享库)。Linux系统在启动时,会将/etc/ld.so.conf.d/目录下的所有库文件都加载至缓存中,缓存目录/etc/ld.so.cache。一直等到下次重启或者手动加载新的库文件,缓存才会更新。

要想让httpd的库文件能够被访问使用,加载至系统缓存中,必须配置相关文件。在/etc/ld.so.conf.d/目录下新建配置文件,httpd.conf。添加配置信息。

使用命令ldconfig命令重新加载缓存。

十三、结语

源代码编译安装程序是系统管理、运维工作中非常重要、基础的工作。因此,熟练掌握操作步骤,洞悉内部工作原理,掌握配置文件修改等,至关重要。本文简单描述了源代码安装apache。如有纰漏,还请批评指正。

version:1.0 原始版本

转自:/article/4122564.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: