Shell 自动安装Apache

我们先回顾手动安装Apache(通过源码安装包)的步骤,然后分析、将手动执行代码转化为shell脚本。

手工安装Apache

参考 第9章 软件安装—Apache源码安装

我们先下载好安装文件并上传到指定目录/software/httpd-2.4.57.tar.bz2,不用在Shell里下载。

步骤1:解压

tar -xvf /software/httpd-2.4.57.tar.bz2 -C /usr/local/src/

步骤2:安装依赖

yum -y install gcc apr-devel apr-util-devel pcre-devel

步骤3:编绎

cd /usr/local/src/httpd-2.4.57
./configure --prefix=/usr/local/httpd

步骤4:编绎与安装

make && make install

步骤5:配置后台服务

1)复制程序到后台服务目录

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

【重点】2)编辑文件httpd

vim /etc/init.d/httpd

#!/bin/sh下添加如下两行

#chkconfig: 345 85 15
#description:apache start and stop

步骤6:添加服务,设置为自动启动

chkconfig --add httpd
chkconfig httpd on

步骤7:启动服务

systemctl start httpd

步骤8:测试

curl localhost

自动安装Apache

目标

通过执行一个脚本文件,自动完成上述所有动作。


分析

第5步:2)编辑文件httpd

vim /etc/init.d/httpd

#!/bin/sh下添加行

#chkconfig: 345 85 15

这里需要修改文件,找到相应内容,追加1行,可以通过 sed命令完成。

sed -i \
'/#!\/bin\/sh/a#chkconfig: 345 85 15' \
/etc/init.d/httpd

-i表示修改会保存到文件;

前两行结尾的\用于将一条命令分多行;

'/字符串1/a字符串2'表示搜索字符串1,在下一行添加字符串2;

字符串#!/bin/s含有特殊字符/,/前加\进行转义。

sed命令更多用法见下节。


完整代码

01apache-install.sh

tar -xvf /software/httpd-2.4.57.tar.bz2 -C /usr/local/src/
echo '解压完成'
 
yum -y install gcc apr-devel apr-util-devel pcre-devel
echo '依赖包安装完成'
 
cd /usr/local/src/httpd-2.4.57
./configure --prefix=/usr/local/httpd
make && make install
echo '编绎安装完成'
 
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
 
sed -i \
'/#!\/bin\/sh/a#chkconfig: 345 85 15' \
/etc/init.d/httpd
 
chkconfig --add httpd
chkconfig httpd on
echo '服务配置完成'
 
systemctl start httpd
echo '服务启动完成'
 
curl localhost
echo '测试完成'

执行

sh 01apache-install.sh

运行效果

img