• 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 社区的一款优秀开源产品。

    完整私有化包下载地址

    https://kf.shengxunwei.com

    当前版本信息

    发布日期: 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 数据库引擎

    1. 下载
      wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm

    2. 安装
      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

    1. 启动
      sudo systemctl start mysqld

    2. 查看安装时生成的临时密码
      sudo cat /var/log/mysqld.log |grep password

    3. 使用临时密码连接 MySQL
      mysql -uroot -p

    4. 修改 root 密码
      alter user root@localhost identified with mysql_native_password by '你的密码';

    安装 Nginx

    安装依赖项

    1. 安装 gcc
      yum -y install gcc

    2. 安装 pcre、pcre-devel
      yum install -y pcre pcre-devel

    3. 安装 zlib
      yum install -y zlib zlib-devel

    4. 安装 openssl
      yum install -y openssl openssl-devel

    安装 nginx

    1. 下载
      wget http://nginx.org/download/nginx-1.20.1.tar.gz

    如果提示 command not found,则先执行 yum install wget 安装

    1. 解压缩
      tar zxvf nginx-1.20.1.tar.gz

    2. 进入目录
      cd nginx-1.20.1

    3. 安装和配置,依次执行
      ./configure
      make
      make install

    如果提示 command not found,则先执行 yum -y install gcc automake autoconf libtool make 安装

    1. 启动 nginx 服务
      cd /usr/local/nginx/sbin
      ./nginx

    2. 查看nginx服务是否启动成功
      ps -ef | grep nginx

    3. 访问你的服务器IP
      看到显示欢迎页面。

    设置开机自动启动

    1. 进入到 /lib/systemd/system/ 目录
      cd /lib/systemd/system/

    2. 创建 nginx.service 文件
      vim nginx.service

    如果提示 command not found,则先执行 yum -y install vim 安装

    1. 输入以下内容后保存退出
      注意其中的 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

    1. 启动 nginx
      systemctl start nginx.service

    2. 加入开机自启动
      systemctl enable nginx.service

    3. 查看服务当前状态
      systemctl status nginx.service

    安装 .Net Core

    1. 安装
      sudo dnf install dotnet-sdk-3.1

    创建数据库

    1. 连接数据库引擎
      mysql -uroot -p

    2. 创建数据库
      create database kf

    3. 切换到数据库
      use kf

    4. 创建数据库表结构
      source createDatabase.sql

    配置服务器主程序

    请确认已经完成了对服务器主程序配置文件的配置。
    参阅:使用自动化工具配置服务器端程序

    配置主程序站点

    1. 上传并解压缩 Server 目录
      tar -xvf Server.tar

    2. 编辑 nginx 配置文件
      vim /usr/local/nginx/conf/nginx.conf

    3. 在 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;
            }
    }
    

    示例文件:https://kf.shengxunwei.com/freesite/nginx.conf.txt

    1. 重新加载 nginx 配置文件
      cd /usr/local/nginx/sbin
      ./nginx -s reload

    2. 测试运行
      cd /root/wwwroot/Server/
      dotnet Sheng.Linkup.Server.dll &

    3. 访问域名,进入 Status 查看状态
      https://kf-api.yourname.com/Status

    1. 初始化数据
      访问域名,进入 Status/Setup 命令
      如:https://kf-api.yourname.com/Status/Setup

    设置开机自启动

    1. 进入
      cd /lib/systemd/system/

    2. 创建文件
      vim kfServer.service

    3. 输入以下内容后保存退出
      注意 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
    
    1. 启动服务器主程序
      systemctl start kfServer.service

    2. 设置开机启动
      systemctl enable kfServer.service

    3. 查看运行状态
      systemctl status kfServer.service

    配置静态资源站点

    请确认已经完成了对服务器主程序配置文件的配置。
    参阅:使用自动化工具配置服务器端程序

    配置静态资源站点

    1. 上传并解压缩 Resource 目录
      tar -xvf Resource.tar

    2. 编辑 nginx 配置文件
      vim /usr/local/nginx/conf/nginx.conf

    3. 在 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;
            }
    }
    
    1. 为目录赋予访问权限
    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”目录为客服端程序。

    1. 找到 Shell 目录下的“Sheng.Linkup.Client.Shell.exe”。

    1. 初次启动时,配置服务地址。

    1. 配置完成后,显示登录界面。

    • 如果提示没有返回版本信息,是因为在配置服务器主程序后,没有初始化数据。请查阅 配置服务器主程序 的结尾部分。
    • 如果登录时提示“不允许对非连接的套接字执行此操作”,请检查服务器的防火配置,将客服系统使用的通信规则添加到入站规则,参阅:准备操作系统
    1. 填写默认密码“123”,点击“登录”进入系统。

    访客聊天测试

    登录客服端以后,用浏览器打开你的资源站点域名下的聊天页面,如:

    kf-resource.shengxunwei.com/WebChat/WebChat.html?sitecode=freesite

    开始聊天。

    发布

    将配置好的客服端程序 Shell 目录,压缩或打包分发给客服使用即可。

    集成

  • 相关阅读:
    SAP系统报错
    基金投资
    Reading: 重构相关
    C/C++: static variables
    C/C++: 如何删除本地文件/读取某个目录下符合某种pattern的所有文件路径
    如何在Linux下建立包含lua vm的unit test framwork
    C++实现字符串分割(类似于Python的split方法)
    postMan 汉化
    搞懂MySQL InnoDB事务ACID实现原理
    mysql 索引优化
  • 原文地址:https://www.cnblogs.com/sheng_chao/p/16359341.html
Copyright © 2020-2023  润新知