Linux 运行升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法
前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程。
有很多朋友一直提出希望能够支持 MySQL 数据库,考虑到已经有朋友在用 SQL Server,我在升级的过程中不能丢下对 SQL Server 的支持,必须让系统同时支持 SQL Server 和 MySQL。
为了简化安装部署过程,我开发了一个配套的配置工具。
使用自动化配置工具,可以在“数据库引擎”这一项中,切换 SQL Server 和 MySQL,而不需要部署不同的两套程序。
在本文我将介绍:
- CentOS 安装配置 MySQL 数据库,创建数据库,执行脚本创建表结构。
- 安装 Nginx,反向代理到客服系统服务端,并设置开机自启动
- 安装 .net core ,部署客服系统并开机自启动
我详细列出了需要执行的命令的全过程,跟随本文可以在 30 分钟内完成部署。
简介
升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。
完整私有化包下载地址
当前版本信息
发布日期: 2022-5-15
数据库版本: 20220219a
通信协议版本: 20220306
服务器版本: 1.10.5.0
客服程序版本: 1.9.3.0
资源站点版本: 1.5.9.0
Web 管理后台版本: 1.1.7.0
准备操作系统
- 本文以 CentOS 8.3 为例进行说明,其它版本的 Linux 安装配置过程大同小异。
开放防火墙端口
客服系统默认使用 9527 端口进行通信,如果开启了防火墙,请在防火墙中开放此端口。
也可以更改为其它可用端口号,在后续配置客服系统服务端程序时要做对应的修改。
请确保您所使用的主机服务商提供的防火墙服务中,也开放了对应端口。如阿里云服务器需要在安全组规则中配置。
安装 MySQL 数据库引擎
下载
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
安装
sudo yum install mysql80-community-release-el8-1.noarch.rpm -y
sudo yum install mysql-community-server -y
如果报 Error: Unable to find a match: mysql-community-server
则先执行yum module disable mysql
然后再执行sudo yum install mysql-community-server -y
启动
sudo systemctl start mysqld
查看安装时生成的临时密码
sudo cat /var/log/mysqld.log |grep password
使用临时密码连接 MySQL
mysql -uroot -p
修改 root 密码
alter user root@localhost identified with mysql_native_password by '你的密码';
安装 Nginx
安装依赖项
安装 gcc
yum -y install gcc
安装 pcre、pcre-devel
yum install -y pcre pcre-devel
安装 zlib
yum install -y zlib zlib-devel
安装 openssl
yum install -y openssl openssl-devel
安装 nginx
- 下载
wget http://nginx.org/download/nginx-1.20.1.tar.gz
如果提示 command not found,则先执行
yum install wget
安装
解压缩
tar zxvf nginx-1.20.1.tar.gz
进入目录
cd nginx-1.20.1
安装和配置,依次执行
./configure
make
make install
如果提示 command not found,则先执行
yum -y install gcc automake autoconf libtool make
安装
启动 nginx 服务
cd /usr/local/nginx/sbin
./nginx
查看nginx服务是否启动成功
ps -ef | grep nginx
访问你的服务器IP
看到显示欢迎页面。
设置开机自动启动
进入到 /lib/systemd/system/ 目录
cd /lib/systemd/system/
创建 nginx.service 文件
vim nginx.service
如果提示 command not found,则先执行
yum -y install vim
安装
- 输入以下内容后保存退出
注意其中的 nginx 安装路径
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
内容说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
启动 nginx
systemctl start nginx.service
加入开机自启动
systemctl enable nginx.service
查看服务当前状态
systemctl status nginx.service
安装 .Net Core
- 安装
sudo dnf install dotnet-sdk-3.1
创建数据库
连接数据库引擎
mysql -uroot -p
创建数据库
create database kf
切换到数据库
use kf
创建数据库表结构
source createDatabase.sql
配置服务器主程序
请确认已经完成了对服务器主程序配置文件的配置。
参阅:使用自动化工具配置服务器端程序
配置主程序站点
上传并解压缩 Server 目录
tar -xvf Server.tar
编辑 nginx 配置文件
vim /usr/local/nginx/conf/nginx.conf
在 Server 节点 平级 添加如下内容
注意server_name
处替换为你所使用的域名。
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream dotnet_server_proxy {
server localhost:5000;
keepalive 2000;
}
server{
listen 80;
listen [::]:80;
server_name kf-api.yourname.com;
location / {
proxy_pass http://dotnet_server_proxy;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
重新加载 nginx 配置文件
cd /usr/local/nginx/sbin
./nginx -s reload
测试运行
cd /root/wwwroot/Server/
dotnet Sheng.Linkup.Server.dll &
访问域名,进入 Status 查看状态
https://kf-api.yourname.com/Status
- 初始化数据
访问域名,进入Status/Setup
命令
如:https://kf-api.yourname.com/Status/Setup
设置开机自启动
进入
cd /lib/systemd/system/
创建文件
vim kfServer.service
输入以下内容后保存退出
注意WorkingDirectory
为您的 Server 目录
[Unit]
Description=kfServer service
After=network.target
[Service]
Type=simple
GuessMainPID=true
WorkingDirectory=/root/wwwroot/Server/
StandardOutput=journal
StandardError=journal
ExecStart=dotnet Sheng.Linkup.Server.dll &
Restart=always
[Install]
WantedBy=multi-user.target
启动服务器主程序
systemctl start kfServer.service
设置开机启动
systemctl enable kfServer.service
查看运行状态
systemctl status kfServer.service
配置静态资源站点
请确认已经完成了对服务器主程序配置文件的配置。
参阅:使用自动化工具配置服务器端程序
配置静态资源站点
上传并解压缩 Resource 目录
tar -xvf Resource.tar
编辑 nginx 配置文件
vim /usr/local/nginx/conf/nginx.conf
在 Server 节点平级添加如下内容
注意server_name
处替换为你所使用的域名。
location
下的root
后为 Resource 目录路径。
server {
listen 80;
server_name kf-resource.yourname.com;
location / {
root /root/wwwroot/Resource;
index v.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
- 为目录赋予访问权限
chmod 777 /root
chmod 777 /root/wwwroot
chmod 777 /root/wwwroot/Resource
配置发布客服端程序
此页面显示的是私有化部署版本的客服端配置说明,如果您在线使用,下载客服端程序请至:下载安装客服端软件
客服端程序运行需求
操作系统:
- Windows 7 SP1 或更高版本
- Windows Server 2008 R2 SP1 或更高版本
依赖:
- 本程序需要 .Net Framework 4.8 或更高版本。
私有化部署免费版压缩包中已经提供了“ndp48-web.exe”,这是 .Net Framework 4.8 的在线安装程序,推荐使用。只有 1 MB 多的大小,能够自动判断电脑是否已经安装了 .Net Framework 4.8 。
声明
客服程序没有任何恶意代码并经过病毒扫描。 使用的是:
- ESET Internet Security
- McAfee Total Protection
如果执行安装程序时显示 Windows SmartScreen 筛选器窗口,请点击“更多信息
”后,点击“运行
”按钮即可。
出现该窗口的原因 并不是发现恶意代码
,而是单纯的指程序没有企业签名。
代码签名证书的价格较贵,需要每年近万元的费用,对于免费软件来说 成本高昂
。
此外 360 如果出现类似提示也是由于类似原因,并不是发现恶意代码,而是需要向 360 缴纳认证费。
启动客服端程序
压缩包中的“Shell”目录为客服端程序。
- 找到 Shell 目录下的“Sheng.Linkup.Client.Shell.exe”。
- 初次启动时,配置服务地址。
- 配置完成后,显示登录界面。
- 填写默认密码“123”,点击“登录”进入系统。
访客聊天测试
登录客服端以后,用浏览器打开你的资源站点域名下的聊天页面,如:
kf-resource.shengxunwei.com/WebChat/WebChat.html?sitecode=freesite
开始聊天。
发布
将配置好的客服端程序 Shell 目录,压缩或打包分发给客服使用即可。
集成
Linux 运行升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法的更多相关文章
- Linux + .net core 开发升讯威在线客服系统:首个经过实际验证的高性能版本
业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程: .net core 和 WPF 开发升讯威在线客服系统:目录 https://blog.she ...
- 开发升讯威在线客服系统启示录:怎样编写堪比 MSDN 的用户手册
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 免费在线使用 & 免费私有化部署:https://kf.shengxunwei.com 文章目 ...
- 1个程序员单干之:怎样给我的升讯威在线客服系统编写堪比 MSDN 的用户手册
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 免费在线使用 & 免费私有化部署:https://kf.shengxunwei.com 视频实 ...
- 详解升讯威在线客服系统前端 JavaScript 脚本加密技术(1)
我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户.对我来说,只要能获得用户的认可,就是我最大的动力. 这段时间有几个技术小伙伴问了我一个有意思的问题:"你的前端脚本是 ...
- .net core 和 WPF 开发升讯威在线客服系统【私有化部署免费版】发布
希望 .net 和 WPF 技术时至今日,还能有一些存在感. 这个项目源于2015年前后,当时开发的初版,我使用了 ASP.NET MVC 做为后端,数据库使用原生 ADO.NET 进行操作.WPF ...
- .net core 和 WPF 开发升讯威在线客服系统:把 .Net Framework 打包进安装程序
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 系列文章目录: https://blog.shengxunwei.com/Home/Post/44a3 ...
- .net core 和 WPF 开发升讯威在线客服系统:使用本地IP数据库实现访客来源快速定位,支持国外
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署:https://kf.shengxun ...
- Linux + .net core 开发升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法
前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 有很多朋友一直提出希望能够支持 MySQL 数据库,考虑到已经有朋友在用 SQL Server,我在升级的过程中 ...
- .net core 和 WPF 开发升讯威在线客服系统:怎样实现拔网线也不丢消息的高可靠通信(附视频)
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...
随机推荐
- Qt QTableView 表格内添加控件
目录 Qt QTableView 表格内添加控件 1. QItemDelegate 2. setIndexWidget 3. setIndexWidget + setLayout Qt QTableV ...
- Spring框架技术
Spring框架技术 SSM(Spring+SpringMVC+Mybatis)阶段的学习,也算是成功出了Java新手村. 前面我们已经学习过Mybatis了. 从这里开始,很多的概念理解起来就稍微有 ...
- linux磁盘之回环设备
为什么要讲回环设备,下面看下系统的采样情况 上面图有loop0,loop1等设备标记,这些是什么?看看下面fdisk -l 的结果,乱糟糟的一堆? 什么是回环设备? 上面的loop0, loop1就是 ...
- 改造@vue/cli项目为服务端渲染-ServerSideRender
VUE SEO方案二 - SSR服务端渲染 在上一章中,我们分享了预渲染的方案来解决SEO问题,个人还是很中意此方案的,既简单又能解决大部分问题.但是也有着一定的缺陷,所以我们继续来看下一个方案--服 ...
- angular.js中 路由 用法及概念
在开讲之前,首先谈谈APP应用.平时我们用的app总是多页面,如果用原生安卓或者苹果,那当然很流畅啦.但是当我们用一般的html页面做移动端,简单时候我们可以用<a href="&qu ...
- 阶段性总结linux(1)
学习安装linux系统 [网络连接方式] 桥接 ,好比所有人都在25期教室,公用这个教室的局域网段 192.168.11.0~192.168.11.255 教室内有60个同学,插上了网线,所有人都是 ...
- Linux的软件安装tomcat 以及jdk
因为tomcat的启动需要jdk,所以我们先安装jdk,安装完成后再安装tomcat 具体的文件大家可以到官网下载,下面介绍安装步骤 目录 jdk安装 1.通过xftp或者其他方式将安装包传到我们的L ...
- *CTF babyarm内核题目分析
本文从漏洞分析.ARM64架构漏洞利用方式来讨论如何构造提权PoC达到读取root权限的文件.此题是一个ARM64架构的Linux 5.17.2 版本内核提权题目,目的是读取root用户的flag文件 ...
- HCNP Routing&Switching之端口隔离
前文我们了解了组播路由协议稀疏模式中的RP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16154347.html:今天我们来聊一聊二层交换机中有关v ...
- 【ConcurrentHashMap】浅析ConcurrentHashMap的构造方法及put方法(JDK1.7)
目录 引言 代码讲解 构造方法 put方法 ensureSegment Segment.put 引言 ConcurrentHashMap的数据结构如下. 和HashMap的最大区别在于多了一层Segm ...