DEPLOY.md 5.9 KB

Cloudpods 后端部署指南

一、环境要求

1. 系统要求

  • 操作系统: Linux (CentOS 7/8, Ubuntu 18.04/20.04/22.04)
  • CPU: 4核及以上
  • 内存: 8GB及以上
  • 磁盘: 50GB及以上可用空间

2. 软件依赖

  • MySQL: 5.7 或 8.0
  • Go: 1.21 或更高版本(如需编译)

二、部署前准备

1. 安装 MySQL

# CentOS/RHEL
sudo yum install -y mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql

2. 创建数据库

# 登录 MySQL
mysql -u root -p

# 创建数据库
CREATE DATABASE yunioncloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# 创建用户(可选,也可以使用 root)
CREATE USER 'yunion'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON yunioncloud.* TO 'yunion'@'%';
FLUSH PRIVILEGES;
EXIT;

3. 配置环境变量

创建 .env 文件:

cd /opt/cloudpods/backend
cat > .env << 'EOF'
# 数据库配置
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=yunion
DB_PASSWORD=your_password
DB_NAME=yunioncloud

# 管理员配置
ADMIN_USER=sysadmin
ADMIN_PASSWORD=admin@123
ADMIN_PROJECT=system
ADMIN_DOMAIN=Default
REGION_NAME=region0
EOF

三、部署方式

方式一:使用预编译二进制(推荐)

1. 下载二进制包

# 创建部署目录
mkdir -p /opt/cloudpods
cd /opt/cloudpods

# 下载二进制包(从 CI/CD 或 Release 页面)
wget https://your-ci-server/cloudpods-backend-linux-amd64.tar.gz
tar -xzf cloudpods-backend-linux-amd64.tar.gz

2. 执行部署脚本

cd /opt/cloudpods/backend

# 执行初始化(首次部署)
./init-cloudpods.sh

# 或跳过确认直接部署
./init-cloudpods.sh --skip-confirm

方式二:源码编译部署

1. 安装 Go

# 下载 Go
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz

# 配置环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

2. 克隆代码并编译

cd /opt
git clone https://github.com/your-org/cloudpods.git
cd cloudpods/backend

# 编译所有服务
make all

# 或只编译特定服务
make cmd/keystone cmd/region cmd/glance cmd/yunionconf cmd/scheduledtask cmd/apigateway

3. 执行部署

./init-cloudpods.sh

四、服务管理

查看服务状态

cd /opt/cloudpods/backend

# 查看所有服务进程
ps aux | grep -E 'keystone|region|glance|yunionconf|scheduledtask|apigateway'

# 查看服务端口
netstat -tlnp | grep -E '30500|30889|9292|30888|30950|3000'

启动/停止服务

# 停止所有服务
./stop-backend.sh

# 启动服务(开发模式,不重置数据)
./start-dev.sh

# 完全重置并重新初始化(会删除数据库)
./init-cloudpods.sh

查看日志

# 实时查看所有日志
tail -f logs/*.log

# 查看特定服务日志
tail -f logs/keystone.log
tail -f logs/region.log

五、配置文件说明

init-config.env(可选)

如需自定义配置,创建此文件:

cat > init-config.env << 'EOF'
# 数据库配置
DB_HOST=192.168.1.100
DB_PORT=3306
DB_USER=cloudpods
DB_PASSWORD=SecurePass123!
DB_NAME=yunioncloud

# 服务端口(如有端口冲突可修改)
KEYSTONE_PORT=30500
REGION_PORT=30889
GLANCE_PORT=9292
YUNIONCONF_PORT=30888
SCHEDULEDTASK_PORT=30950
APIGATEWAY_PORT=3000

# 管理员账号
ADMIN_USER=admin
ADMIN_PASSWORD=YourSecurePassword
ADMIN_PROJECT=system
ADMIN_DOMAIN=Default
REGION_NAME=region0
EOF

然后执行:

./init-cloudpods.sh --config init-config.env

六、健康检查

1. 检查服务是否正常运行

# Keystone
curl http://localhost:30500/v3

# APIGateway
curl http://localhost:3000/api/v1/rpc/parameters/global-settings

# Region
curl http://localhost:30889/regions

2. 使用 climc 检查

export OS_AUTH_URL=http://127.0.0.1:30500/v3
export OS_USERNAME=sysadmin
export OS_PASSWORD=admin@123
export OS_DOMAIN_NAME=Default
export OS_PROJECT_NAME=system

# 查看 region 列表
./_output/bin/climc region-list

# 查看服务列表
./_output/bin/climc service-list

# 查看 endpoint 列表
./_output/bin/climc endpoint-list

七、常见问题

1. 端口冲突

如果提示端口被占用,修改 init-config.env 中的端口配置。

2. 数据库连接失败

检查:

  • MySQL 服务是否运行:systemctl status mysql
  • 数据库用户权限是否正确
  • 防火墙是否放行 MySQL 端口

3. 服务启动失败

查看对应服务的日志:

tail -f logs/keystone.log

八、系统服务化(可选)

如需将服务注册为 systemd 服务,创建 /etc/systemd/system/cloudpods-backend.service

[Unit]
Description=Cloudpods Backend Services
After=network.target mysql.service

[Service]
Type=forking
User=cloudpods
Group=cloudpods
WorkingDirectory=/opt/cloudpods/backend
ExecStart=/opt/cloudpods/backend/start-dev.sh
ExecStop=/opt/cloudpods/backend/stop-backend.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable cloudpods-backend
sudo systemctl start cloudpods-backend
sudo systemctl status cloudpods-backend

九、前端配置

前端需要配置 API 地址,修改前端项目的 .env 文件:

# 前端项目根目录
cat > .env << 'EOF'
VUE_APP_API_URL=http://your-server-ip:3000
EOF

然后构建并部署前端。

十、安全建议

  1. 修改默认密码: 部署后立即修改 sysadmin 密码
  2. 使用 HTTPS: 生产环境配置 SSL/TLS
  3. 防火墙配置: 只开放必要的端口(3000, 8080)
  4. 数据库安全: 使用强密码,限制数据库访问 IP
  5. 定期备份: 备份数据库和配置文件

部署完成后访问: http://your-server-ip:8080

默认账号: sysadmin / admin@123