当前位置: 首页 > article >正文

脚本一键式启动Nginx、Mysql、Redis

此脚本包含拉取镜像、数据卷挂载、容器启动三大部分,可一键式安装三大环境

新建一个depoy.sh文件在服务器上,然后复制以下内容。

给脚本文件添加执行权限

chmod +x depoy.sh # 文件的当前目录下

如果需要修改数据库MYSQL密码和Reids密码  

MYSQL_ROOT_PASSWORD="1459Hyh."
requirepass 1459Hyh.
#!/bin/bash# 1️⃣ 检查是否安装 Docker & Docker Compose
echo "📌 检查 Docker 是否已安装..."
if ! command -v docker &> /dev/null; thenecho "❌ Docker 未安装,正在安装..."sudo apt update && sudo apt install -y docker.iosudo systemctl start docker && sudo systemctl enable docker
elseecho "✅ Docker 已安装"
fi# 设置 MySQL 相关参数
MYSQL_VERSION="8.0"
MYSQL_CONTAINER_NAME="mysql"
MYSQL_ROOT_PASSWORD="1459Hyh."
MYSQL_PORT=3306
MYSQL_DATA_DIR="/temp/mysql/data"
MYSQL_CONF_DIR="/temp/mysql/conf"
MYSQL_CONF_FILE="$MYSQL_CONF_DIR/my.cnf"# 设置 Redis 相关参数
REDIS_VERSION="7"
REDIS_CONTAINER_NAME="redis"
REDIS_PORT=6379
REDIS_DATA_DIR="/temp/redis/data"
REDIS_CONF_DIR="/temp/redis/conf"
REDIS_CONF_FILE="$REDIS_CONF_DIR/redis.conf"# 设置 Nginx 相关参数
NGINX_VERSION="latest"
NGINX_CONTAINER_NAME="nginx"
NGINX_PORT=80
NGINX_CONF_DIR="/temp/nginx/conf"
NGINX_LOG_DIR="/temp/nginx/logs"
NGINX_HTML_DIR="/temp/nginx/html"
NGINX_CONF_FILE="$NGINX_CONF_DIR/default.conf"# 创建目录
echo "Creating directories..."
mkdir -p $MYSQL_DATA_DIR $MYSQL_CONF_DIR
mkdir -p $REDIS_DATA_DIR $REDIS_CONF_DIR
mkdir -p $NGINX_CONF_DIR $NGINX_LOG_DIR $NGINX_HTML_DIR# 生成 MySQL 配置文件
echo "Generating MySQL configuration..."
cat > $MYSQL_CONF_FILE <<EOF
[mysqld]
bind-address = 0.0.0.0
default_authentication_plugin = mysql_native_password
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
EOF# 生成 Redis 配置文件
echo "Generating Redis configuration..."
cat > $REDIS_CONF_FILE <<EOF
bind 0.0.0.0
protected-mode no
requirepass 1459Hyh.
appendonly yes
EOF# 生成 Nginx 配置文件
echo "Generating Nginx configuration..."
cat > $NGINX_CONF_FILE <<EOF
server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm;}access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;
}
EOF# 移除已有容器
echo "Removing existing containers if they exist..."
docker stop $MYSQL_CONTAINER_NAME $REDIS_CONTAINER_NAME $NGINX_CONTAINER_NAME >/dev/null 2>&1
docker rm $MYSQL_CONTAINER_NAME $REDIS_CONTAINER_NAME $NGINX_CONTAINER_NAME >/dev/null 2>&1# 拉取镜像
echo "Pulling Docker images..."
docker pull mysql:$MYSQL_VERSION
docker pull redis:$REDIS_VERSION
docker pull nginx:$NGINX_VERSION# 启动 MySQL
echo "Starting MySQL..."
docker run -d \--name $MYSQL_CONTAINER_NAME \-p $MYSQL_PORT:3306 \-v $MYSQL_DATA_DIR:/var/lib/mysql \-v $MYSQL_CONF_FILE:/etc/mysql/my.cnf \-e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \--restart=always \mysql:$MYSQL_VERSION# 启动 Redis
echo "Starting Redis..."
docker run -d \--name $REDIS_CONTAINER_NAME \-p $REDIS_PORT:6379 \-v $REDIS_DATA_DIR:/data \-v $REDIS_CONF_FILE:/etc/redis/redis.conf \--restart=always \redis:$REDIS_VERSION \redis-server /etc/redis/redis.conf# 启动 Nginx
echo "Starting Nginx..."
docker run -d \--name $NGINX_CONTAINER_NAME \-p $NGINX_PORT:80 \-v $NGINX_CONF_FILE:/etc/nginx/conf.d/default.conf \-v $NGINX_LOG_DIR:/var/log/nginx \-v $NGINX_HTML_DIR:/usr/share/nginx/html \--restart=always \nginx:$NGINX_VERSIONecho "All services started successfully!"

