一键编译安装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
下一篇 2018-04-23

相关推荐

  • 第三周作业

    1 列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户名登陆多次,则只显示一次。
    2 取出最后登陆到当前系统的用户的相关信息。
    3 取出当前系统上被用户当作其默认shell的最多的那个shell.
    4 将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5 取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6 列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字装换为大写后保存至/tmp/etc.conf文件中。
    7 显示/var目录下一级子目录或文件的总个数。
    8 取出/etc/group文件中第三个字符段数值最小的10个组的名字。
    9 将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10. 请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)创建组distro, 其GID为2016
    (2)创建用户mandriva, 其ID号为1005,基本组为distro
    (3)创建用户mageia, 其ID号为1100,家目录为/home/linux
    (4)给用户mageia添加密码,密码为mageedu
    (5)删除mandriva, 但保留其家目录
    (6)创建用户slackware, 其ID号为2002, 基本组为distro, 附加组为peguin
    (7)修改slackware的默认shell为/bin/tcsh
    (8)为用户slackware的新增附加组admins

    2018-06-05
  • 计算机组成及其功能

    计算机组成

    2018-05-09
  • Httpd基础

    Httpd基础

    2018-05-04
  • 软件包管理

      软件包管理 API:Application Programming Interface POSIX:Portable OS 程序源代码 –> 预处理 –> 编译 –> 汇编 –> 链接 静态编译:.a 动态编译:.so 二进制应用程序的组成部分: 二进制文件、库文件、配置文…

    2018-04-19
  • 第一周作业之:Linux系统常用命令使用格式介绍

    基于ContOS7下演示ifconfg、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date这些命令的常见使用方式

    Linux笔记 2017-12-03
  • 正则表达式与文本处理

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 cp -r /etc/skel /home/tuser1 chmod -R go-rwx /home/tuser1 2、编辑/etc/group文件,添加组Hadoop。 Nano /etc/group hadoop:x:5…

    Linux笔记 2018-07-15