# texas-pocker-code **Repository Path**: cugjack/texas-pocker-code ## Basic Information - **Project Name**: texas-pocker-code - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-12 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 欢乐德州 Web 这是一个网页版本德州扑克项目: - 后端:Python + FastAPI + SQLite - 前端:Vue + Element Plus - 数据库:`backend/poker.sqlite3` - 默认管理员:`admin / admin123` ## 目录结构 ```text backend/ app.py requirements.txt poker.sqlite3 frontend/ src/ dist/ package.json package-lock.json ``` ## 本地开发启动 推荐使用两个 PowerShell 窗口分别启动后端和前端。 ### 1. 启动后端 在第一个 PowerShell 窗口执行: ```powershell cd D:\git\texas-pocker-code\backend python -m pip install -r requirements.txt python -m uvicorn app:app --reload --host 127.0.0.1 --port 8001 ``` 如果不是在当前这台电脑的目录里运行,把 `D:\git\texas-pocker-code` 换成你的项目实际路径。 通用命令: ```bash cd backend python -m pip install -r requirements.txt python -m uvicorn app:app --reload --host 127.0.0.1 --port 8001 ``` 接口文档: ```text http://127.0.0.1:8001/docs ``` ### 2. 启动前端 在第二个 PowerShell 窗口执行: ```powershell cd D:\git\texas-pocker-code\frontend $env:PATH = "D:\git\texas-pocker-code\.tools\node-v24.18.0-win-x64;$env:PATH" npm install npm run dev ``` 如果系统已经安装了 Node.js,也可以不用设置 `$env:PATH`,直接执行: ```bash cd frontend npm install npm run dev ``` 前端开发地址: ```text http://127.0.0.1:5173 ``` ?????????????? `/api` ??? `http://127.0.0.1:8001`? ## 生产打包 推荐在本地或构建机先打包前端,再把后端代码和 `frontend/dist` 上传到服务器。 ### 1. 构建前端 ```bash cd frontend npm ci npm run build ``` 构建完成后会生成: ```text frontend/dist/ ``` ### 2. 打包发布文件 在项目根目录执行: ```bash tar \ --exclude=".tools" \ --exclude="frontend/node_modules" \ --exclude="backend/__pycache__" \ -czf texas-poker-release.tar.gz \ backend \ frontend/dist \ frontend/package.json \ frontend/package-lock.json \ README.md ``` 如果是在 Windows 上打包,也可以直接压缩以下内容上传: ```text backend/ frontend/dist/ frontend/package.json frontend/package-lock.json README.md ``` 注意:如果你要保留线上数据库,不要用本地的 `backend/poker.sqlite3` 覆盖服务器上的数据库。第一次部署可以上传,后续更新建议备份后再决定是否覆盖。 ## CentOS 服务器部署 下面假设部署目录是: ```text /opt/texas-poker ``` 域名示例: ```text your-domain.com ``` ### 1. 安装系统依赖 CentOS 8 / Stream: ```bash sudo dnf install -y python3 python3-pip nginx tar ``` CentOS 7 的系统 Python 可能过旧,建议安装 Python 3.10+。可以先检查: ```bash python3 --version ``` 建议版本: ```text Python >= 3.10 Node.js >= 20,仅服务器上构建前端时需要 ``` 如果你已经在本地构建好 `frontend/dist`,服务器不需要安装 Node.js。 ### 2. 上传并解压 ```bash sudo mkdir -p /opt/texas-poker sudo chown -R $USER:$USER /opt/texas-poker scp texas-poker-release.tar.gz root@your-server:/opt/texas-poker/ cd /opt/texas-poker tar -xzf texas-poker-release.tar.gz ``` 最终目录应类似: ```text /opt/texas-poker/backend/app.py /opt/texas-poker/backend/requirements.txt /opt/texas-poker/frontend/dist/index.html ``` ### 3. 创建 Python 虚拟环境 ```bash cd /opt/texas-poker python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install -r backend/requirements.txt ``` ### 4. 初始化/检查后端 ```bash cd /opt/texas-poker/backend /opt/texas-poker/venv/bin/python -m uvicorn app:app --host 127.0.0.1 --port 8001 ``` 看到 Uvicorn 启动后,另开一个终端测试: ```bash curl http://127.0.0.1:8001/docs ``` 确认正常后按 `Ctrl+C` 停掉,继续配置 systemd。 ### 5. 配置 systemd 后台运行 创建服务文件: ```bash sudo vi /etc/systemd/system/texas-poker.service ``` 写入: ```ini [Unit] Description=Texas Poker FastAPI Backend After=network.target [Service] Type=simple WorkingDirectory=/opt/texas-poker/backend ExecStart=/opt/texas-poker/venv/bin/python -m uvicorn app:app --host 127.0.0.1 --port 8001 Restart=always RestartSec=3 User=root [Install] WantedBy=multi-user.target ``` 启动服务: ```bash sudo systemctl daemon-reload sudo systemctl enable texas-poker sudo systemctl start texas-poker sudo systemctl status texas-poker ``` 查看日志: ```bash sudo journalctl -u texas-poker -f ``` ### 6. 配置 Nginx 创建配置: ```bash sudo vi /etc/nginx/conf.d/texas-poker.conf ``` 写入,把 `your-domain.com` 改成你的域名或服务器 IP: ```nginx server { listen 80; server_name your-domain.com; root /opt/texas-poker/frontend/dist; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:8001/api/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 检查并启动 Nginx: ```bash sudo nginx -t sudo systemctl enable nginx sudo systemctl restart nginx ``` 如果服务器开启了防火墙: ```bash sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload ``` 如果 SELinux 阻止 Nginx 访问本地后端,可以开启: ```bash sudo setsebool -P httpd_can_network_connect 1 ``` 访问: ```text http://your-domain.com ``` ## 更新部署 ### 1. 本地重新打包 ```bash cd frontend npm ci npm run build cd .. tar \ --exclude=".tools" \ --exclude="frontend/node_modules" \ --exclude="backend/__pycache__" \ -czf texas-poker-release.tar.gz \ backend \ frontend/dist \ frontend/package.json \ frontend/package-lock.json \ README.md ``` ### 2. 服务器备份数据库 ```bash cd /opt/texas-poker cp backend/poker.sqlite3 backend/poker.sqlite3.$(date +%Y%m%d%H%M%S).bak ``` ### 3. 上传覆盖代码并重启 ```bash cd /opt/texas-poker tar -xzf texas-poker-release.tar.gz source venv/bin/activate pip install -r backend/requirements.txt sudo systemctl restart texas-poker sudo systemctl reload nginx ``` 如果不想覆盖线上数据库,解压前可以先从压缩包里移除本地数据库,或者解压后恢复备份的 `backend/poker.sqlite3`。 ## 常见问题 ### 1. 页面能打开,但接口请求失败 检查 Nginx 的 `/api/` 反向代理是否正确: ```bash curl http://127.0.0.1:8001/docs curl http://your-domain.com/api/rooms ``` 第二个接口未登录时返回 `401` 是正常的,说明代理通了。 ### 2. 浏览器刷新后 404 确认 Nginx 配置里有: ```nginx try_files $uri $uri/ /index.html; ``` ### 3. 数据库如何备份 SQLite 数据库文件是: ```text /opt/texas-poker/backend/poker.sqlite3 ``` 备份: ```bash cp /opt/texas-poker/backend/poker.sqlite3 /opt/texas-poker/backend/poker.sqlite3.bak ``` ### 4. 生产环境接口地址 前端默认请求相对路径: ```text /api ``` 所以推荐让前端和后端走同一个域名,由 Nginx 转发 `/api/` 到 FastAPI。 如果一定要前后端分开域名,可以构建前设置: ```bash cd frontend window.__POKER_API_BASE__="https://api.your-domain.com/api" ```