相关文章:

脚本一键式启动Nginx、Mysql、Redis

此脚本包含拉取镜像、数据卷挂载、容器启动三大部分&#xff0c;可一键式安装三大环境 新建一个depoy.sh文件在服务器上&#xff0c;然后复制以下内容。 给脚本文件添加执行权限 chmod x depoy.sh # 文件的当前目录下 如果需要修改数据库MYSQL密码和Reids密码 MYSQL_ROO…...

路径问题(greedy):地下城游戏

题目描述&#xff1a; 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健…...

LS-NET-008-OSPF、BGP、RIP三大路由协议

LS-NET-008-OSPF、BGP、RIP三大路由协议 从网络层级、协议特性和厂商实现三个维度对比OSPF、BGP、RIP三大路由协议&#xff1a; 一、网络协议分层架构对比 graph TD L7[应用层] --> BGP(TCP/179) L7 --> RIP(UDP/520) L4[网络层] --> OSPF(IP协议号89) L4 -->|报…...

electron框架(3.0)主程序与桥梁与渲染,以及之间的通信

每个页面程序通过渲染和主进程通信&#xff0c;主进程根据需求调用Native Api来实现功能。 实际&#xff0c;每个页面和主程序通信时&#xff0c;需要建个桥梁来管理它们的通信&#xff0c;preload.js(自己创建)&#xff0c;来管理实现通信。 ----创建preload.js定义桥梁js&a…...

python写入excel多个sheet表 以及追加sheet表

python写入excel多个sheet表 以及追加sheet表 写入多个sheet表在excel追加sheet表 可将不同DataFrame分别写入指定Sheet&#xff08;如初始写入"箱_4"和"箱_2"&#xff09;&#xff0c;并通过封装函数append_to_excel支持动态追加新Sheet到现有文件&#x…...

【大模型微调】使用Llama Factory实现中文llama3微调

【大模型微调】使用Llama Factory实现中文llama3微调 github链接 为什么不用基座模型&#xff1a;95%用的英文数据训练&#xff0c;训练效果不好 所以用的Llama3-99-Chinese-Chat(别人微调过的再微调)...

群体智能优化算法-牛顿-拉夫逊优化算法(Newton-Raphson-Based Optimizer, NRBO,含Matlab源代码)

摘要&#xff08;Abstract&#xff09; 牛顿-拉夫逊优化算法&#xff08;Newton-Raphson-Based Optimizer, NRBO&#xff09;是一种新型群体智能优化算法&#xff0c;受牛顿-拉夫逊方法求解非线性方程的启发。NRBO 结合牛顿-拉夫逊搜索规则&#xff08;Newton-Raphson Search …...

JS—原型与原型链:2分钟掌握原型链

个人博客&#xff1a;haichenyi.com。感谢关注 一. 目录 一–目录二–原型三–原型链 二. 原型 什么是原型&#xff1f; 每个JavaScript对象都有一个原型&#xff0c;这个原型也是一个对象。比方说 function Person(name) {this.name name; } let person new Person(&quo…...

