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

脚本一键式启动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; then
    echo "❌ Docker 未安装,正在安装..."
    sudo apt update && sudo apt install -y docker.io
    sudo systemctl start docker && sudo systemctl enable docker
else
    echo "✅ 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_VERSION

echo "All services started successfully!"

相关文章:

  • C语言每日一练——day_11
  • 性能测试之grafana展示jmeter测试指标与主机监控
  • DApp用户激励机制设计:从代币经济到行为心理学的深度解构
  • Oracle常见系统函数
  • C# 中泛型(Generics)‌的核心概念
  • C# 事件(Event)核心概念
  • JVM的垃圾回收器都有哪些?
  • 尚硅谷爬虫(解析_xpath的基本使用)笔记
  • 《算法笔记》9.2小节——数据结构专题(2)->二叉树的遍历 问题 A: 复原二叉树(同问题 C: 二叉树遍历)
  • 小程序电子画册制作,用户体验为王!
  • 【多线程】线程不安全问题
  • 每日学习Java之一万个为什么(待补充)
  • Web Component 教程(四):如何优雅的使用 template 模块
  • springboot集成xxl-job
  • 使用 libmodbus 实现 Modbus 通信
  • linux 出现网卡 down 没起来 怎么办 ? 已解决
  • C/C++编程:Openssl使用 Windows安装包32和64位 RSA加密/解密、AES-GCM加密/解密以及ECDSA签名/验证示例
  • C/C++蓝桥杯算法真题打卡(Day8)
  • 虚幻基础:组件组件通信
  • 一次http请求需要经过哪些步骤?
  • 航海王亚洲巡展、工厂店直销……上海多区推出“五五购物节”活动
  • 看见“看得见的手”,看见住房与土地——读《央地之间》
  • IMF前副总裁朱民捐赠1000万元,在复旦设立青云学子基金
  • 习近平在上海考察
  • 【社论】人工智能,年轻的事业
  • 五一假期如何躺赚利息?来看国债逆回购操作攻略