# 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 ```bash # 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. 创建数据库 ```bash # 登录 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` 文件: ```bash 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. 下载二进制包 ```bash # 创建部署目录 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. 执行部署脚本 ```bash cd /opt/cloudpods/backend # 执行初始化(首次部署) ./init-cloudpods.sh # 或跳过确认直接部署 ./init-cloudpods.sh --skip-confirm ``` ### 方式二:源码编译部署 #### 1. 安装 Go ```bash # 下载 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. 克隆代码并编译 ```bash 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. 执行部署 ```bash ./init-cloudpods.sh ``` ## 四、服务管理 ### 查看服务状态 ```bash cd /opt/cloudpods/backend # 查看所有服务进程 ps aux | grep -E 'keystone|region|glance|yunionconf|scheduledtask|apigateway' # 查看服务端口 netstat -tlnp | grep -E '30500|30889|9292|30888|30950|3000' ``` ### 启动/停止服务 ```bash # 停止所有服务 ./stop-backend.sh # 启动服务(开发模式,不重置数据) ./start-dev.sh # 完全重置并重新初始化(会删除数据库) ./init-cloudpods.sh ``` ### 查看日志 ```bash # 实时查看所有日志 tail -f logs/*.log # 查看特定服务日志 tail -f logs/keystone.log tail -f logs/region.log ``` ## 五、配置文件说明 ### init-config.env(可选) 如需自定义配置,创建此文件: ```bash 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 ``` 然后执行: ```bash ./init-cloudpods.sh --config init-config.env ``` ## 六、健康检查 ### 1. 检查服务是否正常运行 ```bash # 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 检查 ```bash 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. 服务启动失败 查看对应服务的日志: ```bash tail -f logs/keystone.log ``` ## 八、系统服务化(可选) 如需将服务注册为 systemd 服务,创建 `/etc/systemd/system/cloudpods-backend.service`: ```ini [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 ``` 启用服务: ```bash sudo systemctl daemon-reload sudo systemctl enable cloudpods-backend sudo systemctl start cloudpods-backend sudo systemctl status cloudpods-backend ``` ## 九、前端配置 前端需要配置 API 地址,修改前端项目的 `.env` 文件: ```bash # 前端项目根目录 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