在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 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的共享库文件】
注意这个带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 =========》》》make install
安装完成后 /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[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 命令来管理这些服务
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】~~
辛辛苦苦做的 希望能对大家有帮助,也对我有帮助!!多多指教~~~