Shell脚本一键部署网站服务

以下脚本所涉及到的服务有
IP:dhcp
dns:bind
Web:apache
在这里插入图片描述

#!/bin/bash
echo "#################################################"
echo "##      一键部署dhcp+dns+apache服务注意事项   ###"
echo "##        1:只要你跟着来,实验绝对没问题     ###"
echo "##        2:如果需要查看日志请打开/1.txt     ###"
echo "##        3:前面可能会需要你操作,           ###"
echo "##           Apache服务就轻松了               ###"
echo "##        4:DNS是从域名服务器本人已经尝试成功 ###"
echo "#################################################"

setenforce 0
systemctl stop firewalld
read -p 脚本即将开始,请问您准备好了吗(yes/no) a
if [ $a = yes ];then
                       echo -e "\033[32m那么咱们走起~\033[0m"
elif [ $a = no ];then
                        echo -e "\033[31m既然你没有准备好,那在等等\033[0m"
                        exit 0
else 
                        printf "\033[1;31;40m竟然不选择,从来老铁\n\033[0m" 
                        exit 0
fi
###########配置网卡信息##########
echo -e "\033[34m请配置本机网卡基本信息...\033[0m"
mask=255.255.255.0
read -p "输入网卡接口名称:" ens
read -p "输入IP地址:" ip
echo -e "\033[33m子网掩码已默认为:255.255.255.0\033[0m"
read -p "输入网关地址:" route
read -p "输入首选DNS地址:" dns

ifc="/etc/sysconfig/network-scripts/ifcfg-"

echo "DEVICE=$ens" > $ifc$ens
echo "TYPE=Ethernet" >> $ifc$ens
echo "BOOTPROTO=static" >> $ifc$ens
echo "ONBOOT=yes" >> $ifc$ens
echo "IPADDR=$ip" >> $ifc$ens
echo "NETMASK=$mask" >> $ifc$ens
echo "GATEWAY=$route" >> $ifc$ens
echo "DNS1=$dns" >> $ifc$ens

systemctl restart network
if [ $? -eq 0 ];then
        echo -e "  基本信息    \033[32m 配置成功 \033[0m    "
else
        echo -e "  基本信息    \033[31m 配置失败 \033[0m    "
fi


