实例;编译安装apache 2.2,并启动此服务

基于c语言的源代码编译安装,通常有三个步骤

    ./configure

        (1)通过选项传递参数,指定启用特性,安装路径等:执行时会参考用户的指定以及makefile.in文件生成makefile.

        (2)检查依赖到的外部环境;



make:根据makefile文件,构建应用程序:(make是真正构建项目成为二进制程序的一个关键步骤,但make自己不是编译器,他是调用gcc来完成编译的,所以说make只是一个项目管理工具,而这个项目管理工具依赖与makfile,l来完成项目构建,而makefile又不能写死,所以这个时候依赖与configure脚本结合程序员事先写好的模版Makefile.in,让用户自己指定选项以后执行生成



makeinstall(makeinstall其实就是把编译好的文件复制到configure指定的安装路径下去)

   configure,和makefile.in是由项目构建工具生成的,但是有些应用程序的编译安装不会自带,所以得手动生成,而这依赖于以下两个开发工具;       开发工具:

          autoconf:生成configure脚本

          automake:生成makefile.in

      对与不同的应用程序,他的configure脚本肯定是不一样的,因为对不同的应用程序他的参数和特性不一样。所有autoconf需要结合一个配置文件去生成一个configure脚本,这个配置文件是用来告诉autoconf当前的这个开发的代码他需要有那些功能,是用来做特性使用的。automake也是如此,这就意味着不同程序的安装步骤是不一样的,有些程序需要configure脚本,有些程序不需要。所有建议安装源代码程序时注意查他的install文档,建议:安装前查看install文档,readme文档



准备工作    

    开源程序源代码的获取:

     官方自建站点:

          apache.org(ASF)

          mariadb.org

     代码托管:

          sourceforge

          github.com

          code.google.com

 提供开发工具及开发环境(chentos 5 6 7 通过“包组”提供开发组件,本次安装是在centos6操作系统下完成的)

         centos 6 的标准开发组件有两个"Development toos","server platfrom development"   

        开发工具:make ,gcc等等

          开发环境:开发库,头文件

        安装"Development toos","server platfrom development"

]#yum groupinstall "Development toos" "server platfrom development"

第一步:./configure脚本

    选项:指定安装位置,指定启用特性

        –help:获取其支持使用的选项

    选项分类:

    安装路径设定:

        –prefix=path/to/somewhere:指定默认安装位置;默认为/usr/local

        –sysconfidir=/path/to/somewhere:配置文件安装位置

        optional features:可选特性

        –disable-feature

        –enable-feature[=arg]

        optional packages:可选包

        –with-package[=arg]

        –whithout-package

    下载并解压httpd-2.2.29.tar

]#tar xvf httpd-2.2.29.tar.bz2

cd至httpd2.2.29目录

安装前查看INSTALL,README文档

    INSTALL,README文件是该程序的安装文档信息等内容

]#less INSTALL 
]#less README

执行./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd命令,指定安装位置和配置文件位置

]#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd

第二步:make

    执行make根据makefile文件,构建应用程序

]#make

