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. 将今天的内容整理为思维导图的形式

扩展内容

无

相关推荐
且从容.2 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道2 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.5 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落7 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨7 小时前
WSL2的安装与使用
linux·wsl
微小的鱼7 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng7 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮8 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky19 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默20 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu