跳转到正文

宝塔安装 ​

适用于已经使用宝塔管理服务器的环境。泡泡 IM 运行在 PHP CLI 常驻进程中,站点通过 Nginx 代理到该进程。

1. 检查环境 ​

在宝塔“软件商店”中准备 Nginx、MySQL 8.0 或以上、PHP 8.3。PHP 8.1 及以上也可运行,完整要求见选择安装方式。

PHP 设置中安装或启用 pdo_mysql、mbstring、GD 的 JPEG / WebP、pcntl、posix、sockets。这里要检查实际运行的 CLI 配置,不能只看 PHP-FPM 的扩展列表。

在终端确认:

bash
/www/server/php/83/bin/php -v
/www/server/php/83/bin/php -m

Workerman 需要进程与信号函数。若在 PHP 禁用函数中存在 pcntl_fork、pcntl_signal、pcntl_wait、pcntl_alarm、posix_getpid、posix_kill、stream_socket_server 等,应从运行泡泡 IM 的 CLI 配置中移除。通话和媒体相关功能也需要 FFmpeg / FFprobe。

2. 创建数据库 ​

在“数据库”中创建 popoim,字符集使用 utf8mb4,记录专用用户名和随机密码。

进入 MySQL 配置,在 [mysqld] 段增加:

ini
ngram_token_size=1
innodb_ft_enable_stopword=OFF

保存并重启 MySQL。安装向导检查 ngram_token_size,不满足时不能继续。

3. 创建站点并上传源码 ​

在“网站”中添加 example.com,源码目录使用 /www/wwwroot/example.com。不创建 FTP;使用已有数据库。PHP 版本可选“纯静态”,因为业务请求由独立的 CLI 进程处理。

宝塔:创建泡泡 IM 站点

将服务端源码内容上传到站点目录,保证 start.php 与 public 直接位于其中。打开站点“网站目录”,将运行目录设置为 /public。

宝塔:网站公开目录

在终端安装依赖,确保 Composer 使用相同的 PHP 版本:

bash
cd /www/wwwroot/example.com
export PATH=/www/server/php/83/bin:$PATH
composer install --no-dev --prefer-dist --no-interaction
mkdir -p runtime public/uploads
chown -R www:www runtime public/uploads config plugin/sdk/config

若面板环境没有 Composer,先配置 Composer 2 并确认 composer --version。安装生成的配置、运行目录和资源目录需要让项目运行用户 www 可写。

4. 管理常驻进程 ​

使用宝塔的项目管理或进程守护功能创建一个进程,填写:

项目值
名称popoim
工作目录/www/wwwroot/example.com
启动命令/www/server/php/83/bin/php start.php start
运行用户www
自动重启开启

启动命令保持前台运行,不加 -d;不要同时用另一个守护器启动第二份。没有安装进程守护插件时,也可按普通安装使用 systemd,将 PHP、目录和运行用户替换为上述宝塔路径。

5. 设置反向代理 ​

打开站点“配置文件”,保留面板管理的日志与证书设置,删除把业务交给 PHP-FPM 的配置,使用如下路由。已有同名 location 先替换,不叠加两份:

nginx
client_max_body_size 128m;

location = /ws {
    proxy_pass http://127.0.0.1:6060;
    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 X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 3600s;
    proxy_buffering off;
}
location ~* \.php(?:/|$) { return 404; }
location ~ "^/uploads/resources/[0-9]{4}/[0-9]{2}/[a-f0-9]{32}[.]bin$" { return 404; }
location / { try_files $uri @popoim; }
location @popoim {
    proxy_pass http://127.0.0.1:8787;
    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 X-Forwarded-Proto $scheme;
    proxy_set_header Connection "";
}

保留站点对隐藏文件的拒绝规则。泡泡 IM 不需要 ThinkPHP 等框架的伪静态规则,选择“无”,由上面的 try_files 转给服务端。

宝塔:站点反向代理配置

6. 完成安装与 HTTPS ​

在宝塔“SSL”中为实际域名配置有效证书,验证配置后重载 Nginx。访问 /install,按完成安装填写数据库和管理员。

安装后检查 wss://example.com/ws。公网只需 HTTP / HTTPS;PHP HTTP 端口和 Gateway / Register 内部端口不需要对外开放。