前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程。期间有一些朋友希望能够给出 Linux 环境的安装部署指导,本文基于 CentOS 8.3 来安装部署。在本文中我详细的记录了:

  • 安装 SQL Server 数据库,创建数据库,执行脚本创建表结构(是否需要支持 MySQL?我也没考虑好,不知你们怎么看。)
  • 安装 Nginx,反向代理到客服系统服务端,并设置开机自启动
  • 安装 .net core ,部署客服系统并开机自启动

我详细列出了需要执行的命令的全过程,跟随本文可以在 30 分钟内完成部署。

简介

升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。

完整私有化包下载地址

https://kf.shengxunwei.com/freesite.zip

当前版本信息

发布日期:2021-6-11

数据库版本:20210608063023_20210608a

通信协议版本:20210609

服务器版本:1.3.1.0

客服程序版本:1.3.3.0

资源站点版本:1.2.56.0

安装数据库引擎

  1. 下载

    curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo

  2. 安装

    yum install -y mssql-server

  3. 配置

    /opt/mssql/bin/mssql-conf setup

选择 SQL Server 的一个版本:

  1. Evaluation (免费,无生产许可,180 天限制)
  1. Developer (免费,无生产许可)
  2. Express (免费)
  3. Web (付费版)
  4. Standard (付费版)
  5. Enterprise (付费版) - CPU 核心利用率限制为 20 个物理/40 个超线程
  6. Enterprise Core (付费版) - CPU 核心利用率达到操作系统最大值
  7. 我通过零售渠道购买了许可证并具有要输入的产品密钥。

5 安装标准版即可,接着输入 Yes

提示 Enter the SQL Server system administrator password 时输入管理员密码

要注意输入的密码要不低于8位,且要包含字母大小写和数字。

安装命令行工具

  1. 下载

    curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo

  2. 安装

    yum install -y mssql-tools unixODBC-devel

    中途提示时输入 Yes

  3. 添加环境变量

    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile

    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

    source ~/.bashrc

  4. 连接数据库

    sqlcmd -S localhost -U SA -P '<YourPassword>'

    出现 1> 表示登陆成功

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

  2. 解压缩

    tar zxvf nginx-1.20.1.tar.gz

  3. 进入目录

    cd nginx-1.20.1

  4. 安装和配置,依次执行

    ./configure

    make

    make install

  5. 启动 nginx 服务

    cd /usr/local/nginx/sbin

    ./nginx

  6. 查看nginx服务是否启动成功

    ps -ef | grep nginx

  7. 访问你的服务器IP

    看到显示欢迎页面。

设置开机自动启动

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

    cd /lib/systemd/system/

  2. 创建 nginx.service 文件

    vim nginx.service

  3. 输入以下内容后保存退出

    注意其中的 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. 通过命令行登陆

    sqlcmd -S localhost -U SA -P '<YourPassword>'

  2. 创建数据库

    create database KF

    go

  3. 创建数据库表结构

    sqlcmd -i CreateDatabase.sql -d kf -U sa -P '<YourPassword>'

配置服务器主程序

请确认已经完成了对服务器主程序配置文件的配置。

参阅:使用自动化工具配置服务器端程序

配置主程序站点

  1. 上传并解压缩 Server 目录

    tar -xvf Server.tar

  2. 编辑 nginx 配置文件

    vim /usr/local/nginx/conf/nginx.conf

  3. 在 Server 节点平级添加如下内容

    注意 server_name 处替换为你所使用的域名。

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;
}
}
  1. 在 http 节点下加入
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
  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 目录,压缩或打包分发给客服使用即可。

集成

CentOS 30分钟部署 .net core 在线客服系统的更多相关文章

  1. Docker 版 3分钟部署 .net core 开源在线客服系统,他来了

    我在博客园发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 前些天又应朋友的要求,发了一篇 CentOS 版本的安装部署教程:https://www.cnblogs.com ...

  2. .net core 和 WPF 开发升讯威在线客服系统【私有化部署免费版】发布

    希望 .net 和 WPF 技术时至今日,还能有一些存在感. 这个项目源于2015年前后,当时开发的初版,我使用了 ASP.NET MVC 做为后端,数据库使用原生 ADO.NET 进行操作.WPF ...

  3. Linux + .net core 开发升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法

    前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 有很多朋友一直提出希望能够支持 MySQL 数据库,考虑到已经有朋友在用 SQL Server,我在升级的过程中 ...

  4. Linux + .net core 开发升讯威在线客服系统:首个经过实际验证的高性能版本

    业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程: .net core 和 WPF 开发升讯威在线客服系统:目录 https://blog.she ...

  5. .net core 和 WPF 开发升讯威在线客服系统:调用百度翻译接口实现实时自动翻译

    业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程. 我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免 ...

  6. .net core 和 WPF 开发升讯威在线客服系统:调用有道翻译接口实现实时自动翻译的方法

    业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程. 我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免 ...

  7. .net core 和 WPF 开发升讯威在线客服系统:把 .Net Framework 打包进安装程序

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 系列文章目录: https://blog.shengxunwei.com/Home/Post/44a3 ...

  8. .net core 和 WPF 开发升讯威在线客服系统:使用本地IP数据库实现访客来源快速定位,支持国外

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署:https://kf.shengxun ...

  9. Linux 运行升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法

    前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 有很多朋友一直提出希望能够支持 MySQL 数据库,考虑到已经有朋友在用 SQL Server,我在升级的过程中 ...

随机推荐

  1. RHCE7 认证之学习笔记

    -------------------------------------------------------------------------------------------初始化:两台服务器 ...

  2. Qt链接MySQL发布后Drive not loadedDrive not loaded怎么办

    缺少动态链接库!把MySQL文件夹下面带dll.lib的全复制进去就行了

  3. Schema的快速入门

    Schema的快速入门 如果是简单元素直接  <element name="" type=""></element> Schema开发过 ...

  4. Spring Cloud 升级之路 - 2020.0.x - 4. 使用 Eureka 作为注册中心

    Eureka 目前的状态:Eureka 目前 1.x 版本还在更新,但是应该不会更新新的功能了,只是对现有功能进行维护,升级并兼容所需的依赖. Eureka 2.x 已经胎死腹中了.但是,这也不代表 ...

  5. chemfig化学式转换为pdf

    SMILES 与 chemfig 针对化学分子结构,可以用SMILES (用ASCII字符串明确描述分子结构的规范)来定义. SMILES(Simplified molecular input lin ...

  6. Python中Socket编程server与client简单的合法性认证

    导入python自带的hmac模块对随机生成的位数32字节和自定义token进行加密处理 import osmsg = os.urandom(32)  #随机生成msgOut[4]: b"F ...

  7. 软负载Nginx和硬负载F5的优缺点对比

    对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器.​ a.软件负载均衡解决方案 在一台服务器的操作系统上,安装一个附加软件 ...

  8. 网络编程-UDP的服务器和客户端----keep on going never give up

    1 //**************************************服务器********************************************** 2 #inclu ...

  9. APP专项测试实战1

    首先,如果测试需要用到的话,还是建议一下大家去看下Android-studio的官方文档.文档地址:Documentation  |  Android 开发者  |  Android Develope ...

  10. centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息

    centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息 rose_willow rose_willow 发布于 2016/06/16 11:32 字数 902 阅读 405 收藏 0 点赞 0 ...