- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程。期间有一些朋友希望能够给出 Linux 环境的安装部署指导,本文基于 CentOS 7.9 来安装部署.
我详细列出了需要执行的命令的全过程,跟随本文可以在 30 分钟内完成部署.
升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品.
💾 https://kf.shengxunwei.com/freesite.zip 。
发布日期: 2023-7-9 数据库版本: 20230402a 通信协议版本: 20220306 服务器版本: 1.11.10.0 客服程序版本: 1.11.2.0 更新程序版本: 1.2.0.0 资源站点版本: 1.6.2.0 Web管理后台版本: 2.0 。
客服系统默认使用 9527 端口进行通信,如果开启了防火墙,请在防火墙中开放此端口.
也可以更改为其它可用端口号,在后续配置客服系统服务端程序时要做对应的修改.
请确保您所使用的主机服务商提供的防火墙服务中,也开放了对应端口。如阿里云服务器需要在安全组规则中配置.
请使用 MySQL 5.7 或更高版本 。
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
如果提示 command not found,则先执行 yum -y install wget 安装 。
sudo yum install mysql80-community-release-el8-1.noarch.rpm -y
sudo yum install mysql-community-server -y
如果提示 command not found,则先执行 yum -y install sudo 安装 。
如果报 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 '你的密码',
安装 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 。
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 安装 。
进入到 /lib/systemd/system/ 目录 cd /lib/systemd/system/ 。
创建 nginx.service 文件 vim nginx.service 。
如果提示 command not found,则先执行 yum -y install vim 安装 。
[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 。
配置安装源 sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm 。
安装 sudo dnf install dotnet-sdk-3.1 。
如果提示 command not found,则先执行 。
yum -y install sudo
yum -y install dnf
在命令行输入 dotnet 看到类似如下提示,表示安装成功.
安装该组件后访客端页面才可以输出图形验证码.
安装依赖 yum install libgdiplus-devel -y 。
创建链接 ln -s /usr/lib64/libgdiplus.so /usr/lib/gdiplus.dll ln -s /usr/lib64/libgdiplus.so /usr/lib64/gdiplus.dll 。
注意:如果是先启动了服务器主程序(Server),再安装 libgdiplus。需要重新启动 Server 主程序以使 libgdiplus 生效.
数据库建表脚本位于私有化部署安装包中的 数据库建表脚本 目录。 在创建数据库表结构之前,将对应的数据库建表脚本上传到服务器工作目录.
连接数据库引擎 mysql -uroot -p 。
创建数据库 create database kf,
切换到数据库 use kf 。
创建数据库表结构 source CreateDatabase_MySql.sql 。
将服务端程序上传之前,可先在本地电脑完成对配置文件的修改.
参阅: 使用自动化工具配置服务器端程序 。
也可以选择先把服务端程序上传后,再通过 vim 手工对配置文件修改.
参阅: 主程序配置文件修改维护说明 参阅: 资源站点配置文件修改维护说明 参阅: Web 管理后台配置文件修改维护说明 。
在服务器建立目录 cd / mkdir wwwroot 。
上传服务器程序 将私有化部署包中的以下目录上传到新建的 wwwroot 目录:
将服务端程序上传之前,可先在本地电脑完成对配置文件的修改.
参阅: 使用自动化工具配置服务器端程序 。
也可以选择先把服务端程序上传后,再通过 vim 手工对配置文件修改.
参阅: 主程序配置文件修改维护说明 。
注意:服务端程序使用 5000 端口作为反向代理,请勿占用此端口.
编辑 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;
}
}
示例文件: https://kf.shengxunwei.com/freesite/nginx.conf.txt 。
cd /usr/local/nginx/sbin
./nginx -s reload
进入 cd /lib/systemd/system/ 。
创建文件 vim kfServer.service 。
输入以下内容后保存退出 注意 WorkingDirectory 为您的 Server 目录 。
[Unit]
Description=kfServer service
After=network.target
[Service]
Type=simple
GuessMainPID=true
WorkingDirectory=/wwwroot/Server/
StandardOutput=journal
StandardError=journal
ExecStart=/usr/local/bin/dotnet Sheng.Linkup.Server.dll &
Restart=always
[Install]
WantedBy=multi-user.target
注意:在 CentOS 8 中,ExecStart 后无需要输入完整路径,如 ExecStart=dotnet Sheng.Linkup.Server.dll & 。
注意 :通过终端工具复制粘贴文本可能会因为编码或换行符等问题导致服务无法启动。 如果遇到不明原因的服务无法启动问题,删除 kfServer.service 文件重建,手工编辑内容再试.
启动服务器主程序 systemctl start kfServer.service 。
设置开机启动 systemctl enable kfServer.service 。
查看运行状态 systemctl status kfServer.service 显示绿色的 active(running) 表示启动成功.
如需重新启动服务器主程序,可使用命令 systemctl restart kfServer.service 。 在修改了主程序配置文件后,需要重新启动以生效.
注意:直接访问域名显示 404 是正常的,主程序没有默认页面,请留意上面的示例网址,进入 Status 命令 。
请确认已经完成了对服务器主程序配置文件的配置。 参阅: 使用自动化工具配置服务器端程序 。
Status/Setup
命令
将服务端程序上传之前,可先在本地电脑完成对配置文件的修改.
参阅: 使用自动化工具配置服务器端程序 。
也可以选择先把服务端程序上传后,再通过 vim 手工对配置文件修改.
参阅: 资源站点配置文件修改维护说明 。
编辑 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 /wwwroot/Resource;
index v.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
示例文件: https://kf.shengxunwei.com/freesite/nginx.conf.txt 。
cd /usr/local/nginx/sbin
./nginx -s reload
将服务端程序上传之前,可先在本地电脑完成对配置文件的修改.
参阅: 使用自动化工具配置服务器端程序 。
也可以选择先把服务端程序上传后,再通过 vim 手工对配置文件修改.
参阅: Web 管理后台配置文件修改维护说明 。
编辑 nginx 配置文件 vim /usr/local/nginx/conf/nginx.conf 。
在 Server 节点 平级 添加如下内容 注意 server_name 处替换为你所使用的域名。 location 下的 root 后为 Management 目录路径.
server {
listen 80;
server_name kf-m.yourname.com;
location / {
root /wwwroot/Management;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
示例文件: https://kf.shengxunwei.com/freesite/nginx.conf.txt 。
重新加载 nginx 配置文件 cd /usr/local/nginx/sbin ./nginx -s reload 。
在浏览器中访问你的 Web 管理后台域名,显示登录画面,使用 “配置服务器主程序” 完成时,初始化得到的默认登录账户密码登录即可.
请点击参阅: 配置发布客服端程序 。
压缩包中的“Shell”目录为客服端程序.
- 如果提示 没有返回版本信息 ,是因为在配置服务器主程序后,没有初始化数据。请查阅 配置服务器主程序 的结尾部分。
- 如果登录时提示“ 不允许对非连接的套接字执行此操作 ”,请检查服务器的防火配置,将客服系统使用的通信规则添加到入站规则,参阅: 准备操作系统
登录客服端以后,用浏览器打开你的资源站点域名下的聊天页面,如:
kf-resource.shengxunwei.com/WebChat/WebChat.html?sitecode=freesite 。
开始聊天.
将配置好的客服端程序 Shell 目录,压缩或打包分发给客服使用即可.
最后此篇关于CentOS30分钟部署免费在线客服系统的文章就讲到这里了,如果你想了解更多关于CentOS30分钟部署免费在线客服系统的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个 PowerBI Online 数据集,它是在 PowerBI 桌面中创建然后在线发布的。到目前为止,一切都很好。 我通过 PowerBI pusblish 从 Excel 连接到数据集,按预
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 2 年前。
我必须对一些太大而无法放入内存的数据训练分类模型,我正在使用 scikit learn 和 pandas 来进行分析。所以这是我的问题,如何在在线学习管道中使用验证来调整超参数? 我使用带有chuck
我正在开发一个应用程序,该应用程序将从 webservice 获取数据和图像并将其存储在设备中以供离线使用。同时,应用程序会将一些数据存储在 sqlite db 中,并将一些图像作为默认数据。 这是应
是否可以使用 FileReader API 和 onprogress 事件访问随 HTML5 传入的数据? 如果是这样,是否有 MD5 或其他快速散列算法的“在线”版本,以便我可以在文件完全读取之前开
希望任何人都可以帮助我更改下面的代码,我的临时文件包含以下代码: Temp=8.4* Humidity=70.4% 代替代码 Temp = 24 *C, Hum = 40 % 适用于以下脚本。 我需
我必须创建一个功能类似于联系人应用程序的应用程序。您可以在客户的 iPhone 上添加一个联系人,它应该会上传到客户的 iPad 上。如果客户在他们的 iPad 上更新联系人,它应该会在他们的 iPh
在 gitlab.com 上审查 merge 请求时,有时我必须在完成 merge 之前进行 rebase。 在 gitlab 上按“Rebase”后,我有一个特定的管道步骤失败,因为它无法验证用户的
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我正在尝试在 azure 上托管 SQL 服务器以与节点应用程序进行通信。我已经成功地完成了创建数据库服务器和数据库本身的过程。现在,我想编辑我的数据库结构。据我发现online ,应该有一种方法可以
我在 Quickbooks Intuit 开发人员 API 中使用 Oauth 2 获得了访问 token 。 范围是 com.intuit.quickbooks.accounting 我能够使用 Q
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
是否可以使Angular Material progress spinner与文本并大致与字符的大小一致地显示? 我想要类似的东西: please wait 微调器仅与“请稍候”文本成行出现。 这可
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个每天运行的Powershell脚本。今天它失败了,因为我正在使用的域 Controller 不可用。在继续执行脚本的其余部分之前,我想确保可以连接到可用的DC。 $LdapServer = "
我想制作一款在线 Flash 游戏,它将具有社交功能,但游戏玩法将主要是单人游戏。例如,屏幕上不会同时出现两个玩家,社交互动将通过异步消息进行,不会有实时聊天或其他任何内容。大部分逻辑将发生在客户端中
这几天我开始在线玩OpenShift。我部署了一个非常简单的“Hello World”Java 示例(1 行代码!),没有任何依赖项(没有 Spring!)命令行是这样的: oc.exe new-a
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
所以我一直在网上学习Java(初学者),并且我一直在尝试制作一个用于制作矩形的类文件。但是,我的在线 java 评估器指出它找不到实例变量。 This is the comment on it.我的代
我是一名优秀的程序员,十分优秀!