一键编译安装apche脚本—适用于Centos6 和 Centos 7

此脚本可实现apache,httpd-2.2.34适用于Centos6,和 httpd-2.4.25适用于Centos7,的一键编译安装。
同时可实现在Centos6 和Centos7 上实现网络远程安装!

  • 程序设计

为实现源码编译安装一键操作,同时可以实现网络远程安装,这样只要安装好一台主机,别的主机就可以通过网络远程运行网络主机的脚本来实现本地主机的软件安装,省去了拷贝脚本和安装包的时间,提高工作效率!此脚本默认局域网内安装,脚本需提前在互联网下载好,存放至网络主机指定文件夹内。

  • 目标功能
  1. 可以在Centos6,和Centos7上分别实现一键安装对应匹配的apche版本;
  2. 同时在任意一台机器上均可实现网络安装,即通过http协议运行另外一台机器上的httpd_install.shjiao脚本实现一键编译安装本机匹配的apache版本
  • 实现思路
  1. 在安装前,先拷贝好需要安装的两个apache软件版本,http-2.2.34(Centos6)和http.2.4.25(Centos7)的安装包,放至单机安装的机器上的/var/www/html/src/下,以便本机可以通过http功能,首先给自己安装对应版本软件。
  2. 通过httpd实现网络的单机安装,安装之前先确认httpd功能可用,安装好apache后,将httpd进程杀掉,将80端口释放,另外机器通过apache软件的http功能实现网络安装。
  • 代码展示

1将常量和变量在这里进行声明,IP和安装包可以在这里进行替换,提高脚本管理的灵活和实用性。

代码1

2