Canal 解析与 Spring Boot 整合实战

一、Canal 简介 1.1 Canal 是什么&#xff1f; Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析&#xff08;Binlog&#xff09;中间件&#xff0c;它模拟 MySQL 的从机&#xff08;Slave&#xff09;行为&#xff0c;监听 MySQL 主机的二进制日志&#xff08;Binl…...

「数据会说话」:让AI成为你的数据分析魔法师 ✨

文章目录 「数据会说话」&#xff1a;让AI成为你的数据分析魔法师 ✨1. 核心技术 &#x1f6e0;️1.1 LIDA智能可视化引擎1.1.1 核心优势1.1.2 核心功能 1.2 前端交互框架 2. 系统架构设计 &#x1f3d7;️2.1 功能模块组成2.2 用户隔离与数据安全 &#x1f512;2.2.1 用户身份…...

图论——Prim算法

53. 寻宝(第七期模拟笔试) 题目描述 在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。 不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通…...

2025年汽车加气站操作工考试精选题库

汽车加气站操作工题库中题目及答案&#xff1a; 单项选择题 1、按压力容器的设计压力分为&#xff08; &#xff09;个压力等级。 A. 3 B. 4 C. 5 答案&#xff1a;B 2、缓冲罐的安装位置在天然气压缩机&#xff08; &#xff09;。 A. 前 B. 后 C. 中间 答案&#…...

1. 初识golang微服务-gRPC

单体架构 在这里插入图片描述 微服务架构 RPC架构&#xff08;远程过程调用&#xff09; 服务端实例代码&#xff1a; package mainimport ("fmt""net""net/rpc""time" )type Hello struct { }func (h Hello) SayHello(req stri…...

C++20 指定初始化器

指定初始化器 对于聚合&#xff0c;C20 提供了一种方法来指定应该用传递的初始值初始化哪个成员&#xff0c;但只能使用它 来跳过参数。 假设有以下聚合类型: struct Value {double amount{0};int precision{2};std::string unit{"Dollar";}; }; 那么&#x…...

【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式

【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式 工厂模式主要特点类型适用场景抽象工厂模式主要特点工作原理适用场景举例优点缺点总结单例模式主要特点工作原理适用场景优点缺点总结建造者模式主要特点工作原理适用场景优点…...

视频翻译器免费哪个好?轻松玩转视频直播翻译

你是不是觉得看外语视频很麻烦&#xff1f;每次遇到喜欢的外语电影、电视剧或动漫&#xff0c;总是要等字幕组的翻译&#xff0c;或者因为语言不通而错过精彩的情节。 这个时候&#xff0c;掌握多语种直播翻译方案就显得尤为重要&#xff0c;有了实时字幕&#xff0c;看外语视…...

mysql 数据库异常排查

1、简单查询语句无法执行 线上问题记录&#xff0c;有个删除语句走不了索引导致锁表&#xff0c;其他所有引用该表的操作需要等待删除成功后才能执行&#xff0c;导致服务不可用 排查思路&#xff0c;先看是否有长时间未提交的事务 SELECT * FROM information_schema.INNOD…...

Python列表1

# coding:utf-8 print("———————————— 列表 ——————————————")列表 是指一系列按照特定顺序排列的元素组成 是Python中内置的可变序列 使用[]定义列表&#xff0c;元素与元素之间使用英文的逗号分隔 列表中的元素可以是任意的数据类型列表的…...

如何在前端发版时实现向客户端推送版本更新消息

前端打包发版后如何用户一个更新提示,该提示会让用户主动去更新当前正在操作的页面,或者在系统有较大更新时,让用户重新更新本地缓存信息,这一操作比较友好,且能避免用户不更新当前系统,导致某些接口依赖更新后的数据而导致接口请求失败报错。 1、后端更新提示 有些情况…...

Redis系列:深入理解缓存穿透、缓存击穿、缓存雪崩及其解决方案

