由于rpm包在作者制作封装的时候已经把程序的一些特性固定了,如果我们根据自己的需求,需要运用程序的一些没有普适性相关特性,就需要下载程序的源码手动编译安装了,这里只是简单的介绍一下C代码的程序包编译安装方法。

    为了能更直观的看到源码编译安装的过程,我演示一下在centos7.2环境中编译安装httpd2.2:

    首先,编译的前提是得有称手的工具及环境了,编译c源代码就需要用到开发工具,make,gcc了,环境就需要开发库跟头文件了,如果系统中没有这些,就需要yum安装了。

    这里我运行yum group install Development Tools安装开发环境组件

        spacer.gifwKioL1Z-JmvTGPHwAAHRR9I1I-4724.jpg

    安装好开发环境后,开始解压下载好的httpd-2.2.29.tar.bz2,并切换到httpd-2.2.29目录

    [root@localhost test]# tar -jxf httpd-2.2.29.tar.bz2 

    [root@localhost test]# ls

        httpd-2.2.29  httpd-2.2.29.tar.bz2

    [root@localhost test]# cd httpd-2.2.29

    spacer.gifwKiom1Z-JmTgpMjDAAGdgeXUWVU779.jpg

    现在可以开始编译httpd2.2.29了,我们可以先察看一下目录下的README,INSTALL文件,可以初步了解一下该软件的一些简介及其通常的编译安装方法:

    spacer.gifwKioL1Z-JobAmmp9AAJqrXfo5RY849.jpg

    执行./configure -h可以先查看一下configure脚本的帮助信息,查看一下软件的一些安装选项,不同的软件的configure不尽相同,但是一般都有以下的特点:

        1.指定安装路径

                   --prefix=前缀,用于指定安装路径

                   --sysconfdir=/etc/package_name

        2.指定启动/禁用的特性

                 --enable-feature:例如--enable-fpm

                 --disable-fecture;例如 --disable-socket

         3.指定所依赖功能、程序或文件

                 --with-function: 启用某功能

                 --without-function: 禁用某功能

    这里我们只是简单的指定httpd的安装路径,如有特殊的需求,请参考configure的帮助信息,自行添加或关闭软件特性。

        注意,由于这里只是测试,我把服务安装到了root的家目录下,要运行起服务并允许外部主机能够访问需要给root的家目录给予rx权限,生产环境不建议如此操作,尽量安装到/usr/local/等目录下,切记!

    [root@localhost httpd-2.2.29]# ./configure --prefix=/root/test/httpd2.2

       spacer.gifwKiom1Z-JpzgRGjEAAGpaPEH_Sg078.jpg

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

        spacer.gifwKioL1Z-JsihX1PqAAD8RJJck-k416.jpg

    至此,httpd2.2的编译安装已经完成,就是这么简单,赶紧动手试试哇。我们启动自己手动编译安装的httpd看看哇:

        spacer.gifwKioL1Z-JtvgsUaDAAF2cp9dd7A920.jpg

    可以看到编译安装的httpd服务已经开始运作起来了,不过貌似启动起来好麻烦,得切换到安装的目录的bin目录下,要是能直接在命令行的任何路径下都能管理启动或是关闭就好了,这就是我们编译安装后的一些后续工作了:

        1.导出二进制程序目录至PATH环境变量中;

            编辑文件/etc/profile.d/httpd2.2.sh文件,在文件中写入下边一行即可;(注意,httpd2.2.sh文件并不存在,创建即可)

                export PATH=/root/test/httpd2.2/bin

            保存退出,要让此设置即刻生效,需要在当前目录下执行命令

                source httpd2.2.sh

            现在我们就可以在系统的任何路径下打开或关闭httpd服务了,而不用记住那一长串的路径了

        2.导出库文件路径;

            编辑/etc/ld.so.conf.d/httpd2.2.conf;        注意:httpd2.2文件不存在,需自行创建

                添加新的库文件所在目录至此文件中;

                    /root/test/httpd2.2/lib

                让系统重新生成缓存:

                    ldconfig [-v]

                         -v查看详细内容

            spacer.gifwKiom1Z-JurALMYzAAGKs4BGA-g423.jpg

        3.导出头文件

                基于链接的方式实现:

                    ln -sv  /root/test/httpd2.2/include /usr/include/httpd2.2

        4.导出帮助手册

            编辑/etc/man_db.conf文件,加入一个MANPATH;        注意:centos6.x系列中为/etc/man.config文件

             spacer.gifwKiom1Z-JviAzOx0AAFVfRpy9As195.jpg

            man apachectl

             spacer.gifwKiom1Z-JwyjK-EbAANHedQIYdI282.jpg

        至此,编译安装的工作完成,赶紧动手试试哇!