跳至主要內容

服务器部署

TenSoFlow...大约 23 分钟部署服务器部署

服务器部署

首先在Linux服务器上创建一个项目部署根目录

MySQL安装

# Docker Compose 文件版本
# 3.8 版本功能完善且兼容性好,支持大多数 Docker 版本
version: '3.8'

# 服务定义
services:

  # MySQL 服务
  mysql:
    # 使用 MySQL 8.0 官方镜像
    image: mysql:8.0
    
    # 容器名称(方便管理和识别)
    container_name: mysql8.0
    
    # 重启策略
    # - no: 不自动重启(默认)
    # - always: 总是自动重启
    # - on-failure: 仅在异常退出时重启
    # - unless-stopped: 除非手动停止,否则自动重启
    restart: always
    
    # 环境变量
    environment:
      # root用户密码(生产环境建议使用强密码)
      MYSQL_ROOT_PASSWORD: root
      # 容器启动时自动创建的数据库
      # MYSQL_DATABASE: auto-report
      # 时区设置(东八区)
      TZ: Asia/Shanghai
    
    # 端口映射
    # 格式: "宿主机端口:容器端口"
    ports:
      # 宿主机 13306 端口 -> 容器 3306 端口
      # 外部访问: mysql -h 127.0.0.1 -P 13306 -uroot -proot
      - "13306:3306"
    
    # 数据卷挂载 格式: 宿主机路径:容器路径
    volumes:
      # 数据持久化(存储数据库文件)
      # 容器删除后数据依然保留
      - ./mysql-data:/var/lib/mysql
      
      # 初始化脚本目录
      # 首次启动时自动执行该目录下的 .sql/.sh 文件
      # 仅在数据目录为空时执行一次
      - ./mysql-init:/docker-entrypoint-initdb.d
      
      # 自定义配置文件目录
      # 在此目录放置 my.cnf 文件覆盖默认配置
      - ./conf:/etc/mysql/conf.d
      
      # 日志目录(慢查询日志、错误日志等)
      - ./mysql-logs:/var/log/mysql
    
    # 启动命令参数
    command:
      # 使用传统密码验证方式
      # MySQL 8.0 默认 caching_sha2_password,部分客户端不兼容
      - --default-authentication-plugin=mysql_native_password
    
    # 定期检测容器内服务是否正常运行
    healthcheck:
      # 检测命令
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot"]
      # 检查间隔
      interval: 10s
      # 超时时间
      timeout: 5s
      # 失败重试次数
      retries: 3
      # 启动等待时间(给 MySQL 足够的启动时间)
      start_period: 30s

# 数据卷定义
volumes:
  # MySQL 数据卷
  mysql-data:
    driver: local
  
  # 日志数据卷
  mysql-logs:
    driver: local

以上三个文件都创建好之后,在mysql目录下执行下方代码

# 授权
chmod +x mysql-deploy.sh

# 执行
./mysql-deploy.sh

Redis安装

# Docker Compose 文件 - Redis 配置

# 定义服务列表
services:
  # 服务名称
  redis:
    # 使用的 Docker 镜像
    image: redis:7.4
    # 容器名称,启动后的容器会叫这个名字
    container_name: redis7.4
    # 容器重启策略
    # always: 无论容器因何种原因停止,都会自动重启
    restart: always
    # 环境变量配置
    environment:
      # 设置容器时区为上海时区(东八区)
      TZ: Asia/Shanghai
    
    # 端口映射配置
    # 格式: "宿主机端口:容器端口"
    ports:
      - "16379:6379"
      # - 宿主机端口: 16379
      # - 容器端口: 6379
      # - 外部需要通过 localhost:16379 来访问 Redis
      # - 容器内部 Redis 仍然运行在 6379 端口
    
    # 数据卷挂载配置
    volumes:
      # 持久化数据存储
      # redis-data 是命名卷,存储 Redis 的 RDB/AOF 持久化文件
      # 即使容器删除,数据也不会丢失
      - ./redis-data:/data
      
      # 自定义配置文件
      # 宿主机的 ./conf/redis.conf 映射到容器的 /etc/redis/redis.conf
      - ./conf/redis.conf:/etc/redis/redis.conf
    
    # Redis 启动命令
    # 使用自定义配置文件启动 Redis
    command: redis-server /etc/redis/redis.conf
    
    # 健康检查配置
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "A9@mK2", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 10s

# 定义数据卷
volumes:
  # 命名数据卷,用于持久化 Redis 数据
  redis-data:
    # 使用本地存储驱动
    # 数据实际存储在 Docker 的数据目录中
    driver: local

以上三个文件都创建好之后,在redis目录下执行下方代码

# 授权
chmod +x redis-deploy.sh

# 执行
./redis-deploy.sh

Nginx安装

# Docker Compose 文件版本
version: '3.8'

# ============================================================
# 服务定义
# ============================================================
services:
  
  # ----------------------------------------------------------
  # Nginx 服务
  # ----------------------------------------------------------
  nginx:
    # 使用 Nginx 官方稳定版镜像
    image: nginx:1.24
    
    # 容器名称
    container_name: nginx1.24
    
    # 重启策略
    # - no: 不自动重启(默认)
    # - always: 总是自动重启
    # - on-failure: 仅在异常退出时重启
    # - unless-stopped: 除非手动停止,否则自动重启
    restart: always
    
    # ----------------------------------------------------------
    # 环境变量
    # ----------------------------------------------------------
    environment:
      TZ: Asia/Shanghai
    
    # 容器内访问宿主机
    extra_hosts:
      - "host.docker.internal:host-gateway"
    
    # ----------------------------------------------------------
    # 端口映射
    # 格式: "宿主机端口:容器内端口"
    # ----------------------------------------------------------
    ports:
      # ========== 项目端口配置 ==========
      # 项目1: notify(前端 7777)
      #- "7777:7777"
      # 项目2: xxx(前端 80)
      - "80:80"
    
    # ----------------------------------------------------------
    # 数据卷挂载
    # ----------------------------------------------------------
    volumes:
      # Nginx 配置目录
      - ./conf.d:/etc/nginx/conf.d:ro
      
      # ========== 项目前端目录 ==========
      # 项目1: notify
      - ./html-notify:/usr/share/nginx/html-notify:ro
      # 项目2: xxx
      # - ./html-project2:/usr/share/nginx/html-project2:ro
      
      # 日志目录
      - ./logs:/var/log/nginx
    
    # ----------------------------------------------------------
    # 健康检查
    # ----------------------------------------------------------
    healthcheck:
      test: ["CMD-SHELL", "nginx -t || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

# ============================================================
# 数据卷定义
# ============================================================
volumes:
  nginx-logs:
    driver: local

以上三个文件都创建好之后,在redis目录下执行下方代码

# 授权
chmod +x nginx-deploy.sh

# 执行
./nginx-deploy.sh

JDK安装

# 下载 Java8 rpm 包
wget https://corretto.aws/downloads/latest/amazon-corretto-8-x64-linux-jdk.rpm

# 安装
rpm -ivh amazon-corretto-8-x64-linux-jdk.rpm

# 检查是否安装成功
rpm -qa | grep corretto

# 查看安装目录
ls /usr/lib/jvm/ | grep corretto

# 切换系统默认 Java 版本(选择 corretto8 对应的编号)
alternatives --config java

# 验证 Java 版本
java -version
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8