网站首页 > 技术文章 正文
最近陆续有许多小伙伴询问如何在自己的服务器上部署安装自己的在线客服系统,以达到 100% 私有化使用的目的。所以我决定把这个过程详细地整理出来,大家按步骤来即可。
我们使用的是升讯威在线客服与营销系统,这是我们最近一年多一直在用的产品,在网络稳定性和安全性上比较符合我们的使用诉求。私有化的安装包可以在他的官网免费下载:
https://kf.shengxunwei.com/
注意:服务端程序使用 5000 端口作为反向代理,请勿占用此端口。
修改配置文件
将服务端程序上传之前,可先在本地电脑完成对配置文件的修改。
参阅:使用自动化工具配置服务器端程序
也可以选择先把服务端程序上传后,再通过宝塔的“文件”功能,手工对配置文件进行修改。
参阅:主程序配置文件修改维护说明
安装 Supervisor 管理器并启动客服主程序
进入宝塔面板的“软件商店”画面,搜索 Supervisor 并安装。
安装成功后点击“Supervisor管理器”右侧的“设置”。
在“Supervisor 管理器”中,添加守护进程:
- 运行目录选择 /www/wwwroot/Server
- 启动命令输入 dotnet Sheng.Linkup.Server.dll
- 进程数量 1
点击“确定”按钮添加。
添加成功后,进程管理列显示“已启动”,表示主程序启动成功。
如果启动失败,可先切换到宝塔面板的“终端”功能,进入 /www/wwwroot/Server 目录后,执行 dotnet Sheng.Linkup.Server.dll 命令,观察提示的错误信息。
最常见的错误原因如数据库连接串配置错误,注意检查 Server 目录中的 AppSettings.json 文件,参阅:主程序配置文件修改维护说明
更多信息可参阅:检查单(部署遇到问题请对照检查)
添加和配置主程序站点
进入宝塔面板的“网站”画面,点击“添加网站”按钮,在弹出的添加对话框中,输入:
- 你的主程序域名,如何 kf-api.yourname.com
- 根目录选择 /www/wwwroot/Server
- PHP 版本选择 纯静态
然后点击“提交”按钮。
添加成功后,点击右侧的“设置”,打开设置画面,然后切换到“配置文件”后,在开头部分添加以下内容:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream dotnet_server_proxy {
server localhost:5000;
keepalive 2000;
}
接着切换到“反向代理”画面,点击“添加反向代理”按钮:
- 目标 URL 输入 http://localhost:5000
然后点击“提交”按钮。
添加反向代理成功后,点击“配置文件”。
在反向代理的配置文件中,将以下内容添加到 location / 节点:
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
完成站点配置后,在站点列表中点击状态列中的“运行中”,重新启动站点以使配置全部生效。
初始化主程序
- 访问域名,进入 Status 查看状态
https://kf-api.yourname.com/Status
注意:直接访问域名显示 404 是正常的,主程序没有默认页面,请留意上面的示例网址,进入 Status 命令
请确认已经完成了对服务器主程序配置文件的配置。
参阅:配置和上传客服系统服务端程序
- 初始化数据
访问域名,进入 Status/Setup 命令
如:https://kf-api.yourname.com/Status/Setup
猜你喜欢
- 2025-03-10 mysql 修改密码 报错 ERROR 1396 (HY000): 解决方案
- 2025-03-10 手把手教你搭建免费个人博客网站
- 2025-03-10 10分钟学会VS NuGet包私有化部署
- 2025-03-10 Hexo建站全攻略
- 2025-03-10 1.8K Star!Cool-Admin-Vue:AI编码+流程编排,重新定义后台开发
- 2025-03-10 监控和扩展:为应用程序添加系统监控,AdminServer组件
- 2025-03-10 后台权限管理系统,开源免费,模块化、插件化、AI极速开发CRUD
- 2025-03-10 Spring Cloud Gateway实战之五:内置filter
- 2025-03-10 Farm 火了!比 Rspack/Vite 更快的打包方案!
- 2025-03-10 NET 7 + Vue.js 的前后端分离的通用后台管理系统框架
- 03-11C#中的类型转换:魔术般的数据类型变换
- 03-11在C#中如何进行类型转换操作?请举例说明
- 03-11try catch是能随便用的吗?
- 03-11C#中parse是一个什么样的方法?
- 03-11【密钥环】统信或者麒麟操作系统上打开浏览器的问题汇总
- 03-11零刻EQ59 Pro刷iKuai(爱快)路由和部署PVE玩转虚拟机体验分享
- 03-11谷歌上网本作为主力机感受如何?这是我的体验
- 03-11Excel数据查找匹配再添新成员:TEXTJOIN+IF
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)