Shell脚本部署
课程目标
-
掌握shell脚本的思路
-
完成shell脚本的编写
课程实验
-
shell脚本的思路
-
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
课堂小结
-
shell脚本的思路
-
shell脚本的编写
课后作业
-
课堂的案例及练习
-
将今天的内容整理为思维导图的形式
扩展内容
无