设为首页 收藏本站
查看: 1322|回复: 0

[经验分享] 以APACHE 2.4.6为例详述源代码安装

[复制链接]

尚未签到

发表于 2018-11-24 07:09:58 | 显示全部楼层 |阅读模式
          在linux 操作系统中所谓万物皆文件~当你兴致勃勃去进行各种配置,环抱着巨大的热情下载了一下最新最新的软件包。却发现 rpm怎么不管用啊。。。=。=!yum安装也没用,什么情况啊!这个时候一股内牛满面之情~~溢于言表啊。

          这个时候不知道你是否发现你的数据包后面跟着tar.gz    tar.bz2等字样,当我们用拆包命令,拆开了他们之后,一大堆东西就出来了,不知所以了。。想我。果断就摔鼠标了~其实这些就是我们平常所说的源代码。这个源代码,可不是我们从电影上面看到的外星文。他是可翻译的,可配置的,可使    用的!!!
          在现实使用过程中,最新的软件包是来不及被处理成rpm格式的安装包来供我们使用的,如果我们想要使用最新的软件包,就要去对应的网站上面下载源代码的软件包包~

  

          在这里,我就以apache2.4.6 的安装过程,来详细说明一下源代码文件是说怎么安装处理的

  

           首先一下就是源码文件的处理过程:拆解数据包------》源码-----》配置(./configure)》编译------》(可执行文件库文件(/lib  /usr/lib头文件(include手册)
   1.由于在网上下载的最新的源码都是经过打包压缩的,所以首先我们要将它从罪恶的小环境中释放出来,并且拆包将源码拆解出来放置于/usr/local/src   指明安装位置/usr/local/以安装文件名命名的目录
          2.拆解出来的一大堆东西就是源码,里面也包含了些其他的东西,我们下面再说。第二步骤中,我们要使用包中自带的configure 可执行脚本来进行配置,使其生成makefile文件【对于makedile文件大家可以参照一下gnu c编程里面的一些内容】

          3.配置完成后的makefile文件  我们就可以使用 make / make install 进行安装。

          4.对于安装后产生的文件 进行一系列的配置
  

  当然进行前面的这4个步骤之前,还有一些小前奏小知识需要搞定!!
      A:源码安装,首先要具备四类软件组
         developmentlibraries
         developmenttools
         xsoftware development
         legacysoftware development 这四类软件组安装之后才能进行源码安装,你可以在yum配置好之后,执行 yum grouplist all来查看这些软件组,并安装。
      B:拆解位置  /usr/local/src        安装位置/usr/local/文件名命名的目录
      C:当编译的时候会有很多的.c 文件~ 编译器手动编译gcc很麻烦,所以要用到  makefile文件,将所有的文件的转换关系,列出,进行编译。
  这就是大致的过程。。。。。。我们这就开始!!!
  

1.安装:
a)拆包将下好的软件包上传入linux的虚拟机,在这里用的是tar+gzip并且将拆出的文件放置于/usr/local/src/目录下
  
DSC0000.png

             b)进入对应的目录可以发现这些文件
DSC0001.png

   configure   一个脚本目的是生成 makefile文件的脚本    INSTALL文件含有一些指导安装的信息
     c)进入INSTALL  文件中可以发现一下条目
DSC0002.png

          d)configure   有源代码的开放商提供,进行源代码编译生成makefile文件 ,以下是要用到的选项
DSC0003.png

          --prefix指明要安装的路径,如果不指明则有一个默认路径【在/usr/local/服务名称】
DSC0004.png

   --sysconfidir 点名配置文件

DSC0005.png

       这步点名apr的路径,apr是apache的可抑制运行库文件

  

  
  安装:
  第一步   ./configure  配置    【在这个过程中,将会有很多错误需要更正,慢慢来吧,错误因人的操作系统而异=。=】
DSC0006.png

  如图所示的就是没有找到  apr可移植环境
DSC0007.png

  此时我我们可以用rpm –qa  来看看是否安装了这个包,如图没有的,需要我们安装如下三个软件包。
  
  -r--r--r-- 47 root root   125992 Aug  7  2009apr-1.2.7-11.el5_3.1.i386.rpm
  -r--r--r-- 47 root root   237184 Aug  7  2009apr-devel-1.2.7-11.el5_3.1.i386.rpm
  -r--r--r-- 47 root root    54252 Aug  7  2009apr-util-devel-1.2.7-7.el5_3.2.i386.rpm
  他们三个,在光盘中就有,挂载光盘,安装即可
  

  apr-1.2.7-11 用rpm来安装【apr-devel有apr的共享库文件】
