一、实验目的

    在centos操作系统中利用yum源安装HTTP服务,练习源代码安装软件包的过程,掌握其方法,并且安装成功后,手动编写shell控制脚本,练习shell脚本编写能力。

二、实验环境

      vmware10虚拟机安装的CentOS -6.4 64位的Linux操作系统。

注意:初次安装Centos操作系统时选择的是最小版,所以有限的指令不被安装需要手动安装。                             例如本次实验中要使用yumvimman等命令。

三、实验步骤

1、实验注意事项

首先要安装AdditionalDevelopment   Development tools,这两个软件开发包。这些是编译环境必备的软件包组。

准备你要安装的HTTP软件包,在centos6.4系统中的HTTP软件包版本是2.2的,需要下载最新的软件包,可以到下载最新的2.4版本(httpd-2.4.4.tar.bz2)。还有APR软件包和apr-util软件包(apr-1.4.6.tar.gz   apr-util-1.5.1.tar.gz),这是HTTP安装之前呀安装的必须软件。也可到网站上去下载最新的版本。

Xftp工具传到虚拟机centos系统中/root目录下。

2、安装

1)先将打包的HTTP软件包解压到/usr/local/src目录下。使用如下命令:

tar -jxvf httpd-2.4.4.tar.bz2 -C /usr/local/src    

注意软件包使用的是什么格式的打包压缩,这里使用的是tar+bzip2,要使用相对应的参数。

2)接下来就要安装,一般源文件里都提供有install文件或readme文件,在源文件中找到INSTALL文件,用less INSTALL 命令查询具体方法。找到之后,首先我们要明确的是将软件安装的什么路径下,这里也有一些指令说明:

./configure --prefix=PREFIX  这是指明安装路径的命令,

如下指令

./configure --prefix=/usr/local/apache //apache是自己定义的目录

但是在执行命令中是要检测编译环境时会报错:

checking for APR... no

configure: error: APR not found.

需要我们安装APR软件包。我们已经有了安装包,那就解压到对应目录,鉴于方便我们这里也直接将apr-util软件包也解压了。然后我们要先安装apr

./configure  --prefix=/usr/local/apr

然后执行命令make  && make  install该命令是有两条命令的组合命令,第一条make命令是针对apr安装生成的makefile文件来操作的,mak主要对makefile文件中定义的一些规则来进行编译,主要生成二进制文件,手册,头文件,库文件。make install命令是将生成的那四类文件进行性存放,必须要存放在指定的目录里,这与在./configure命令的设置的选项有关。

3)在生成的lib文件中存放着安装的库文件,但是你想要系统访问到,能找到你的库文件,那就要将你的lib文件放在/etc/ld.so.conf.d/ 目录下,目录下你要建一个conf文件,例:apr.conf  就可以了。注意:要ldconfig命令更新缓存之后,你再查看能在系统缓存中找你的库文件。

4)接下来就是include文件,系统想要访问头文件就要创建头文件的链接,如下:

ln -s/usr/local/apr/include/apr-1  apr

lrwxrwxrwx. 1 rootroot 28 Dec 16 00:26 apr-> /usr/local/apr/include/apr-1

5)安装apr-util 其步骤大致和上述一致。

注意一点,在安装时需要指明apr的路径,因为apr-utilapr的工具,当然要找到apr的位置,如下指令:

./configure--prefix=/usr/local/apr-util  --with-apr=/usr/local/apr/bin/apr-1-config

6)继续安装HTTP,当继续安装的时候,还是会有同样的问题,缺少apr,缺少apr-util,所以我们要指定aprapr-util的路径,如下指令:

./configure --prefix=/usr/local/apache--with-apr=/usr/local/apr/bin/apr-1-config--with-apr-util=/usr/local/apr-util/bin/apu-1-config

指定之后继续执行,但是有时候还是会遇到问题比如:checking for pcre-config... false configure: error: pcre-config for libpcre not found. PCRE is requiredand available from 这是缺少pcre-config,我们到光盘目录下包含pcre-config文件的包,安装就可以了。如:yum installpcre-devel --disablerepo=\* --enablerepo=c6-media

继续安装HTTP,成功之后,继续执行make  make install 指令。然后指定头文件位置:cd  /usr/include/   ln -s /usr/local/apache/include/    apache

安装后形成的bin目录下有许多可执行文件,但是我们执行时不能总到bin目录下执行,不方便,这时需要我们修改环境变量,在/etc/profile 环境变量文件中修改,加上PATH=$PATH:/usr/local/apache/bin ,这是在其追加上bin目录。

注意:有时候在安装之后man手册不能使用,那是就要将man手册的路径加到/etc/man.config文件中,加上MANPATH  /usr/local/apahe/man

  3、测试

在不同目录下,执行httpd,看是否HTTP服务能启动。并且在物理机上用HTTP访问Centos

4、编写控制脚本

/etc/init.d/目录下编写控制脚本。

#!/bin/bash

[ -e /etc/init.d/functons  ]&& . /etc/init.d/functions

prog=/usr/local/apache/bin/httpd

lockfile=/var/lock/subsys/httpd

start () {

     if [ -e $lockfile ];then

    echo "the httpdserver is started"

    else

    echo -n "the httpdserver is starting......"

    sleep 1

    $prog && echo -e"[\033[32mOK\033[0m] " && touch $lockfile ||echo"failer"

   fi

}

stop () {

      if [  !-e $lockfile ];then

    echo "the httpd serveris stoped"

    else

    echo -n "the httpdserver is stoping......"

    sleep 1

    kill -9 http  && echo "OK" && rm-rf $lockfile || echo "failer"

 fi

}

status (){

     if [ -e $lockfile ];then

       echo "the httpdis running..."

        else

        echo "the httpdis stop "

       fi

}

case "$1" in

start)

   start

   ;;

stop)

   stop

   ;;

restart)

stop

start

  ;;

status)

status

  ;;

*)

echo "USAGE:start|stop|restart"

esac

记得要给脚本加上可执行权限,chmod a+x http

四、实验结果

[root@ahaoinit.d]# service http start

thehttpd server is starting......AH00557: httpd: apr_sockaddr_info_get() failedfor ahao.a.com

AH00558:httpd: Could not reliably determine the server's fully qualified domain name,using 127.0.0.1. Set the 'Serppress this message

httpd(pid 32982) already running

[OK]

[root@ahaoinit.d]# service http stop

thehttpd server is stoping...... [OK]

[root@ahaoinit.d]# service http restart

thehttpd server is stoping...... [OK]

thehttpd server is starting......AH00557: httpd: apr_sockaddr_info_get() failedfor ahao.a.com

AH00558:httpd: Could not reliably determine the server's fully qualified domain name,using 127.0.0.1. Set the 'Serppress this message

httpd(pid 32982) already running

[OK]

五、实验总结

本次实验是练习yum源代码安装软件包,其中有许多要注意的地方,比如开始时的编译环境一定要搭建好,不然一定会出问题,在安装过程当中也会有一定的问题,但是针对安装过程中出现的错误,我们应该仔细去排查,逐个的解决,这样才是解决之道。在编写控制脚本时要有一定的编程思想,编写过程中要细心,以免出现不必要的错误。控制脚本主要都是针对各种服务进行编写的,Linux后面要学习的服务器的搭建时,都是要用shell控制脚本编写控制代码的,所以一定要加油好好学习。