Linux + .net core 開發升訊威在線客服系統:同時支援 SQL Server 和 MySQL 的實現方法
- 2021 年 7 月 8 日
- 筆記
前段時間我發表了一系列文章,開始介紹基於 .net core 的在線客服系統開發過程。
有很多朋友一直提出希望能夠支援 MySQL 資料庫,考慮到已經有朋友在用 SQL Server,我在升級的過程中不能丟下對 SQL Server 的支援,必須讓系統同時支援 SQL Server 和 MySQL。
為了簡化安裝部署過程,我開發了一個配套的配置工具。
使用自動化配置工具,可以在「資料庫引擎」這一項中,切換 SQL Server 和 MySQL,而不需要部署不同的兩套程式。
在本文我將介紹:
- CentOS 安裝配置 MySQL 資料庫,創建資料庫,執行腳本創建表結構。
- 安裝 Nginx,反向代理到客服系統服務端,並設置開機自啟動
- 安裝 .net core ,部署客服系統並開機自啟動
我詳細列出了需要執行的命令的全過程,跟隨本文可以在 30 分鐘內完成部署。
簡介
升訊威在線客服與營銷系統是基於 .net core / WPF 開發的一款在線客服軟體,宗旨是: 開放、開源、共享。努力打造 .net 社區的一款優秀開源產品。
完整私有化包下載地址
當前版本資訊
發布日期:2021-7-8
資料庫版本:20210608a
通訊協議版本:20210609
伺服器版本:1.3.3.0
客服程式版本:1.3.3.0
資源站點版本:1.2.56.0
準備作業系統
- 本文以 CentOS 8.3 為例進行說明,其它版本的 Linux 安裝配置過程大同小異。
開放防火牆埠
客服系統默認使用 9527 埠進行通訊,如果開啟了防火牆,請在防火牆中開放此埠。
也可以更改為其它可用埠號,在後續配置客服系統服務端程式時要做對應的修改。
請確保您所使用的主機服務商提供的防火牆服務中,也開放了對應埠。如阿里雲伺服器需要在安全組規則中配置。
安裝 MySQL 資料庫引擎
-
下載
wget //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 //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 //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 查看狀態
//kf-api.yourname.com/Status
- 初始化數據
訪問域名,進入Status/Setup
命令
如://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 目錄,壓縮或打包分發給客服使用即可。