Yum编译安装web源程序并启动服务器软件

一、编译安装

1.1 Rpmyum的小小区别

在没有配置yum 源的时候,他俩没太大的差别,除了选项的不同。而在给yum配置了yum源之后,他们就有了很大的不同。首先yum仓库就好比一个大卖场,而且是一个专为yum提供的一个免费的卖场,里面的rpm包随便 yum使用,而且它还能解决包与包的依赖关系,将有所依赖的包全部安装,rpm则不能。

1.2 搭建yum仓库。

创建yum仓库有另种方法,一种是修改/etc/yum.conf文件,另一种是在/etc/yum.repos.d/下创建以.repo结尾的文件。

修改/etc/yum.conf

[main]

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=0

debuglevel=2

logfile=/var/log/yum.log

exactarch=1

obsoletes=1

gpgcheck=1

plugins=1

installonly_limit=3

[centos]

name=centos 1.0

baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/

[main]乃是全局性配置,默认一般不必改动。

[centos]就是repolist--yum仓库资源了。可以列出任意多个,×××。

也可以不必修改yum.conf,另外编译一个yum仓库

必须在/etc/yum.repos.d/下创建以.repo结尾的文件才行,这里以yum.repo文件为例

[dragon]

name=super star 0.1

baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/

gpgcheck=0

enabled=1

同样可以实现yum仓库的创建。

Rpm包安装一般都不需要编译的,而有些却需要编译,如源代码包。下面通过实例来解决源代码包的安装过程。

Apache全球第一的web服务器软件网站,上面提供了大量的源程序包。

Apache网站下载源程序包

www.apache.org---->

大量的程序包尽情下载。

我们下载一个httpd-2.2.25.tar.bz2

然后解压,cd到解压后的文件中。

.c文件都是源程序文件,要使服务器软件能用,用gcc编译.c文件。

但由于.c文件过多,而编译有必须安装特定的顺序进行,所以gcc显然实现不了。

Make工具,管理一组的程序,实现将应用程序的源程序的多个源程序文件按照工程的方法来管理,能够根据一个简单的指令文件自动的实现按次序编译源程序。它大大简化降低了gcc的工作,但它仍然延续了gcc了功能,需要一个配置文件才能进行编译,这个文件是makefile。Makefile文件中指出了我们使用gcc先编译哪个文件,先编译其中的哪个片段,这样的步骤来编译。它是由脚本文件自动生成的,脚本文件是configure.它又是由软件包的作者制作的autoconf工具自动生成的,automake又能自动生成makefile.in.

所以简单的步骤就是,configure脚本结合automake生成的makefile.in生了makefile文件,这时就可以用make命令编译了,编译完了使用make install安装就行了。

要想编译就得安装三个软件包,gcc是基于这三个软件包的,这三个软件包安装了才有gcc工具。

Desktop Platform Development

Server Platform Development

Development tools

#yum groupinstall Desktop Platform Development

#yum groupinstall Desktop Server Platform Development

#yum groupinstall Desktop Development tools

三个包租安装完了就可以编译了。

注意:有时候可能因为某种原因,三个包组装完后,检测编译环境仍会提示没有C编译器

configure: error: no acceptable C compiler found in $PATH

这时就需要我们多加一步,手动安装gcc了。

#yum install gcc

1.3 源代码编译安装三部曲:

执行源代码目录中的configure脚本,即:

[root@station125 httpd-2.2.25]#./configure --prefix=/usr/local/apache --enable-so --enable-rewrote

        检测编译环境,让用户定义编译配置

        --prefix=/urs/local/apache  当卸载的软件的时候,这个目录删除,一切搞定。

        --sysconfdir=指定配置文件的存放位置

[root@station125 httpd-2.2.25]#make---------------------编译

[root@station125 httpd-2.2.25]#make install-------------安装

原理再重复一遍

./configure+makefile.in(automake自动生成的)------>makefile(可以先看一下源代码目录下本来没有makefile文件的)-------->make利用gcc的功能编译二进制代码-------->make install编译完成进行安装。

