Appearance
概述
当在一台物理服务器或云主机上部署多套 EBAOZU(承信租)系统(例如同时运行演示站、测试站与正式站,或多个独立客户站点)时,必须针对 Swoole 监听端口、Nginx 反向代理、Redis 缓存与队列、Supervisor 守护进程 进行完全独立的隔离配置,否则会出现端口冲突、数据串号、登录互踢或服务崩溃。
核心隔离配置矩阵
假设在同一台服务器上部署两套系统(Site A 与 Site B):
| 配置项 | 站点 A (Site A) | 站点 B (Site B) | 对应配置文件 |
|---|---|---|---|
| Swoole 端口 | 20697 | 20799 | config/swoole.php 或 .env (SWOOLE_PORT) |
| Nginx 反向代理 | proxy_pass http://127.0.0.1:20697; | proxy_pass http://127.0.0.1:20799; | 站点 Nginx 配置 |
| Redis 数据库号 | SELECT = 0 | SELECT = 1 | .env ([REDIS] SELECT) |
| Redis 缓存前缀 | PREFIX = site_a_ | PREFIX = site_b_ | .env ([CACHE] PREFIX) |
| Redis 标签前缀 | TAG_PREFIX = tag_a_ | TAG_PREFIX = tag_b_ | .env ([CACHE] TAG_PREFIX) |
| Supervisor 守护名称 | ebaozu_site_a | ebaozu_site_b | Supervisor 管理器 |
| MySQL 数据库 | ebaozu_db_a | ebaozu_db_b | .env ([DATABASE] DATABASE) |
详细部署步骤
配置第二套站点的 Swoole 端口
打开第二套站点的 config/swoole.php,修改端口为独立端口:
php
'server' => [
'host' => env('SWOOLE_HOST', '127.0.0.1'),
'port' => env('SWOOLE_PORT', 20799), // 避免与第一套 20697 冲突
],配置第二套站点的 Nginx 反向代理
在第二套站点的 Nginx 配置文件中,设置反向代理端口为 20799:
nginx
location / {
proxy_pass http://127.0.0.1:20799;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Authori-zation $http_authori_zation;
}配置第二套站点的 .env 环境隔离
ini
[DATABASE]
HOSTNAME = 127.0.0.1
DATABASE = ebaozu_site_b
USERNAME = ebaozu_b_user
PASSWORD = your_b_password
HOSTPORT = 3306
[CACHE]
DRIVER = redis
PREFIX = ebaozu_site_b_
TAG_PREFIX = tag_ebaozu_b_
[REDIS]
REDIS_HOSTNAME = 127.0.0.1
PORT = 6379
REDIS_PASSWORD = your_redis_password
SELECT = 1为第二套站点创建独立的 Supervisor 守护进程
在 Supervisor 管理器中新增一个守护进程:
- 名称:
ebaozu_site_b - 运行目录:第二套站点的绝对根目录
- 启动命令:
php think swoole - 启动用户:
www
常见多站点冲突与排查
- 登录 A 站点导致 B 站点被退出(或验证码失效):
- 检查两套站点的
CACHE.PREFIX和REDIS.SELECT是否完全隔离。
- 检查两套站点的
- 第二套站点启动提示 Address already in use:
- 检查
config/swoole.php中的端口是否未修改,仍然在使用20697。
- 检查
- 访问第二套域名显示的是第一套站点的内容:
- 检查第二套站点的 Nginx 反向代理
proxy_pass是否错误指向了第一套站点的端口。
- 检查第二套站点的 Nginx 反向代理