在使用Redis作为缓存系统时&#xff0c;我们经常会遇到“缓存穿透”、“缓存击穿”和“缓存雪崩”等问题&#xff0c;这些问题一旦出现&#xff0c;会严重影响应用性能甚至造成服务不可用。因此&#xff0c;理解这些问题的产生原因和解决方案非常重要。 本文将全面讲解缓存穿透…...

3.19学习总结

学习了Java中的面向对象的知识点 完成一道算法题&#xff0c;找树左下角的值&#xff0c;错误的以为左下角只能是最底层的左节点&#xff0c;但指的是最底层最左边的节点...

服务创造未来 东隆科技携多款产品亮相慕尼黑

慕尼黑上海光博会依托于德国慕尼黑博览集团&#xff0c;自2006年首次举办以来&#xff0c;始终坚持将国内外先进的光电技术成果展示给观众&#xff0c;深度链接亚洲乃至全球的激光、光学、光电行业的优质企业及买家。如今已经成为了国内外专业观众信赖的亚洲激光、光学、光电行…...

AI 时代,学习 Java 应如何入手?

一、Java 的现状&#xff1a;生态繁荣与 AI 融合的双重机遇 在 2025 年的技术版图中&#xff0c;Java 依然稳坐企业级开发的 “头把交椅”。根据行业统计&#xff0c;Java 在全球企业级应用中的市场份额仍超过 65%&#xff0c;尤其在微服务架构、大数据平台和物联网&#xff0…...

LiteratureReading:[2016] Enriching Word Vectors with Subword Information

文章目录 一、文献简明&#xff08;zero&#xff09;二、快速预览&#xff08;first&#xff09;1、标题分析2、作者介绍3、引用数4、摘要分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;分析 5、总结分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;…...

JavaScript 实现导出内容自动居中:从原理到实践

引言 在前端开发中&#xff0c;我们经常会遇到需要将页面上的内容导出为文件&#xff08;如 PDF、Excel 等&#xff09;的需求。而在导出的内容中&#xff0c;让元素自动居中显示可以提升内容的美观度和专业性。本文将围绕 JavaScript 实现导出内容自动居中展开&#xff0c;详…...

Docker 速通(总结)

Docker 命令 镜像 docker build: 从 Dockerfile 构建镜像。docker pull: 从 Docker Hub 或其他注册表拉取镜像。docker push: 将镜像推送到 Docker Hub 或其他注册表。docker images: 列出本地镜像。docker rmi: 删除本地镜像。 容器 docker run: 创建并启动一个新的容器。…...

人工智能之数学基础:矩阵的降维

本文重点 在现实世界中,我们经常会遇到高维数据。例如,图像数据通常具有很高的维度,每个像素点都可以看作是一个维度。高维数据不仅会带来计算和存储上的困难,还可能会导致 “维数灾难”,即随着维度的增加,数据的稀疏性和噪声也会增加,从而影响数据分析的效果。因此,我…...

Object 转 JSONObject 并排除null和““字符串

public static JSONObject objToJSONObject(Object obj) throws Exception{//创建一个 HashMap 对象 map&#xff0c;用于存储对象的属性名和属性值。//key 是属性名&#xff08;String 类型&#xff09;&#xff0c;value 是属性值&#xff08;Object 类型&#xff09;Map<…...

mysql5.7主从部署(docker-compose版本)

mysql5.7主从部署&#xff08;docker-compose版本&#xff09; 1:docker-compose-test.yml 文件信息 version: 3services:# MySQL 数据库mysql-master:image: mysql:5.7container_name: mysql-masterenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: nacosports:- 23…...

Java+Html实现前后端客服聊天

文章目录 核心组件网络通信层事件调度层服务编排层 Spring实现客服聊天技术方案对比WebScoket建立连接用户上线实现指定用户私聊群聊离线 SpringBootWebSocketHtmljQuery实现客服聊天1. 目录结构2. 配置类3. 实体类、service、controller4. ChatWebSocketHandler消息处理5.前端…...