一、准备工作

1. 连接服务器

在阿里云官网先买一个服务器,(注意要先注册自己的账号和认证才可购买,有便宜套餐)https://ecs-buy.aliyun.com/ecs?spm=5176.42028462.0.d_0_0_0.5d64154ahtlT6B#/custom/prepay/cn-hangzhou

2. 更新系统

# CentOS/RHEL
yum update -y

# Ubuntu/Debian
apt update && apt upgrade -y

二、安装Docker

1. 检查是否已安装

docker --version
docker-compose --version

2. 安装Docker(如未安装)

# CentOS/RHEL
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Ubuntu/Debian
apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

3. 启动并验证Docker

systemctl start docker
systemctl enable docker
docker --version
docker run hello-world

三、安装JDK 17

1. 检查是否已安装

java -version

2. 安装JDK 17

# 方式1:使用包管理器(推荐)
# CentOS/RHEL
yum install -y java-17-openjdk java-17-openjdk-devel

# Ubuntu/Debian
apt install -y openjdk-17-jdk

# 方式2:手动下载安装
cd /opt
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
tar -zxvf jdk-17_linux-x64_bin.tar.gz
mv jdk-17* jdk-17

3. 配置环境变量(手动安装需要)

vim /etc/profile

# 添加以下内容
export JAVA_HOME=/opt/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib

# 使配置生效
source /etc/profile

4. 验证安装

java -version
javac -version
echo $JAVA_HOME

四、安装MySQL(使用Docker)

1. 创建MySQL数据目录

mkdir -p /data/mysql/{data,conf,logs}

2. 创建MySQL配置文件

cat > /data/mysql/conf/my.cnf << 'EOF'
[mysqld]
user=mysql
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone='+8:00'
max_connections=1000
max_connect_errors=100

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
EOF

3. 启动MySQL容器

docker run -d \
  --name mysql \
  --restart=always \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=你的密码 \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
  -v /data/mysql/logs:/var/log/mysql \
  mysql:8.0

4. 验证MySQL

docker ps | grep mysql
docker exec -it mysql mysql -uroot -p
# 进入MySQL后执行
SHOW VARIABLES LIKE 'character%';
SELECT VERSION();
exit

5. MySQL导入SQL文件创建数据库(云服务器导入)

5.1 上传SQL文件到服务器

5.2 导入SQL到MySQL

创建数据库后导入

# 1. 先创建数据库
docker exec -i mysql mysql -uroot -pRoot123456 << EOF
CREATE DATABASE IF NOT EXISTS your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EOF

# 2. 导入SQL到指定数据库
docker exec -i mysql mysql -uroot -pRoot123456 your_database < /root/your_database.sql

# 3. 验证导入
docker exec -it mysql mysql -uroot -pRoot123456 -e "USE your_database; SHOW TABLES;"

6.MySql安装失败的场景

6.1 解决MySQL启动失败问题

看截图:

看上面报错图片,这是Docker的iptables网络配置问题:

(1) 先停止并删除失败的容器
docker stop mysql 2>/dev/null
docker rm mysql 2>/dev/null
(2) 重启Docker服务(关键步骤)
systemctl restart docker

# 等待几秒后验证
systemctl status docker
(3) 清理Docker网络
# 查看现有网络
docker network ls

# 删除未使用的网络
docker network prune -f

# 重新加载防火墙规则
systemctl restart firewalld
# 或者如果使用iptables
service iptables restart
(4)重新启动MySQL
docker run -d \
  --name mysql \
  --restart=always \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=你的密码 \
  -e TZ=Asia/Shanghai \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
  -v /data/mysql/logs:/var/log/mysql \
  mysql:8.0
(5) 验证容器启动
# 查看容器状态
docker ps -a | grep mysql

# 查看容器日志
docker logs mysql

# 如果正常应该看到:MySQL init process done. Ready for start up.
6.2 解决系统没有iptables服务

系统没有iptables服务,这是正常的。现代系统使用firewalld或nftables。直接修复Docker配置。

🚀 直接解决方案

(1)配置Docker并重启
# 创建Docker配置
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << 'EOF'
{
  "iptables": true,
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}
EOF

# 重启Docker
systemctl daemon-reload
systemctl restart docker

# 验证Docker状态
systemctl status docker
(2) 直接启动MySQL(简化版,不挂载配置文件)
# 删除旧容器
docker rm -f mysql 2>/dev/null