执行第二步

# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrote

后,我们会发现,源代码目录下生成了makefile文件。

1.4 启动服务器

安装完成后,来到指定的安装目录/usr/local/apache下看看里头都有啥。

[root@station125 httpd-2.2.25]# cd /usr/local/apache

[root@station125 apache]# ls

bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules

现在可以启动我们的web服务器了

[root@station125 apache]#/usr/local/apache/bin/apachectl start

然后查看80端口是否启用

[root@station125 apache]#netstat -tnlp

或者使用

[root@station125 apache]#lsof -i:80

二、服务器配置

编译完成之后,要想更好的管理服务器,就需要对一些文件进行设置,让服务器更好的运行。

2.1 PATH环境变量的设置

/etc/profile.d/目录下新建一个文件可执行文件apache.sh

#vim /etc/profile.d/apache.sh

#cat /etc/profile.d/apache.sh

export PATH=/usr/local/apache/bin:$PATH

      PATH=/usr/local/apache/sbin:$PATH

# . /etc/profile.d/apache.sh  执行apache.sh使PATH路径多出Apache服务器的二进制可执行程序,使这些命令也可以直接使用,不用再加上路径。

#echo $PATH

/usr/local/apache/sbin:/usr/local/apache/bin:/usr/lib64/qt-3.3/bin:/usr/local/apache/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/bin

2.2 配置库文件

# ldconfig -v: 重新搜索当前系统上所有库文件搜索路径下的库文件,并生成缓存/etc/ld.so.cache

如果不对apache配置,库文件搜索路径将不包括apache的库。

配置如下:

# ldconfig -v  搜索结果不包括apache的库文件路径

#vim /etc/ld.so.conf.d/apache.conf

#cat /etc/ld.so.conf.d/apache.conf

/usr/local/apache/lib 在文件中写上编译安装的源程序的lib文件路径

# ldconfig -v   刷新缓存库文件

# ldconfig -v | grep /usr/local/apache/lib : 搜索结果显示Apache的库文件路径。

ldconfig -v 刷新当前库文件信息,-v表示显示出结果,不写,就没有结果。源代码编译完成后,都要刷新库文件。

ldd /bin/ls   显示ls命令所依赖的库文件。

2.3 /usr/local/apache/conf  配置文件不需要导出。

2.4 /etc/man.config, 配置man文件帮助手册

# vim /etc/man.config

在其中加入:MANPATH /usr/local/apache/man

若不进行配置,则需要这样写

#man -M /usr/local/apache/man httpd   -----M 指明路径

才能显示httpd可执行程序的man手册。

但这种方式每次用的时候,都需要写出apacheman路径。

2.5 对头文件链接:

# mkdir /usr/include/httpd

# ln -sv /usr/local/apache/include /usr/include/httpd

如果服务没有启动,这些数据是显示不出来的。

如果服务启动,在网页的地址栏输入自己的ip地址,就可以显示出网站的运行情况了。

当然,到此为止,我们只给出了正常操作的一些步骤,在编译的过程中还会出现一些意外情况,下面是我在编译过程中遇到的困难,希望能够解决读者的疑惑。

我们编译安装完了之后,服务器软件的后台就在/usr/local/apache目录下,如果我们将之删除,再装第二次,那么到了检测编译环境的时候可能会报错,说少了,aprapr-util两个包。

原因在于,编译源程序使用的是源程序原件自己的aprapr-util包,虽然rpm -q aprapr-util都已经安装,但却不能在为这个编译程序使用。这时就需要到www.apache.org官网上下载aprapr-util的源代码包了。

编译安装步骤与web服务器的编译安装类似,不同的是,我们要首先编译安装apr,然后编译安装apr-util,而且在检测编译环境的时候./configure 要加上一个选项。

编译apr的时候./configure --prefix=/usr/local/apr

编译apr-util的时候./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr

编译web的时候,

./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr --with-apr-util=/usr/local/arp-util

其余步骤都一样的。