DSC0008.png

  注意这个带devel的rpm包,很多软件包都带有这种rpm包,devel :共享库文件在这种包里面
DSC0009.png

  继续安装:
DSC00010.png

  仍然是错误的:问题还是apr的问题,但是我们安装过了为什么还有问题, 由上面所说的,apr的版本要求的是1.4.0以上版本,而我们的版本是1.2.7,好吧我们只有在从网上下载高版本了!
DSC00011.png

  在配置过程中我截取了一段安装记录,看到了都是生成Makefile文件
  

  从网上下载后,将软件包放入linux操作系统中PS:三个apr文件devel的就不下载了
DSC00012.png

  使用拆包命令
DSC00013.png

  拆包完成
DSC00014.png

  看好 这个apr-1.4.8也是源代码,但是他是比较简单的,我们直接指明安装路径开始配置
DSC00015.png

  这俩个是编译的命令~就是 执行makefile文件了
DSC00016.png

  apr安装成功啦,进入安装目录下
DSC00017.png

  安装之后形成了相应的目录【注意:此时我们要将他的include里面的头文件,能够让系统识别,方法就是将他们创建一个符号链接到/usr/include 或者/include中】
DSC00018.png

DSC00019.png

  可以看到这么多的符号链接。。。。以下省略
  

  
  然后就是库文件:系统可以识别/lib  或者 /usr/lib下的库文件
  但是在此处可以在/etc/ld.so.conf.d/目录下创建一个相对应文件名的.conf为后缀的文件,添加源码里面库文件的路径即可
  

DSC00020.png

DSC00021.png

  然后  ldconfig 更新缓存
  ldconfig –p 指示ldconfig打印出当前缓存文件所保存的所有共享库的名字.】-v此选项时,ldconfig将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的连接的名字.
  

  
  然后我们安装之前下载的第二个apr-util
DSC00022.png

  这里有出现错误。。。。。意思是apr没有被找到,请运用—with-apr选项【凌乱。。】
DSC00023.png

  查看一下  configure关于apr 的帮助。
  指明安装的带有apr-config 文件的路径。【进入刚才安装好的apr目录,】
DSC00024.png

  看到该文件bin目录下
DSC00025.png

  将—with命令添加上去就编译完成了 -----》make》make install
DSC00026.png

安装完成后/usr/local/下有我们刚才安装的 apr-util工具的目录


继续apache安装:
DSC00027.png

从这里看到了和安装util一样的问题需要指明—with-apr-1=PATH 的路径
DSC00028.png

仍然错误在这里还要指明 apr-util的路径
DSC00029.png

DSC00030.png

  完善命令,再次开始安装~
DSC00031.png

发现还是不成功,但是已经不是apr问题了~从图中可以看出一些端倪,貌似是一个pcrePCRE(PerlCompatibleRegularExpressions)是一个Perl库,包括perl兼容的正规表达式库】没有找到~
  
DSC00032.png

  查找这个软件包有没有安装,貌似少了一个devel的,我们找到把它安装上
DSC00033.png

继续配置:终于没有问题了
畅快的  make =========》》》make  install
DSC00034.png

安装完成后   /usr/local/apache    目录下的文件



接下来进行   apache库文件头文件的设置
DSC00035.png

  还是直接进入系统的头文件目录,然后将 apache头文件全部符号连接到该目录下
  库文件:apache没有lib 目录~   他的库文件就是一些模块 modules。不用管它。
DSC00036.png

  进入安装好的文件目录,进入它的bin目录下可以看到httpd  这个可执行程序,用来打开httpd服务,查看端口,他确实已经 打开了!
DSC00037.png

也可以使用  apachectl 也可以启动httpd服务。但是两者是有区别的
DSC00038.png

查看一下两个文件的类型:apachectl只是一个执行脚本,httpd才是真正的程序
httpd是正房,apachectl 是…妾室
  

一般我们都是写控制脚本来进行服务的管理,如果用 httpd来执行的话最好加上某些参数
  

DSC00039.png

