Shell脚本部署——8day

Shell脚本部署

课程目标

  1. 掌握shell脚本的思路

  2. 完成shell脚本的编写

课程实验

  1. shell脚本的思路

  2. shell脚本的编写

课堂引入

部署项目中,有很多都是固定的模式与内容,所有的东西都需要人工去操作的话,成本就比较高,也比较麻烦,能不能通过脚本自动取执行呢?

授课进程

一、脚本部署思路
1、概述

shell脚本自动化部署旨在完成一个固定程式化的东西,解放劳动力。

2、思路
  • 防火墙

  • 主机名

  • yum源

  • 安装MySQL

  • 安装apache

  • 安装PHP

  • 配置

  • 启动项目

二、脚本实现
1、防火墙
复制代码
    #!/bin/bash
​
    # 防火墙相关设置
    systemctl status firewalld | grep -w "dead" &> /dev/null
    if [ $? -eq 0 ];then
        echo "防火墙已经关闭,不需要进行处理"
    else
        echo "防火墙处理中..."
        systemctl stop firewalld &> /dev/null
        systemctl disable firewalld &> /dev/null
    fi
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    echo "关闭防火墙成功"
2、主机名
复制代码
# 设置主机名
if [ $# -eq 0 ];then
        hostnamectl set-hostname server.com &>/dev/null
    else
        hostnamectl set-hostname $1 &>/dev/null
fi
echo "设置主机名成功"
3、yum源
复制代码
# 配置yum源
# 看网络是否可以ping通
ping -c1 www.baidu.com &> /dev/null
if [ ! $? -eq 0 ];then
    echo "网络不通,请先确认网路是否通畅,退出脚本"
    exit
fi
# 先通过yum安装wget
yum install wget -y &> /dev/null
# 备份之前的镜像源
cd /etc/yum.repos.d/
tar -zcvf repo.tar.gz *.repo
rm -rf *.repo
# 配置阿里镜像源
wget -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.rep
yum clean all
yum makecache
# 安装扩展镜像源
yum install epel-release -y
复制代码
#!/bin/bash
# 防火墙相关设置
systemctl stop firewalld &>/dev/null
systemctl disable firewalld &>/dev/null
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
echo "关闭防火墙成功"
# 设置主机名
if [ $# -eq 0 ];then
        hostnamectl set-hostname server.com &>/dev/null
    else
        hostnamectl set-hostname $1 &>/dev/null
fi
echo "设置主机名成功"
# 配置yum源
# 看网络是否可以ping通
ping -c1 www.baidu.com &>/dev/null
if [ ! $? -eq 0 ];then
    echo "网络不通,请先确认网路是否通畅,退出脚本"
    exit
fi
# 先通过yum安装wget
yum install wget -y &>/dev/null
# 备份之前的镜像源
cd /etc/yum.repos.d/
tar -zcvf repo.tar.gz *.repo &>/dev/null
rm -rf *.repo
# 配置阿里镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null
yum clean all &>/dev/null
yum makecache &>/dev/null
# 安装扩展镜像源
yum install epel-release -y &>/dev/null
echo "yum源配置成功"
4、安装MySQL
复制代码
# 安装MySQL
# 1. 检查MySQL源码包是否已经上传
# 2. 检查并创建用户
# 3. 解压缩软件并进入MySQL目录
# 4. 源码配置,安装必要的依赖
# 5. 执行配置选项
# 6. 编译并安装
# 7. 更改数据目录权限
# 8. 初始化数据库
# 9. 拷贝启动脚本
# 10. 启动数据库
# 11. 设置密码
复制代码
# 安装MySQL
# 1. 检查MySQL源码包是否已经上传
if [ ! -e /root/mysql-5.6.31.tar.gz ];then
    echo "MySQL安装包不存在,请检查是否上传MySQL安装包"
    exit
fi
# 2. 检查并创建用户
grep -w 'mysql' /etc/passwd
if [ ! $? -eq 0 ];then
    echo "不存在mysql用户,创建mysql系统用户"
    useradd -r -s /sbin/nologin mysql
fi
# 3. 解压缩软件并进入MySQL目录
tar -zxvf mysql-5.6.31.tar.gz 
cd mysql-5.6.31    
# 4. 源码配置,安装必要的依赖
echo "正在安装必要的一些依赖....."
yum install gcc-c++ -y
yum install cmake -y
yum -y install ncurses-devel
yum -y install autoconf
# 5. 执行配置选项
echo "正在配置MySQL....."
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql 
# 6. 编译并安装
echo "正在编译安装MySQL....."
make && make install 
# 7. 更改数据目录权限
chown -R mysql.mysql /usr/local/mysql/
# 8. 初始化数据库
rm -f /etc/my.cnf
cd /usr/local/mysql/
./scripts/mysql_install_db --user=mysql
# 9. 拷贝启动脚本
cp support-files/mysql.server /etc/init.d/mysql
# 10. 启动数据库
service mysql starat
# 11. 设置密码
/usr/local/mysql/bin/mysqladmin -u root password '123456'
# 12. 配置环境变量
echo 'export PATH=/usr/local/mysql/bin/:$PATH' /etc/profile
source /etc/profile

课堂小结

  1. shell脚本的思路

  2. shell脚本的编写

课后作业

  1. 课堂的案例及练习

  2. 将今天的内容整理为思维导图的形式

扩展内容

相关推荐
物理与数学16 小时前
linux 内存分布
linux·linux内核
东城绝神16 小时前
《Linux运维总结:基于ARM64+X86_64架构使用docker-compose一键离线部署MySQL8.0.43 NDB Cluster容器版集群》
linux·运维·mysql·架构·高可用·ndb cluster
creator_Li17 小时前
即时通讯项目--(1)环境搭建
linux·运维·ubuntu
Mr'liu18 小时前
MongoDB 7.0 副本集高可用部署
linux·mongodb
文静小土豆18 小时前
Rocky Linux 二进制 安装K8S-1.35.0高可用集群
linux·运维·kubernetes
暮云星影19 小时前
二、linux系统 应用开发:整体Pipeline流程
linux·arm开发
weixin_4307509320 小时前
OpenMediaVault debian Linux安装配置企业私有网盘(三) 静态ip地址配置
linux·服务器·debian·nas·网络存储系统
4032407320 小时前
[Jetson/Ubuntu 22.04] 解决挂载 exFAT 硬盘报错 “unknown filesystem type“ 及只读权限问题的终极指南
linux·运维·ubuntu
Source.Liu20 小时前
【沟通协作软件】使用 Rufus 制作 Ubuntu 启动盘的详细过程
linux·ubuntu
Love丶伊卡洛斯20 小时前
Ubuntu 部署 STUN服务端
linux·运维·ubuntu