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

185252315.png

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

185303698.png

configure   一个脚本目的是生成 makefile文件的脚本    INSTALL文件含有一些指导安装的信息

  c)进入INSTALL  文件中可以发现一下条目

185306708.png

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

185315675.png

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

185315234.png

--sysconfidir 点名配置文件

185316500.png

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


安装:

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

185317941.png

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

185320965.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的共享库文件】

185322999.png

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

185324246.png

继续安装:

185359212.png

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

185402954.png

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


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

185405808.png

使用拆包命令

185408909.png

拆包完成

185416979.png

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

185417858.png

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

185418766.png

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

185424817.png

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

185429240.png

185441260.png

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


然后就是库文件:系统可以识别/lib  或者 /usr/lib下的库文件

但是在此处可以在/etc/ld.so.conf.d/目录下创建一个相对应文件名的.conf为后缀的文件,添加源码里面库文件的路径即可


185447700.png

185448337.png

然后  ldconfig 更新缓存

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


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

185455368.png

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

185458542.png

查看一下  configure关于apr 的帮助。

指明安装的带有apr-config 文件的路径。【进入刚才安装好的apr目录,】

185458146.png

看到该文件bin目录下

185500985.png

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

185500196.png

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


继续apache安装:

185503628.png

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

185512155.png

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

185528652.png

185533320.png

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

185534633.png

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

195433889.png

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

195433622.png

继续配置:终于没有问题了

畅快的  make =========》》》make  install

195434368.png

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


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

195434211.png

还是直接进入系统的头文件目录,然后将 apache头文件全部符号连接到该目录下

库文件:apache没有lib 目录~   他的库文件就是一些模块 modules。不用管它。

195434117.png

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

195435135.png

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

195435687.png

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

httpd是正房,apachectl 是…妾室


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


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

195436961.png

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

195436107.png

在这里以sshd服务为例

1.    从中可以看到 0—6 这代表了系统的7钟模式

2.    2345 on 说明在这四种模式下是自动启动的   0是关机   6是重启  1是救援模式肯定是关闭的


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

195436878.png

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


195437504.png

195437604.png

查看 3级别下 rc3.d  文件。

1.图中标明的   K+数字表明了进入3级别后要杀死的服务,后面紧跟链接,都是连接到init.d 目录下的服务

2.途中的S+数字表明了开机要自动启动的服务

3.数字大小代表了启动的先后顺序

4.数字有一样的说明是同时启动

195437726.png

195437842.png

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

195438951.png

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

195438347.png

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


【最后一个问题】

关于man  手册

源码安装的手册放置在  /usr/local/apache/man

下面有man1     man8

195438175.png

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

195439800.png

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

195439410.png

195439251.png

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


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


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


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

辛辛苦苦做的   希望能对大家有帮助,也对我有帮助!!多多指教~~~