第三步:make install

]#make install

    cd到/usr/local/apache目录,查看安装结果查找到bin目录下的apachectl(这是一个脚本,可以控制启动apachectl服务的)。并且执行bin/apachectl start命令开启服务,使用netstat -tan 查看80端口属于监听状态及表示服务已经开始运行。

    自定义编译安装之后,将其整体安装在了/usr/local/*文件下,卸载时只需删除该文件夹即可。

    但是,此时系统路径是无法读取该配置文件的,所以服务可能无法启动,需要配置其部分文件。

/usr/local/apache]#ls bin
ab         apr-1-config  apxs      dbmmanage  envvars-std   htdbm     htpasswd  httxt2dbm   rotatelogs
apachectl  apu-1-config  checkgid  envvars    htcacheclean  htdigest  httpd     logresolve


安装后的配置

(1)导出二进制程序目录至path环境变量中

    编辑文件/etc/profile.d/name(以程序名命名).sh输入export path=/payh/to/bin:$path

]#vim apaceh.sh
]#cat apaceh.sh
export PATH=$PATH:/usr/local/apache/bin

(2)导出库文件路径

    编辑/etc/ld.so.conf.d/name.conf

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

]#vim /etc/ld.so.conf.d/apache.conf
]#cat /etc/ld.so.conf.d/apache.conf
/usr/local/apache/lib

让系统重新生成缓存

    执行ldconfig[-v]命令

]#ldconfig -v
/usr/local/apache/lib:
	libexpat.so.0 -> libexpat.so.0.5.0
	libapr-1.so.0 -> libapr-1.so.0.5.1
	libaprutil-1.so.0 -> libaprutil-1.so.0.5.3

(3)导出头文件

    基于链接的方式实现

    ln -sv

]#ln -sv /usr/local/include/ /usr/include/apache
"/usr/include/apache" -> "/usr/local/include/"

(4)导出帮助手册

    编辑/etc/man.config文件

    添加一个manpath

MANPATH /usr/local/apache(添加此段语句)
/usr/local/apache]#ls man
man1  man8

至此整个编译安装完成!



安装后问题报错

启动服务失败

]#service httpd start
正在启动 httpd:httpd: Syntax error on line 163 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_ldap.so into
 server: /etc/httpd/modules/mod_ldap.so: undefined symbol: apr_ldap_ssl_init
                                                           [失败]

问题分析;/etc/httpd/conf/httpd.的第163行不能加载配置 这个apr_ldap_ssl_init到底是什么鬼,目前未知。

解决办法,注释掉/etc/httpd/cof/httpd.conf第163,164行,并且启动成功

]#service httpd start
正在启动 httpd:httpd: apr_sockaddr_info_get() failed for \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85 \xd8\xb9\xd9\x
84\xd9\x8a\xd9\x83\xd9\x85
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [确定]

yum安装links之后测试成功

blob.png

本地ip测试可访问(需关闭防火墙)iptables -F

blob.png

原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/39288

(0)
M20-1马星M20-1马星
上一篇 2016-08-24 10:12
下一篇 2016-08-24 10:12

相关推荐

  • varnish动静分离

    http://blog.51cto.com/sonlich/2060785

    2018-01-14
  • ☞CentOS安装程序{ 源码包安装;rpm包安装;}&&恢复rpm功能

    ☞CentOS安装程序{ 源码包安装;rpm包安装;}&&恢复rpm功能 本文是继上一篇文章“CentOS程序安装的3种方式{ 源码包安装 | rpm包安装 | yum安装;}”的补充,上篇文章http://www.178linux.com/38812主要介绍了yum安装软件的方法以及归纳了详细的yum命令。本文继续介绍基于本地file、远程…

    Linux干货 2016-08-24
  • shell脚本基础

    shell脚本基础 基本介绍 Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高。换一种说法也就是,shell script是利用shell的功能所写的一个程序,这个程序是使用…

    2017-07-01
  • N28-第二周

    1. Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
    2. bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
    3. 請使用命令行展開功能來完成以下練習:
    (1) 創建/tmp目錄下的a_c、a_d、b_c、b_d。
    (2) 創建/tmp/mylinux目錄下的bin、boot/grub、dev、etc/rc.d/init.d、etc/sysconfig/network-scripts、lib/modules、
    lib64、proc、sbin、sys、tmp、usr/local/bin、usr/local/sbin、var/lock、var/log、var/run目錄。
    4. 如何查看文件的元數據,其信息有哪些,分別表示什麼含意?如何修改文件的時間戳信息?
    5. 如何定義一個命令的別名?如何在命令中引用另一個命令的執行結果?
    6. 顯示/var目錄下所有以L小寫開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
    7. 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
    8. 顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其他任意長度任意字符的文件或目錄。
    9. 在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10. 複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
    11. 複製/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
    12. 複製/etc目錄下所有以L小寫或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

    Linux干货 2017-12-14
  • DNS服务器类型及查询过程

    什么是DNS   DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。 DNS域名称   域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,…

    Linux干货 2017-02-08
  • 推荐-使用Ansible部署LAMP环境

    使用Ansible部署LAMP环境 使用Ansible部署LAMP环境 前言 实验环境 实验步骤 配置ssh公钥认证 安装ansible 配置host iventory 创建YAML文件 运行Ansible-Playbook并测试 总结 前言 这两天学习了Ansible, 在部署实验环境真的很好用, 今天向大家分享如何使用Ansible部署LAMP环境, 本…

    Linux干货 2016-04-10