# 启动MySQL(不使用配置文件挂载,避免路径问题)
docker run -d \
  --name mysql \
  --restart=always \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=Root123456 \
  -e TZ=Asia/Shanghai \
  -v /data/mysql/data:/var/lib/mysql \
  mysql:8.0

# 等待启动
echo "等待MySQL启动..."
sleep 15

# 查看状态
docker ps

# 查看日志
docker logs mysql | tail -30
(3)测试MySQL
# 测试连接
docker exec mysql mysql -uroot -pRoot123456 -e "SELECT VERSION();"

# 如果成功,应该看到MySQL版本号
6.3 navicat连接远程服务器的mysql报错

因为ecs云服服务器未开通mysql 3306端口,因此需要开通mysql远程访问端口才能解决


五、安装Redis(使用Docker)

1. 创建Redis目录

mkdir -p /data/redis/{data,conf}

2. 下载Redis配置文件

wget -O /data/redis/conf/redis.conf http://download.redis.io/redis-stable/redis.conf

# 修改配置
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /data/redis/conf/redis.conf
sed -i 's/protected-mode yes/protected-mode no/g' /data/redis/conf/redis.conf
sed -i 's/# requirepass foobared/requirepass 你的密码/g' /data/redis/conf/redis.conf
sed -i 's/appendonly no/appendonly yes/g' /data/redis/conf/redis.conf

3. 启动Redis容器

docker run -d \
  --name redis \
  --restart=always \
  -p 6379:6379 \
  -v /data/redis/data:/data \
  -v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
  redis:latest redis-server /etc/redis/redis.conf

4. 验证Redis

docker ps | grep redis
docker exec -it redis redis-cli
# 进入Redis后执行
AUTH 你的密码
PING
INFO server
exit

5.验证失败解决方案

 问题分析:Redis容器不断重启

看到问题了!Redis容器状态是 "Restarting (1)" ,说明容器启动失败后在不断重启。


🚨 问题诊断

5.1.查看容器日志(最重要)
# 查看Redis容器的错误日志
docker logs redis

# 查看最后50行日志
docker logs --tail 50 redis

# 实时查看日志
docker logs -f redis

先执行这个命令,把输出内容。


5.2🔧 快速修复方案
# 1. 停止并删除问题容器
docker stop redis 2>/dev/null
docker rm redis 2>/dev/null

# 2. 检查端口是否被占用
netstat -tlnp | grep 6379
# 如果有其他进程占用,先kill掉

# 3. 使用最简配置重新启动(不挂载配置文件)
docker run -d \
  --name redis \
  --restart=always \
  -p 6379:6379 \
  redis:latest

# 4. 等待几秒后检查状态
sleep 5
docker ps | grep redis

# 5. 测试连接
docker exec redis redis-cli ping
5.3最后验证安装成功截图


六、安装Nacos 2(使用Docker)

1. 创建Nacos目录

mkdir -p /data/nacos/{logs,conf}

2. 下载Nacos配置

# 下载自定义配置文件(可选)
cat > /data/nacos/conf/application.properties << 'EOF'
server.port=8848
nacos.core.auth.enabled=true
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
EOF

3. 启动Nacos(单机模式)

docker run -d \
  --name nacos \
  --restart=always \
  -p 8848:8848 \
  -p 9848:9848 \
  -e MODE=standalone \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST=你的MySQL地址 \
  -e MYSQL_SERVICE_PORT=3306 \
  -e MYSQL_SERVICE_DB_NAME=nacos_config \
  -e MYSQL_SERVICE_USER=root \
  -e MYSQL_SERVICE_PASSWORD=你的MySQL密码 \
  -e NACOS_AUTH_ENABLE=true \
  -v /data/nacos/logs:/home/nacos/logs \
  nacos/nacos-server:v2.2.3

4. 初始化Nacos数据库

# 下载Nacos数据库脚本
wget https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql

# 导入数据库
docker exec -i mysql mysql -uroot -p你的密码 << EOF
CREATE DATABASE IF NOT EXISTS nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE nacos_config;
source /tmp/mysql-schema.sql;
EOF

# 或手动导入
docker cp mysql-schema.sql mysql:/tmp/
docker exec -it mysql bash
mysql -uroot -p
CREATE DATABASE nacos_config;
USE nacos_config;
SOURCE /tmp/mysql-schema.sql;
exit

5. 验证Nacos

docker ps | grep nacos
docker logs nacos
# 访问Web界面
# http://你的服务器IP:8848/nacos
# 默认账号密码:nacos/nacos

七、安装MinIO(使用Docker)

1. 创建MinIO目录