(1安装前确认httpd 服务是正常工作的,由于不知名的问题,这里只有先卸载再重新安装一下,才能确保它是正常工作的;

(2判断完版本后,对Pa(安装包变量)进行赋值,同时执行对应版本关闭防火墙的密令;

(3通过sed 密令修改SELINUX值为disable.考虑到这个值可能已经被改过,所以通过行首锚定,只检索^SELINUX,然后替换整行;

(4判断并且创建/app 和/root/src  文件夹通过wget 命令通过http 协议,获取安装包,解压缩至/src 下,进入文件夹内,准备安装;

代码2

3安装步骤很简单,这里的killall -9 httpd 是用来释放80端口的,安装时,总是报错,80端口被httpd进程占用,所以只有杀掉进程,才能最后启动成功。

代码3

4这里存粹是为了网络安装做准备,apachectl start 成功后,另外一台主机就可以通过

curl http://主机IP/httpd_install.sh|bash  来运行脚本为本机编译安装软件了!

代码4

 

 

 

源代码如下:

#!/bin/bash
#
#********************************************************************
#Author: nieshaokai
#Date: 2018-07-31
#FileName: httpd_install.sh
#URL: http://www.magedu.com
#Description: The apache install suitable for Centos6 or Centos7
#Version 1.0
#The Script adheres to the OLP
#OLP-old white protocol;the changer must be handsome and don`t snore

#常量声明
——————————————————————————————————————
IP=192.168.0.116 #远程主机的IP
P7=httpd-2.4.25.tar.bz2 #Centos6 的源码版本
P6=httpd-2.2.34.tar.bz2 #Centos7 的源码版本

#变量声明
#——————————————————————————————————————
V=`cat /etc/redhat-release| sed -r ‘s/[^0-9]+([0-9]).*/\1/’` #版本号
#Pa 代码中源码包变量

#安装前准备工作
#——————————————————————————————————————
yum clean all &> /dev/null;
yum -y remove httpd || exit;
killall -9 httpd
yum -y install httpd || exit;
[ $V -eq 6 ] && { service iptables stop; chkconfig iptables off;Pa=${P6};service httpd start; }
[ $V -eq 7 ] && { systemctl stop firewalld;systemctl disable firewalld;Pa=${P7};systemctl start httpd; }
yum -y groupinstall “Development tools” || exit;
sed -i ‘s/^SELINUX.*/SELINUX=disabled/’ /etc/selinux/config # 将SELINUX=enforcing这行替换成=disabled;
[ -d /app ] || mkdir /app
[ -d /root/src ] || mkdir src; #查看是不是有src 文件夹没有的话创建一个
cd /root/src
wget http://${IP}/src/${Pa} || exit;
tar xvf ${Pa}
cd `echo ${Pa}|sed -r ‘s/(^httpd-.*)\.tar.*/\1/’` ||exit;

#安装模块
#——————————————————————————————————————
./configure –prefix=/app # 将安装目录设置成/app
[ $? -eq 0 ] && make -j4 && make install || { echo -e”\e[31;1mThere’s a problem here\e[0m” ;exit; }

echo ‘PATH=/app/bin:$PATH’ >> /etc/profile.d/env.sh #修改环境变量
. /etc/profile.d/env.sh
killall -9 httpd # httpd进程非法占用80端口,已经被判死刑,立即执行!
apachectl start
[ $? -eq 0 ] && echo -e “\e[36;1mwelcom to use apache\e[0m” || echo -e “\e[31;1mOther problems may cause the startup to fail\e[0m”

#为做网络安装主机做准备
#——————————————————————————————————————
[ -d /app/htdocs/src ] || mkdir /app/htdocs/src
cd /app/htdocs/src
cp /var/www/html/src/http* /app/htdocs/src/
cp /root/bin/httpd_install.sh /app/htdocs/ &> /dev/null

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96888

(4)
知行合一知行合一
上一篇 2018-04-22 23:28
下一篇 2018-04-23 08:29

相关推荐

  • shell脚本之判断httpd是否有异常

    案例 以web为例 大全讲解:如http为例 #/etc/init.d/httpd start      开启httpd #lsof –i :80 [root@centos6 ~/bin]$curl -I -s -o /dev/null -w “%{http_code}\n” http://172.16.0.1 析:-I 是响应头,响…

    Linux笔记 2018-05-20
  • N31第六周作业

    本周(7.23–7.29)第六周 1、简述osi七层模型和TCP/IP五层模型 OSI 七层模型 1、应用层:OSI 参考模型中最靠近用户的一层,为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。 2、表示层:提供各种用于应用层数据的编码和转换功能,确保一个…

    Linux笔记 2018-08-01
  • Linux运维初步—第三周

    Linux运维初步—第三周总结与练习 标签(空格分隔): linux入门 linux 运维 — 写作:N27_loong 2017-7-27[TOC] 一、本周主要内容回顾: 用户(组)管理: – 增加用户或组,指定用户权限、家目录路径、用户属组属主的变更; – 用户密码和组密码加密和验证的设计和文件存储位置;…

    Linux笔记 2018-07-27
  • 搭建完整dns服务(超详细)

    基本框架结构图 域名不一定是magedu.com  可以自定义 准备8台虚拟机 虚拟机地址: 192.168.162.101 作为客户端 192.168.162.102 作为websrv1 端 192.168.162.103 作为websrv2端 192.168.162.104 作为主dns端 192.168.162.105 作为从dns端 192.168.…

    Linux笔记 2018-06-02
  • 随堂笔记1

    记马哥Linux运维课程第一周知识点(持续更新中) CPU 中央处理单元ROM 只读 不可变 只能使用,不能修改RAM 易失性 运行内存 处理的数据皆为0、1 内部转换为二进制 obase=2 output ibase=2 input 辅助存储器 硬盘 仓库 主存储器 车间 处理数据 机架式Rack服务器 1U=1.75英寸=44.45mm C/S结构 cl…

    Linux笔记 2018-07-22
  • 第二周总结

    反向单引号 ` `:执行能力强,可以执行命令 [等价于$()]单引号 ‘ ’:只显示字符双引号 “ ”:识别变量,不识别命令花括号{ }: 里面内容互相组合 打印重复字符串的简化形式echo file{1,3,5} 结果为:file1 file3 file5rm -f file{1,3,5} 删除file1 file3 file5echo file{1..1…

    Linux笔记 2018-07-29