跳转至

服务器基础设施初始化

适用于所有环境(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

启动并设为自启

systemctl enable docker
systemctl start docker
docker --version
docker compose version

2. 安装 Nginx

dnf install -y nginx
systemctl enable nginx
systemctl start nginx
nginx -v

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 网络规则会失效。

systemctl restart 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 网络

docker network create tfrs-net

# 验证
docker network ls --filter name=tfrs

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 与网络配置