-f  参数制定了服务配置文件,当文件内容发生改变启动的时候也会做出相应的改变,否则将出现一些意想不到的错误


到这里,我们的apache安装就完成了,我们虽不对他进行配置,但是可以继续往下做,还有一些问题,我们每次 都用httpd这个程序来开启服务的话,来麻烦了,服务我们都要用脚本来控制。所以就要写一个简单的脚本来控制它:

有了脚本才能使用service start stop等操作
在/etc/init.d  目录下放置着系统的许多脚本
#!/bin/bash
prog=/usr/local/apache/bin/httpd
configfile=/etc/apache/httpd.conf
lockfile=/var/lock/subsys/httpd
. /etc/init.d/functions
start() {
        if [ -e $lockfile ];then
        echo "the program `basename $prog`is started"
        else
        echo -n -e "the program `basename$prog` is starting...."
        sleep 2
        $prog && echo -e "\033[31m[ ok ] \033[0m" && touch $lockfile || echo -e "\033[31m [fail ] \033[0m"
        fi
}
stop() {
        if [ -e $lockfile ];then
        echo "the program `basename $prog`is stopping"
        sleep 2
        killproc httpd  && echo "[ ok ]" &&rm -rf  $lockfile || echo "[ fail]"
        else
        echo "the program `basename $prog` is stopped"
        fi
}
status () {
        if [ -e $lockfile ];then
        echo "the program `basename $prog`is running"
        else
        echo "the program `basename $prog`is stop "
        fi
}


case "$1" in
start)
        start
        ;;
stop)
        stop
;;
restart)
        stop
        start
        ;;
status)
        status
        ;;
*)
echo"USAGE:start|stop|restart|status"
esac
服务脚本的原理。先不讲。。。在总结道脚本这部分再说。!如果想知道的话就搜一下下lockfile文件的作用就知道啦!




【注意:自启动问题】
在配置好 httpd服务之后每次重启计算机之后都要手动的再去启动httpd服务很是麻烦,我们可以让他开机自动启动。。。。
这里要用到 chkconfig  命令来管理这些服务
DSC00040.png

chkconfig  --list 显示出自动启动的服务名称
DSC00041.png

在这里以sshd服务为例
1.    从中可以看到 0—6 这代表了系统的7钟模式
2.    2345 on 说明在这四种模式下是自动启动的   0是关机   6是重启  1是救援模式肯定是关闭的


当然这么多服务自动启动不是同时开始的,要有先后
DSC00042.png

在/etc/rc.d  目录下有关于开机启动的七个等级的配置文件


DSC00043.png

DSC00044.png

  查看 3级别下 rc3.d  文件。
  1.图中标明的   K+数字表明了进入3级别后要杀死的服务,后面紧跟链接,都是连接到init.d 目录下的服务
  2.途中的S+数字表明了开机要自动启动的服务
  3.数字大小代表了启动的先后顺序
  4.数字有一样的说明是同时启动
DSC00045.png

DSC00046.png

  这两行命令加入到自己编写的脚本上去。注意第三行的描述必须添加
DSC00047.png

  添加成功,执行以下 chkconfig命令发现添加成功了
DSC00048.png

  重启系统看看是否能自动启动,自启动成功!OK~!
  

  
  【最后一个问题】
  关于man  手册
  源码安装的手册放置在  /usr/local/apache/man
  下面有man1     man8
DSC00049.png

  打开man1   有这几个手册但是我们用manab 却打不开这个手册!!!
DSC00050.png

  这是查看man 命令的 man手册~  发现了这条说明
DSC00051.png

DSC00052.png

  
  manab  可以了~~~~  1类型手册!!!
  

  至此。。一个完整的源码安装服务器流程完成了  -.-!!
  

  当然没有牵扯到 httpd 服务器的配置!
  

  后面的,看上去和安装没有关系,但是我觉得不然。。只有这样做了才能真正的开机就去用apache服务。。。。做啦这么多。只代表我在我的机器上的问题 等等。也许在你的机器上有更多问题,也有可能直接就好了【那我就吐血了0……0】~~
  辛辛苦苦做的   希望能对大家有帮助,也对我有帮助!!多多指教~~~
  


  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-638800-1-1.html 上篇帖子: apache http server windows 下的安装 下篇帖子: APACHE默认模块功能说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表