ChatGPT-Pro布置文档
适用版别:v1.3.0以上
前端开源地址:gitee.com/shoujing100…
办理端开源地址:gitee.com/shoujing100…
uni-app插件商场:ext.dcloud.net.cn/plugin?id=1…
系统架构介绍
服务端
- PHP >=7.4 <8
- webman 1.4
- Redis 7.0
后台办理端
- vue-cli2
- element-ui2
客户端
- uni-app
适用小程序、公众号、普通H5、APP、PC
布置服务端及办理后台
环境查看
-
php -v
查看php版别需为7.4以上 - 保证以下函数免除禁用
shell_exec
pcntl_signal
pcntl_fork
pcntl_wait
pcntl_signal_dispatch
pcntl_alarm
exec
- 保证php-cli敞开了redis扩展,运用以下指令查看:
php -m | grep redis
有多个php版别的,留意只能一个php版别的redis扩展。
如之前装置有其他redis版别,请卸载其他redis版别,将php7.4的redis版别装置后,切换指令行php版别一次或重启服务器,需求保证 php -m | grep redis
有结果。
如果没有,运用php --ini
查看装备文件途径是否正确。
浮屠面板新建网站
将代码上传到网站根目录
选定网站目录为/public
为网站装备ssl证书
留意:服务器IP在海外且未装备ssl证书或者国内未敞开强制https可能导致微信jsapi支付回调不能正常告诉。
导入数据库
修正数据库装备文件
修正config\database.php
文件,改为你自己的数据库及密码
写入授权码文件
修正resource\secauth
文件内容为获取的授权码。
设置nginx装备文件
# 开端
upstream chat_ai {
server 127.0.0.1:8998;
keepalive 10240;
}
# 完毕
server
{
listen 80;
listen 443 ssl http2;
server_name domain.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/chat-ai-server/public;
#SSL-START SSL相关装备,请勿删去或修正下一行带注释的404规矩
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /www/server/panel/vhost/cert/domain.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/domain.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
#ERROR-PAGE-START 过错页装备,能够注释、删去或修正
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引证装备,能够注释或修正
include enable-php-74.conf;
#PHP-INFO-END
#REWRITE-START URL重写规矩引证,修正后将导致面板设置的伪静态规矩失效
include /www/server/panel/vhost/rewrite/domain.com.conf;
#REWRITE-END
# 此处开端
location ^~ / {
error_page 405 = @webman;
try_files /${uri}/index.html /${uri} /${uri}/index.html @webman;
}
## WEBMAN LOCATION
location @webman {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-f $request_filename){
proxy_pass http://chat_ai;
}
}
# 此处监听wss,则wss衔接地址为 wss://yourdomin.com/wss 可自行界说
location /wss {
proxy_pass http://127.0.0.1:7272;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
# 此处完毕
#制止拜访的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键请求SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/domain.com.log;
error_log /www/wwwlogs/domain.com.error.log;
}
启动服务端
启动前需求留意查看服务器内存巨细,memory.php
中设置的内存巨细尽量不大于1/2总内存,但不应小于256M。
运用指令php start.php start
开端运转,如需后台运转,运用php start.php start -d
。如需停止进程,运用php start.php stop
即可。
拜访办理后台进行初始化装备
服务端布置后,即可经过域名/manage/
拜访办理后台。
后台装备
服务端启动完成后,拜访办理后台进行初始化装备。
必填设置
- 设置署理计划
- Key办理
布置uni-app客户端
拜访H5端
拜访服务端域名
即可。
留意:后台装备项中h5地址需求设置为:服务端域名/
拜访PC端
拜访服务端域名/web/
即可。
后台装备项阐明
在办理后台装备办理-根本装备
中有一些系统常用的装备。
留意:装备项修正后,需求先点击后台右上角清理缓存后退出登录重新登录。
上传途径装备:在拓宽信息中,修正绑定域名
装备项,本地测验默许为http://127.0.0.1:8998
,如布置到服务端后,此处修正为服务端域名。
在根本信息中:
- 内容安全检查接口开关如敞开,该功能调用的是微信内容检查接口,因而需求首要保证系统中的小程序装备正确。
- 署理计划 可选
反向署理
、环境署理
、直接拜访
。如挑选反向署理,则需求装备你的反代服务器域名。如挑选环境署理,则需保证服务端地点环境的署理可用。如挑选直接拜访,需服务端地点环境可直接拜访openai的接口。
在运用信息中:可修正免费体会次数、是否共享获取次数(暂时仅针对小程序)、共享获取次数。
在敞开信息中:可设置微信公众号登录、支付以及小程序支付功能是否敞开。
同一服务器布置多个服务端
- 修正装备文件
config\server.php
中listen
的端口,官方主分支默许端口为8998
,多个服务端不行抵触,此处须修正为其他端口,如8999
。 - 修正装备文件
config\plugin\webman\gateway-worker\process.php
中gateway.listen
装备项端口,官方主分支默许端口为7272
,多个服务端不行抵触,此处须修正为其他端口,如7282
。修正该文件中register.listen
装备项端口,官方主分支默许端口为1236
,多个服务端不行抵触,此处须修正为其他端口,如1237
,并同步修正gateway.constructor.registerAddress
和worker.constructor.registerAddress
中的端口为1237
(与上一步修正保持一致的端口)。修正startPort
为2400(每添加一个服务端,则添加100,需保证2400-2500端口无占用)。 - 修正
config\my.php
中的redis_queue_name
值,默许为send-chat
,为防止不同站点消费进程抵触,此处需重命名,如send-chat-re
。 - nginx的转发装备中端口需同步修正,一起upstream的称号也不行重名。
举例:服务器上已运转一个服务端运用,那么须做如下装备修正:
config\server.php
:
<?php
/**
* This file is part of webman.
*
* Licensed under The MIT License
* For full copyright and license information, please see the MIT-LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @author walkor<walkor@workerman.net>
* @copyright walkor<walkor@workerman.net>
* @link http://www.workerman.net/
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
return [
'listen' => 'http://0.0.0.0:8999', // 修正装备文件`config\server.php`中`listen`的端口,官方主分支默许端口为`8998`,多个服务端不行抵触,此处须修正为其他端口,如`8999`
'transport' => 'tcp',
'context' => [],
'name' => 'webman',
'count' => cpu_count() * 2,
'user' => '',
'group' => '',
'reusePort' => false,
'event_loop' => '',
'stop_timeout' => 2,
'pid_file' => runtime_path() . '/webman.pid',
'status_file' => runtime_path() . '/webman.status',
'stdout_file' => runtime_path() . '/logs/stdout.log',
'log_file' => runtime_path() . '/logs/workerman.log',
'max_package_size' => 100 * 1024 * 1024
];
config\plugin\webman\gateway-worker\process.php
:
<?php
use Webman\GatewayWorker\Gateway;
use Webman\GatewayWorker\BusinessWorker;
use Webman\GatewayWorker\Register;
return [
'gateway' => [
'handler' => Gateway::class,
'listen' => 'websocket://0.0.0.0:7282', // 2. 修正装备文件`config\plugin\webman\gateway-worker\process.php`中`gateway.listen`装备项端口,官方主分支默许端口为`7272`,多个服务端不行抵触,此处须修正为其他端口,如`7282`。
'count' => cpu_count(),
'reloadable' => false,
'constructor' => ['config' => [
'lanIp' => '127.0.0.1',
'startPort' => 2400,
'pingInterval' => 25,
'pingData' => '{"type":"ping"}',
'registerAddress' => '127.0.0.1:1237', // 同步修正端口:2. 修正装备文件`config\plugin\webman\gateway-worker\process.php`中`register.listen`装备项端口,官方主分支默许端口为`1236`,多个服务端不行抵触,此处须修正为其他端口,如`1237`
'onConnect' => function () {
},
]]
],
'worker' => [
'handler' => BusinessWorker::class,
'count' => cpu_count() * 2,
'constructor' => ['config' => [
'eventHandler' => plugin\webman\gateway\Events::class,
'name' => 'ChatBusinessWorker',
'registerAddress' => '127.0.0.1:1237', // 同步修正端口:2. 修正装备文件`config\plugin\webman\gateway-worker\process.php`中`register.listen`装备项端口,官方主分支默许端口为`1236`,多个服务端不行抵触,此处须修正为其他端口,如`1237`
]]
],
'register' => [
'handler' => Register::class,
'listen' => 'text://0.0.0.0:1237', // 2. 修正装备文件`config\plugin\webman\gateway-worker\process.php`中`register.listen`装备项端口,官方主分支默许端口为`1236`,多个服务端不行抵触,此处须修正为其他端口,如`1237`
'count' => 1, // Must be 1
'constructor' => []
],
];
nginx装备:
# 修正upstream称号,需求保证服务器上大局仅有
upstream bkchat {
server 127.0.0.1:8999; # 修正server端口
keepalive 10240;
}
...
# 此处开端
location ^~ / {
error_page 405 = @webman;
try_files /${uri}/index.html /${uri} /${uri}/index.html @webman;
}
## WEBMAN LOCATION
location @webman {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-f $request_filename){
proxy_pass http://bkchat;
}
}
# 此处监听wss,则wss衔接地址为 wss://yourdomin.com/wss 可自行界说
location /wss {
proxy_pass http://127.0.0.1:7272;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
# 此处完毕
留意:多个服务端运转在同一服务器,不行运用开发模式,有必要以-d模型运转,否则monitor进程端口会抵触报错。
留意:多服务端运转,gateway进程可能会报过错SQLSTATE\[HY000] \[1040] Too many connections in
,这是由于每个进程运转时都独立拜访了数据库,导致mysql服务器报错,但不影响运转,具体衔接数量上限待测验。
留意:多服务端需求关注\memory.php
为每个服务端分配的内存约束巨细,超越总内存可能导致服务器宕机。一起需求留意gateway进程与redis进程数量,多服务端需调试到最合适的数量。
内容安全
自界说灵敏词检测
自界说灵敏词在百度内容审阅平台文本审阅接口调用前进行,当射中违禁词库时会自动取消本次对话,并将射中词汇以*
替代后回来前端提示用户修正。
自界说灵敏词文件存放在服务端/resource/sensitive_words.txt
文件中,如需增改请打开该文件后弥补,灵敏词之间以、
分割。
为什么以文件方式实现?
进步功率,灵敏词库数据量很大,从数据库中读取影响功率。