Files
chat-app/DEPLOY.md
T
wangyang a2c0345731 feat: config.php 支持 DB_PATH 环境变量,更新部署文档
- db_path 可通过 DB_PATH 环境变量覆盖,本地默认 server/chat.db
- DEPLOY.md 增加 Docker 部署示例和环境变量说明

2026-05-15
2026-05-15 18:44:53 +08:00

2.9 KiB

生产部署指南

目录结构

/www/chat-app/
├── public/                 # 前端 dist + PHP 入口
│   ├── index.html          # 前端入口
│   ├── assets/             # 前端 JS/CSS
│   └── index.php           # PHP 后端入口
├── src/                    # PHP 业务代码
├── vendor/                 # composer 依赖
├── chat.db                 # SQLite 数据库
└── composer.json

部署步骤

1. 安装 PHP 依赖

cd /www/chat-app
composer install --no-dev --optimize-autoloader

2. 前端构建并放入 public

本地执行:

npm run build
cp -r dist/* server/public/

3. Nginx 配置

server {
    listen 80;
    server_name your-domain.com;
    root /www/chat-app/public;
    index index.html index.php;

    # 前端静态资源(JS/CSS/图片等)
    location /assets/ {
        try_files $uri =404;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # API 请求 → PHP
    location /api/ {
        try_files $uri /index.php$is_args$args;
    }

    # 前端路由(SPA)→ index.html
    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;  # 或 unix:/run/php/php8.3-fpm.sock
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4. PHP-FPM 配置要点

确保 php.ini 中:

; SQLite 需要
extension=pdo_sqlite

; SSE 流式输出需要
output_buffering = Off
zlib.output_compression = Off

5. 数据库权限

chmod 666 /www/chat-app/chat.db

Docker 部署(推荐)

docker-compose.yml 示例

version: '3.8'

services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./dist:/var/www/dist:ro
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - php

  php:
    image: php:8.3-fpm
    volumes:
      - ./server:/var/www/html
      - /data:/data          # 数据库挂载到独立目录,避免权限问题
    environment:
      - DB_PATH=/data/chat.db    # 通过环境变量覆盖数据库路径
      - JWT_SECRET=your-secret   # 生产环境务必修改
      - CHAT_PASSWORD=your-pass  # 生产环境务必修改

环境变量说明

变量 默认值 说明
DB_PATH server/chat.db SQLite 数据库路径,建议挂载到独立目录
JWT_SECRET chat-terminal-secret-key-change-in-production JWT 签名密钥,生产环境必须修改
CHAT_PASSWORD admin 登录密码,生产环境必须修改

简化版:PHP 内置服务器(仅测试)

cd /www/chat-app/public
php -S 0.0.0.0:8000

注意:PHP 内置服务器性能差,不适合生产。