###########搭建YUM仓库##########
echo -e "\033[34m正在搭建yum源中...\033[0m"
rm -rf /etc/yum.repos.d/*
read -p 请输入您所搭建的yum文件名(例:yum.repo) b
#其余的名字你就不用管了
echo "[123]" > /etc/yum.repos.d/$b
echo "name=hauizhe" >> /etc/yum.repos.d/$b
read -p 请选择您所搭建的YUM源为哪种类型(file,ftp,http) c
if [ $c = file ];then 
                        printf "\033[1;31;40m虚拟机中光盘已连接了吗?现在连接还来得及\033[0m"
                        echo ""
                        read -p 请选择您光盘的挂载目录(例:/media) d
                        cd $d &>/1.txt
if [ $? -eq 0 ];then
                    echo -e "\033[31m目录已选择成功\033[0m"
                    echo "baseurl=$c://$d" >> /etc/yum.repos.d/$b
else 
                   echo -e "\033[31m目录不存在,正在创建...\033[0m"
                   mkdir -p $d
                   printf "\033[4;32;50m创建目录完毕\033[0m"   
                   echo "baseurl=$c://$d" >> /etc/yum.repos.d/$b
fi
mount /dev/cdrom $d &>/1.txt
printf "光盘已挂载成功"

elif [ $c = ftp ];then
                         echo -e "\033[31m你要确保ftp源可以使用呦~\033[0m"
                         read -p 请输入ftp服务器地址 f
                         echo "baseurl=$c://$f" >> /etc/yum.repos.d/$b
elif [ $c = http ];then
                       echo -e "\033[31m你要确保http源可以使用呦~\033[0m"
                       read -p 请输入http服务器地址 e
                       echo "baseurl=$c://$e" >> /etc/yum.repos.d/$b
else 
printf "\033[1;31;40m什么都不选,你还想搭建???\033[0m" 
exit 0             
fi
echo "enable=1" >> /etc/yum.repos.d/$b
echo "gpgcheck=0" >> /etc/yum.repos.d/$b
echo -e "\033[32mYUM源搭建完毕\033[0m"


###########配置DHCP服务器##########
echo -e "\033[34m正在搭建DHCP服务中...\033[0m"
yum -y install dhcp &>/1.txt
read -p 请输入dhcp所分配的网段(例如:192.168.1.0) g
if [ -z $g ]
  then 
    echo "退出脚本"
    break
else 
read -p 请输入网段所属子网掩码 h
echo "subnet $g netmask $h {" >> /etc/dhcp/dhcpd.conf
printf "\033[1;31;40m正在确认dhcp服务器所分配的网段\n\033[0m" 
          read -p "请输入开始网段ip:" i
          read -p "请输入结束网段IP:" j
echo "  range $i $j;" >> /etc/dhcp/dhcpd.conf
          read -p "请输入dns服务器地址:" k
           echo "  option domain-name-servers $k;" >> /etc/dhcp/dhcpd.conf
          read -p "请输入域名(如:www.baidu.com):" l
             if [ -z $l ]
               then
                  echo "  option domain-name \"internal.example.org\";" >> /etc/dhcp/dhcpd.conf
               else
                  echo "  option domain-name \"$l\";" >> /etc/dhcp/dhcpd.conf
             fi
read -p "请输入默认网关:" m 
            echo "  option routers $m;" >> /etc/dhcp/dhcpd.conf
            echo "}" >>/etc/dhcp/dhcpd.conf
fi
echo -e "\033[33m配置完毕,正在启动dhcp服务器\033[0m"
systemctl start dhcpd
if [ $? -eq 0 ]
then 
    printf "\033[1;32;40m启动DHCP服务器成功\n\033[0m" 
else
    printf "\033[1;31;40m启动DHCP服务器失败\n\033[0m" 
fi


###########配置DNS服务器##########
echo -e "\033[34m正在搭建DNS服务中...\033[0m"
yum -y install bind &>>/1.txt
read -p 需要您输入下允许使用DNS服务的网段(例:any,192.168.1.0) q
sed -i "/listen/s/127.0.0.1/$ip/" /etc/named.conf
if [ $q = any ];then
sed -i "/allow/s/localhost/$q/" /etc/named.conf
else 
sed -i "/allow/s/localhost/$q\/24/" /etc/named.conf
fi
echo -e "\033[31m正在建立正向区域\033[0m"
read -p 请您输入下正向区域(例:baidu.com) w
echo "zone \"$w\" IN {" >>/etc/named.rfc1912.zones

read -p 请您确认下当前DNS服务器为主域名服务器吗?(yes/no) r
if [ $r = yes ];then
                       echo "type master;" >>/etc/named.rfc1912.zones
elif [ $r = no ];then
                       echo "type slave;" >>/etc/named.rfc1912.zones
                       read -p 那主域名服务器地址为? t
                       echo "masters { $t; };" >>/etc/named.rfc1912.zones
else
                       echo "type master;" >>/etc/named.rfc1912.zones
                       printf "\033[1;32;40m你竟然不选,那就是主\033[0m" 
fi
read -p 请您设置下正向区域文件的名称(例如:b) y
      echo "file \"$y\";" >>/etc/named.rfc1912.zones
#注意:如果你是从服务器,最好使用如下格式(最终成不成看的是nslookup)
#file "目录(slaves)/同步过来后的正向区域文件名(自己起)";                              你可以去/var/named/查看“slaves目录”并查看是否同步成功(但其实它是你重启named后生成的!)

read -p 请你设置下允许哪个从服务器下载区域文件(例:192.168.1.1,any) u
        echo "allow-update { $u; };">>/etc/named.rfc1912.zones
echo "};" >>/etc/named.rfc1912.zones


echo -e "\033[31m正在建立反向区域\033[0m"
read -p 请您输入下反向区域(例:1.168.192) i
echo "zone \"$i.in-addr.arpa\" IN {" >>/etc/named.rfc1912.zones

read -p 请您确认下当前DNS服务器为主域名服务器吗?(yes/no) o
if [ $o = yes ];then
                       echo "type master;" >>/etc/named.rfc1912.zones
elif [ $o = no ];then
                       echo "type slave;" >>/etc/named.rfc1912.zones
                       echo "masters { $t; };" >>/etc/named.rfc1912.zones
else
                       echo "type master;" >>/etc/named.rfc1912.zones
                       printf "\033[1;32;40m你竟然不选,那就是主\033[0m" 
fi
read -p 请您设置下反向区域文件的名称(例如:d) p
      echo "file \"$p\";" >>/etc/named.rfc1912.zones
#注意:如果你是从服务器,类上↑↑↑


read -p 请你设置下允许哪个从服务器下载区域文件(例:192.168.1.1,any) aa
        echo "allow-update { $aa; };">>/etc/named.rfc1912.zones
echo "};" >>/etc/named.rfc1912.zones

###########编辑正反向区域数据文件
if [ $r != no ];then
cd /var/named/
cp -p named.localhost $y
cp -p named.loopback $p
#如果你是从服务器的话,这一步你就不用看了(从服务器不需要编辑,他是将区域数据文件同步过来的~)
sed -i  '9,10d' $y
sed -i "/NS/s/@/$l./" $y
sed -i "/NS/awww A $ip" $y            #具体的主机名(www)我就不换了,你也累了对吧!!!
sed -i '9,11d' $p
sed -i "/NS/s/@/$l./" $p
bb=$(ifconfig ens33 | grep 'inet ' | awk '{print $2'} | awk -F '.' {'print $4'})
sed -i "/NS/a$bb PTR $l."  $p
fi
echo -e "\033[33m配置完毕,正在启动DNS服务器\033[0m"
systemctl restart named &>>/1.txt
if [ $? -eq 0 ]
then 
    printf "\033[1;32;40m启动DNS服务器成功\n\033[0m" 
else
    printf "\033[1;31;40m启动DNS服务器失败\n\033[0m" 
fi


###########安装Apache服务##########
echo -e "\033[34m正在搭建Apache服务中...\033[0m"
read -p 执行安装apace之前请先将相应的软件包(2.4.25)拉入到当前目录下
rpm -qa | grep httpd
if [ $? -eq 0  ]
then
rpm -e --nodeps httpd
fi
echo "解压安装包"
tar -zxvf httpd-2.4.25.tar.gz -C /usr/src/ >> /tmp/apache.txt
echo "安装前置软件"
yum -y install apr* pcre* &>>/tmp/apache.txt
cd /usr/src/httpd-2.4.25/
echo "配置编译并安装"
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi &>>/tmp/apache.txt
make &>>/tmp/apache.txt
make install &>>/tmp/apache.txt
echo "修改主配置文件"
read -p "请输入域名(例如:www.hws.com):" ym
if [ ! -z $ym ]
then
  sed -i "s/#ServerName www.example.com:80/ServerName $ym:80/"  /usr/local/httpd/conf/httpd.conf
fi
read -p "请输入端口号(默认为80):" dkh
if [ ! -z $dkh ]
then
  sed -i "s/ServerName $ym:80/ServerName $ym:$dkh/"  /usr/local/httpd/conf/httpd.conf
fi
echo "优化启动路径"
ln -s /usr/local/httpd/bin/* /usr/local/bin/ &>> /tmp/apache.txt
echo "复制并编辑"
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd &>> /tmp/apache.txt
sed -i "2a #chkconfig:35 85 21" /etc/init.d/httpd
chkconfig --add httpd
<<COMMAND
echo "[Unit]" >> /lib/systemd/system/httpd.service
echo "Description=The Ahache HTTP Server" >>/lib/systemd/system/httpd.service
echo "After=network.target" >>/lib/systemd/system/httpd.service
echo "" >>/lib/systemd/system/httpd.service
echo "" >>/lib/systemd/system/httpd.service
echo "[Service]" >>/lib/systemd/system/httpd.service
echo "Type=forking" >>/lib/systemd/system/httpd.service
echo "PIDFile=/usr/local/httpd/logs/httpd.pid" >>/lib/systemd/system/httpd.service
echo "ExecStart=/usr/local/bin/apachectl" >>/lib/systemd/system/httpd.service
echo "ExecReload=/bin/kill -HUP" >>/lib/systemd/system/httpd.service
echo "KillMode=process" >>/lib/systemd/system/httpd.service
echo "Restart=on-failure" >>/lib/systemd/system/httpd.service
echo "RestartSec=42s" >>/lib/systemd/system/httpd.service
echo "" >>/lib/systemd/system/httpd.service
echo "" >>/lib/systemd/system/httpd.service
echo "[Install]" >>/lib/systemd/system/httpd.service
echo "WantedBy=graphical.target" >>/lib/systemd/system/httpd.service
echo https://blog.csdn.net/qq_50573146?spm=1000.2115.3001.5113 >>/usr/local/httpd/htdocs/index.html >/usr/local/httpd/htdocs/index.html
COMMAND
sed -i 's/It works!/huaizhe ban/' /usr/local/httpd/htdocs/index.html 
echo "正在启动服务"
systemctl  start  httpd &>/1.txt
if [ $? -eq 0 ]
then 
  printf "\033[1;32;40m启动apache服务成功\n\033[0m" 
else 
  printf "\033[1;31;40m启动apache服务失败\n\033[0m" 
fi

echo -e "\033[33m此脚本到此圆满成功\033[0m"

It doesn’t matter if you don’t play well in the first half of your life.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光落入你灰蒙蒙的眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值