服务器基础设施初始化¶
适用于所有环境(staging / beta / prod)。每台新服务器首次部署前执行一次。
环境清单¶
| 环境 | 公网 IP | 内网 IP | 规格 | 用途 |
|---|---|---|---|---|
| beta | 81.70.101.232 | - | 4C 7.4G 50G | 开发联调、功能验证 |
| staging | 152.136.19.33 | 172.21.19.12 | 2C 7.4G 50G | 准上线验证、回归测试 |
| prod | 待定 | 待定 | 待定 | 生产环境 |
1. 安装 Docker¶
# TencentOS 4 / CentOS Stream 9
dnf install -y dnf-plugins-core
# 添加 Docker 仓库(TencentOS 4 需用 CentOS 9 仓库)
cat > /etc/yum.repos.d/docker-ce.repo << 'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/9/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
EOF
# 安装(若 GPG key 下载失败可加 --nogpgcheck)
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
配置日志轮转¶
cat > /etc/docker/daemon.json << 'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
EOF
启动并设为自启¶
2. 安装 Nginx¶
3. 配置防火墙¶
# 安装 firewalld(部分系统未预装)
dnf install -y firewalld
systemctl enable firewalld
systemctl start firewalld
# 开放必要端口
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 验证
firewall-cmd --list-all
注意: firewalld 启动后需重启 Docker,否则 Docker 网络规则会失效。
4. 创建部署用户¶
# 创建 deploy 用户并加入 docker 组
useradd -m deploy
usermod -aG docker deploy
# 配置 sudo 免密(CI/CD 部署脚本需要)
echo 'deploy ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/deploy
chmod 440 /etc/sudoers.d/deploy
# 验证
id deploy
# 预期输出: uid=1000(deploy) gid=1000(deploy) groups=1000(deploy),994(docker)
5. 创建目录结构¶
# 后端服务
mkdir -p /opt/tfrs/{scripts,backups}
# 前端服务
mkdir -p /opt/tfrs-user-portal/{scripts,backups}
mkdir -p /opt/tfrs-admin-portal/{scripts,backups}
# 设置权限
chown -R deploy:deploy /opt/tfrs /opt/tfrs-user-portal /opt/tfrs-admin-portal
目录说明:
/opt/tfrs/ # 后端主部署目录
├── docker-compose.cloud.yml # Docker Compose 配置(CI 传入)
├── .env.prod # 环境变量(CI 生成)
├── scripts/
│ └── deploy.sh # 部署脚本(CI 传入)
└── backups/ # 手动备份存放
/opt/tfrs-user-portal/ # 用户端前端
├── docker-compose.yml
├── scripts/
│ └── deploy.sh
└── backups/
/opt/tfrs-admin-portal/ # 管理端前端
├── docker-compose.yml
├── scripts/
│ └── deploy.sh
└── backups/
6. 创建 Docker 网络¶
tfrs-net是所有服务的共享网络(外部网络),容器间通过服务名互相访问。
7. 初始化验证清单¶
完成上述步骤后,逐项确认:
# 快速验证脚本
echo "Docker: $(docker --version 2>/dev/null || echo '未安装')"
echo "Compose: $(docker compose version 2>/dev/null || echo '未安装')"
echo "Nginx: $(nginx -v 2>&1)"
echo "Firewall: $(firewall-cmd --state 2>/dev/null || echo '未运行')"
echo "User: $(id deploy 2>/dev/null || echo '不存在')"
echo "Network: $(docker network ls --filter name=tfrs-net --format '{{.Name}}' 2>/dev/null || echo '不存在')"
echo "Dirs: $(ls -d /opt/tfrs /opt/tfrs-user-portal /opt/tfrs-admin-portal 2>/dev/null | wc -l)/3"
预期输出所有项均正常,即可进入下一步:Nginx 与网络配置。