news 2026/1/3 8:46:01

Shell脚本部署——8day

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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. 将今天的内容整理为思维导图的形式

扩展内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/28 6:07:45

IEC 60068-2-64医疗器械宽带随机振动测试标准应用

随着医疗技术的快速发展,医疗器械在各种复杂环境中的可靠性和安全性日益受到重视。IEC 60068-2-64:2019标准为宽带随机振动测试提供了国际化规范,对医疗设备的质量控制具有重要指导意义。医疗器械在其生命周期中会面临多种振动环境。从生产工厂到医院的运…

作者头像 李华
网站建设 2026/1/3 8:14:18

本地AI革命:EmbeddingGemma开启3亿参数级嵌入模型离线应用新纪元

在当今AI驱动的数字生态中,一个颠覆性的技术突破正在悄然改变我们与人工智能交互的方式。EmbeddingGemma——这款仅有3.08亿参数的轻量级开源嵌入模型,正以其惊人的性能重新定义本地AI应用的可能性。想象一下,在你的笔记本电脑、家用台式机&a…

作者头像 李华
网站建设 2025/12/26 6:45:12

Unity学习笔记(十三)碰撞检测

碰撞和触发响应函数 属于特殊的生命周期函数 也是通过反射调用物理碰撞检响应函数接触时触发 自动执行这个函数private void OnCollisionEnter(Collision collision){print(this.name "被" collision.gameObject.name "碰撞");}碰撞到的对象碰撞器的信息…

作者头像 李华
网站建设 2025/12/24 16:25:27

【Agent服务迁移终极指南】:Docker多环境无缝切换的5大核心策略

第一章:Agent服务迁移的背景与挑战 随着企业级系统架构从单体向微服务演进,Agent服务作为数据采集与监控的核心组件,其部署模式和运行环境也面临重大变革。传统的物理机或虚拟机部署方式已难以满足弹性伸缩、快速迭代和统一治理的需求&#x…

作者头像 李华
网站建设 2025/12/20 17:13:49

极微小故障维修实例两例

例一:海鸥老式电风扇一台80年代生产海鸥老式电风扇,通电后不能转动。用手拨动主轴(机主为方便携带,风扇叶片没有带来),感觉主轴转动阻力很大,有卡死现象。停电,给电机主轴轴承加入润…

作者头像 李华