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

扩展内容

相关推荐
秋风不问归客3 分钟前
linux 网络相关命令 及常用场景
linux·服务器·网络
牛奶咖啡139 分钟前
Linux文件快照备份工具rsnapshot的实践教程
linux·服务器·文件备份·文件快照备份·rsnapshot·定时备份本地或远程文件·查看指定命令的完整路径
大模型铲屎官11 分钟前
【操作系统-Day 47】揭秘Linux文件系统基石:图解索引分配(inode)与多级索引
linux·运维·服务器·人工智能·python·操作系统·计算机组成原理
拾光Ծ22 分钟前
Linux 进程控制:进程终止与等待・waitpid 选项参数与状态解析(告别僵尸进程)
linux·运维·服务器·进程控制
linux修理工28 分钟前
ubuntu 2204 tsinghua
linux·运维·ubuntu
琥珀.29 分钟前
查看linux下java服务进程是否正常
java·linux·运维
oMcLin30 分钟前
Ubuntu 22.04 无法安装依赖包:解决 apt‑get 错误“Could not resolve”
linux·运维·ubuntu
QyynerBoomer33 分钟前
Linux进程创建详解
linux·运维·服务器
航Hang*36 分钟前
第1章:初识Linux系统——第12节:总复习①
linux·笔记·学习·考试复习
Damon小智38 分钟前
Windows系统安装Docker容器搭建Linux环境
linux·运维·windows·docker·子系统