mkdir -p /data/minio/{data,config}

2. 启动MinIO容器

docker run -d \
  --name minio \
  --restart=always \
  -p 9000:9000 \
  -p 9001:9001 \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=admin123456 \
  -v /data/minio/data:/data \
  -v /data/minio/config:/root/.minio \
  minio/minio server /data --console-address ":9001"

3. 验证MinIO

docker ps | grep minio
docker logs minio
# 访问Web界面
# http://你的服务器IP:9001
# 使用上面设置的账号密码登录

八、配置安全组规则

在阿里云控制台开放以下端口:

  • 3306: MySQL
  • 6379: Redis
  • 8848: Nacos
  • 9848: Nacos gRPC
  • 9000: MinIO API
  • 9001: MinIO Console
  • 你的应用端口: 如8080

九、验证所有服务

创建验证脚本

cat > /root/check_services.sh << 'EOF'
#!/bin/bash
echo "=== 检查JDK ==="
java -version

echo -e "\n=== 检查Docker ==="
docker --version

echo -e "\n=== 检查运行中的容器 ==="
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

echo -e "\n=== 检查MySQL ==="
docker exec mysql mysql -uroot -p你的密码 -e "SELECT VERSION();" 2>/dev/null && echo "MySQL: OK" || echo "MySQL: FAILED"

echo -e "\n=== 检查Redis ==="
docker exec redis redis-cli -a 你的密码 PING 2>/dev/null && echo "Redis: OK" || echo "Redis: FAILED"

echo -e "\n=== 检查Nacos ==="
curl -s http://localhost:8848/nacos/v1/console/health > /dev/null && echo "Nacos: OK" || echo "Nacos: FAILED"

echo -e "\n=== 检查MinIO ==="
curl -s http://localhost:9000/minio/health/live > /dev/null && echo "MinIO: OK" || echo "MinIO: FAILED"

echo -e "\n=== 端口监听情况 ==="
netstat -tlnp | grep -E '3306|6379|8848|9000|9001'
EOF

chmod +x /root/check_services.sh
./check_services.sh

十、Docker Compose统一管理(推荐)

创建docker-compose.yml

mkdir -p /data/docker-compose
cd /data/docker-compose

cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 你的密码
      TZ: Asia/Shanghai
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
      - /data/mysql/logs:/var/log/mysql
    networks:
      - backend

  redis:
    image: redis:latest
    container_name: redis
    restart: always
    ports:
      - "6379:6379"
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /data/redis/data:/data
      - /data/redis/conf/redis.conf:/etc/redis/redis.conf
    networks:
      - backend

  nacos:
    image: nacos/nacos-server:v2.2.3
    container_name: nacos
    restart: always
    ports:
      - "8848:8848"
      - "9848:9848"
    environment:
      MODE: standalone
      SPRING_DATASOURCE_PLATFORM: mysql
      MYSQL_SERVICE_HOST: mysql
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_DB_NAME: nacos_config
      MYSQL_SERVICE_USER: root
      MYSQL_SERVICE_PASSWORD: 你的密码
      NACOS_AUTH_ENABLE: true
    volumes:
      - /data/nacos/logs:/home/nacos/logs
    depends_on:
      - mysql
    networks:
      - backend

  minio:
    image: minio/minio
    container_name: minio
    restart: always
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: admin123456
    command: server /data --console-address ":9001"
    volumes:
      - /data/minio/data:/data
      - /data/minio/config:/root/.minio
    networks:
      - backend

networks:
  backend:
    driver: bridge
EOF

启动所有服务

docker-compose up -d
docker-compose ps
docker-compose logs -f

十一、常用运维命令

# 查看所有容器
docker ps -a

# 查看容器日志
docker logs -f 容器名

# 重启容器
docker restart 容器名

# 停止容器
docker stop 容器名

# 进入容器
docker exec -it 容器名 bash

# 查看容器资源使用
docker stats

# 备份数据
tar -czf backup-$(date +%Y%m%d).tar.gz /data/

十二、防火墙配置

# CentOS/RHEL
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --permanent --add-port=8848/tcp
firewall-cmd --permanent --add-port=9848/tcp
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=9001/tcp
firewall-cmd --reload

# Ubuntu/Debian
ufw allow 3306/tcp
ufw allow 6379/tcp
ufw allow 8848/tcp
ufw allow 9848/tcp
ufw allow 9000/tcp
ufw allow 9001/tcp
ufw reload

完成!✅

所有服务已部署完成,访问地址:

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