周玉环 1 день тому
батько
коміт
a089b14d25
1 змінених файлів з 298 додано та 0 видалено
  1. 298 0
      backend/DEPLOY.md

+ 298 - 0
backend/DEPLOY.md

@@ -0,0 +1,298 @@
+# 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