285572001 发表于 2018-11-24 07:09:58

以APACHE 2.4.6为例详述源代码安装

        在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/目录下
  

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

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

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

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

   --sysconfidir 点名配置文件


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

  

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

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

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

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

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

  继续安装:

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

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

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

  使用拆包命令

  拆包完成

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

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

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

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


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

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



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

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

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

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

  看到该文件在bin目录下

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

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


继续apache安装:

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

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


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

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

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

继续配置:终于没有问题了
畅快的make =========》》》makeinstall

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



接下来进行   apache的库文件和头文件的设置

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

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

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

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

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


-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 \033 \033
      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命令来管理这些服务

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

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


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

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




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


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

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

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

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

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

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


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

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

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

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


  

  

  




页: [1]
查看完整版本: 以APACHE 2.4.6为例详述源代码安装