栗子姑娘 發表於 2023-7-14 13:06:00

CentOS 30分钟部署免费在线客服系统

<p>前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程。期间有一些朋友希望能够给出 Linux 环境的安装部署指导,本文基于 CentOS 7.9 来安装部署。</p>
<p>我详细列出了需要执行的命令的全过程,跟随本文可以在 30 分钟内完成部署。</p>
<h1 id="简介">简介</h1>
<p>升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: <strong>开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。</strong></p>
<h2 id="完整私有化包下载地址">完整私有化包下载地址</h2>
<blockquote>
<p>💾 https://kf.shengxunwei.com/freesite.zip</p>
</blockquote>
<h3 id="当前版本信息">当前版本信息</h3>
<p>发布日期:                 2023-7-9<br>
数据库版本:                 20230402a<br>
通信协议版本:                 20220306<br>
服务器版本:                1.11.10.0<br>
客服程序版本:                1.11.2.0<br>
更新程序版本:                1.2.0.0<br>
资源站点版本:                1.6.2.0<br>
Web管理后台版本:        2.0</p>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/94798a64-bfb1-433b-a9d3-331a209a2797.jpg" alt="" loading="lazy"></p>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/bb06b2e5-4d94-48af-aa3e-f600c909af12.JPG" alt="" loading="lazy"></p>
<h1 id="准备操作系统">准备操作系统</h1>
<ul>
<li>本文以 CentOS 7.9 为例进行说明,其它版本的 Linux 安装配置过程大同小异。</li>
</ul>
<h2 id="开放防火墙端口">开放防火墙端口</h2>
<p>客服系统默认使用 9527 端口进行通信,如果开启了防火墙,请在防火墙中开放此端口。</p>
<p>也可以更改为其它可用端口号,在后续配置客服系统服务端程序时要做对应的修改。</p>
<blockquote>
<p>请确保您所使用的主机服务商提供的防火墙服务中,也开放了对应端口。如阿里云服务器需要在安全组规则中配置。</p>
</blockquote>
<blockquote>
<p>请使用 MySQL 5.7 或更高版本</p>
</blockquote>
<h1 id="安装数据库引擎">安装数据库引擎</h1>
<ol>
<li>下载<br>
<code>wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm</code></li>
</ol>
<blockquote>
<p>如果提示 command not found,则先执行 <code>yum -y install wget</code> 安装</p>
</blockquote>
<ol start="2">
<li>安装<br>
<code>sudo yum install mysql80-community-release-el8-1.noarch.rpm -y</code><br>
<code>sudo yum install mysql-community-server -y</code></li>
</ol>
<blockquote>
<p>如果提示 command not found,则先执行 <code>yum -y install sudo</code> 安装</p>
</blockquote>
<blockquote>
<p>如果报 Error: Unable to find a match: mysql-community-server<br>
则先执行 <code>yum module disable mysql</code><br>
然后再执行 <code>sudo yum install mysql-community-server -y</code></p>
</blockquote>
<ol start="3">
<li>
<p>启动<br>
<code>sudo systemctl start mysqld</code></p>
</li>
<li>
<p>查看安装时生成的临时密码<br>
<code>sudo cat /var/log/mysqld.log |grep password</code></p>
</li>
<li>
<p>使用临时密码连接 MySQL<br>
<code>mysql -uroot -p</code></p>
</li>
<li>
<p>修改 root 密码<br>
<code>alter user root@localhost identified with mysql_native_password by '你的密码';</code></p>
</li>
</ol>
<h1 id="安装-nginx">安装 Nginx</h1>
<h2 id="安装依赖项">安装依赖项</h2>
<ol>
<li>
<p>安装 gcc<br>
<code>yum -y install gcc</code></p>
</li>
<li>
<p>安装 pcre、pcre-devel<br>
<code>yum install -y pcre pcre-devel</code></p>
</li>
<li>
<p>安装 zlib<br>
<code>yum install -y zlib zlib-devel</code></p>
</li>
<li>
<p>安装 openssl<br>
<code>yum install -y openssl openssl-devel</code></p>
</li>
</ol>
<h2 id="安装-nginx-1">安装 nginx</h2>
<ol>
<li>下载<br>
<code>wget http://nginx.org/download/nginx-1.20.1.tar.gz</code></li>
</ol>
<blockquote>
<p>如果提示 command not found,则先执行 <code>yum install wget</code> 安装</p>
</blockquote>
<ol start="2">
<li>
<p>解压缩<br>
<code>tar zxvf nginx-1.20.1.tar.gz</code></p>
</li>
<li>
<p>进入目录<br>
<code>cd nginx-1.20.1</code></p>
</li>
<li>
<p>安装和配置,依次执行<br>
<code>./configure</code><br>
<code>make</code><br>
<code>make install</code></p>
</li>
</ol>
<blockquote>
<p>如果提示 command not found,则先执行 <code>yum -y install gcc automake autoconf libtool make</code> 安装</p>
</blockquote>
<h2 id="设置开机自动启动">设置开机自动启动</h2>
<ol>
<li>
<p>进入到 /lib/systemd/system/ 目录<br>
<code>cd /lib/systemd/system/</code></p>
</li>
<li>
<p>创建 nginx.service 文件<br>
<code>vim nginx.service</code></p>
</li>
</ol>
<blockquote>
<p>如果提示 command not found,则先执行 <code>yum -y install vim</code> 安装</p>
</blockquote>
<ol start="3">
<li>输入以下内容后保存退出<br>
注意其中的 nginx 安装路径</li>
</ol>
<pre><code>
Description=nginx service
After=network.target

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

WantedBy=multi-user.target
</code></pre>
<p>内容说明</p>
<blockquote></blockquote>
<p>Description:描述服务<br>
After:描述服务类别<br>
服务运行参数的设置<br>
Type=forking是后台运行的形式<br>
ExecStart为服务的具体运行命令<br>
ExecReload为重启命令<br>
ExecStop为停止命令<br>
PrivateTmp=True表示给服务分配独立的临时空间<br>
注意:的启动、重启、停止命令全部要求使用绝对路径<br>
运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3</p>
<ol start="4">
<li>
<p>启动 nginx<br>
<code>systemctl start nginx.service</code></p>
</li>
<li>
<p>加入开机自启动<br>
<code>systemctl enable nginx.service</code></p>
</li>
<li>
<p>查看服务当前状态<br>
<code>systemctl status nginx.service</code></p>
</li>
</ol>
<h1 id="安装-net-core">安装 .Net Core</h1>
<ol>
<li>
<p>配置安装源<br>
<code>sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm</code></p>
</li>
<li>
<p>安装<br>
<code>sudo dnf install dotnet-sdk-3.1</code></p>
</li>
</ol>
<blockquote>
<p>如果提示 command not found,则先执行</p>
<ul>
<li><code>yum -y install sudo</code></li>
<li><code>yum -y install dnf</code></li>
</ul>
</blockquote>
<ol start="3">
<li>确认安装成功</li>
</ol>
<p>在命令行输入 <code>dotnet</code> 看到类似如下提示,表示安装成功。</p>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/568be32d-daf9-4665-81b8-7b82d857a694.jpg" alt="" loading="lazy"></p>
<h1 id="安装依赖库">安装依赖库</h1>
<h2 id="安装-libgdiplus">安装 libgdiplus</h2>
<p>安装该组件后访客端页面才可以输出图形验证码。</p>
<ol>
<li>
<p>安装依赖<br>
<code>yum install libgdiplus-devel -y</code></p>
</li>
<li>
<p>创建链接<br>
<code>ln -s /usr/lib64/libgdiplus.so /usr/lib/gdiplus.dll</code><br>
<code>ln -s /usr/lib64/libgdiplus.so /usr/lib64/gdiplus.dll</code></p>
</li>
</ol>
<blockquote>
<p>注意:如果是先启动了服务器主程序(Server),再安装 libgdiplus。需要重新启动 Server 主程序以使 libgdiplus 生效。</p>
</blockquote>
<h1 id="创建数据库">创建数据库</h1>
<blockquote>
<p>数据库建表脚本位于私有化部署安装包中的 <code>数据库建表脚本</code> 目录。<br>
在创建数据库表结构之前,将对应的数据库建表脚本上传到服务器工作目录。</p>
</blockquote>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/4c74074d-04c1-4864-af22-f5c79fdf6a06.JPG" alt="" loading="lazy"></p>
<ol>
<li>
<p>连接数据库引擎<br>
<code>mysql -uroot -p</code></p>
</li>
<li>
<p>创建数据库<br>
<code>create database kf;</code></p>
</li>
<li>
<p>切换到数据库<br>
<code>use kf</code></p>
</li>
<li>
<p>创建数据库表结构<br>
<code>source CreateDatabase_MySql.sql</code></p>
</li>
</ol>
<h1 id="配置和上传客服系统服务端程序">配置和上传客服系统服务端程序</h1>
<h3 id="修改配置文件">修改配置文件</h3>
<p>将服务端程序上传之前,可先在本地电脑完成对配置文件的修改。</p>
<p>参阅:使用自动化工具配置服务器端程序</p>
<p>也可以选择先把服务端程序上传后,再通过 vim 手工对配置文件修改。</p>
<p>参阅:主程序配置文件修改维护说明<br>
参阅:资源站点配置文件修改维护说明<br>
参阅:Web 管理后台配置文件修改维护说明</p>
<h3 id="上传服务端程序">上传服务端程序</h3>
<ol>
<li>
<p>在服务器建立目录<br>
<code>cd /</code><br>
<code>mkdir wwwroot</code></p>
</li>
<li>
<p>上传服务器程序<br>
将私有化部署包中的以下目录上传到新建的 wwwroot 目录:</p>
</li>
</ol>
<ul>
<li>Management</li>
<li>Resource</li>
<li>Server</li>
</ul>
<h1 id="配置服务器主程序">配置服务器主程序</h1>
<h2 id="修改配置文件-1">修改配置文件</h2>
<p>将服务端程序上传之前,可先在本地电脑完成对配置文件的修改。</p>
<p>参阅:使用自动化工具配置服务器端程序</p>
<p>也可以选择先把服务端程序上传后,再通过 vim 手工对配置文件修改。</p>
<p>参阅:主程序配置文件修改维护说明</p>
<h2 id="配置-nginx">配置 Nginx</h2>
<blockquote>
<p>注意:服务端程序使用 5000 端口作为反向代理,请勿占用此端口。</p>
</blockquote>
<ol>
<li>
<p>编辑 nginx 配置文件<br>
<code>vim /usr/local/nginx/conf/nginx.conf</code></p>
</li>
<li>
<p>在 Server 节点 <strong>平级</strong> 添加如下内容<br>
注意 <code>server_name</code> 处替换为你所使用的域名。</p>
</li>
</ol>
<pre><code>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;
      }
}
</code></pre>
<blockquote>
<p>示例文件:https://kf.shengxunwei.com/freesite/nginx.conf.txt</p>
</blockquote>
<ol start="3">
<li>重新加载 nginx 配置文件<br>
<code>cd /usr/local/nginx/sbin</code><br>
<code>./nginx -s reload</code></li>
</ol>
<h2 id="配置主程序">配置主程序</h2>
<ol>
<li>
<p>进入<br>
<code>cd /lib/systemd/system/</code></p>
</li>
<li>
<p>创建文件<br>
<code>vim kfServer.service</code></p>
</li>
<li>
<p>输入以下内容后保存退出<br>
注意 <code>WorkingDirectory</code> 为您的 Server 目录</p>
</li>
</ol>
<pre><code>
Description=kfServer service
After=network.target

Type=simple
GuessMainPID=true
WorkingDirectory=/wwwroot/Server/
StandardOutput=journal
StandardError=journal
ExecStart=/usr/local/bin/dotnet Sheng.Linkup.Server.dll &amp;
Restart=always

WantedBy=multi-user.target
</code></pre>
<blockquote>
<p>注意:在 CentOS 8 中,ExecStart 后无需要输入完整路径,如<br>
<code>ExecStart=dotnet Sheng.Linkup.Server.dll &amp;</code></p>
<p><strong>注意</strong>:通过终端工具复制粘贴文本可能会因为编码或换行符等问题导致服务无法启动。<br>
如果遇到不明原因的服务无法启动问题,删除 kfServer.service 文件重建,手工编辑内容再试。</p>
</blockquote>
<ol start="4">
<li>
<p>启动服务器主程序<br>
<code>systemctl start kfServer.service</code></p>
</li>
<li>
<p>设置开机启动<br>
<code>systemctl enable kfServer.service</code></p>
</li>
<li>
<p>查看运行状态<br>
<code>systemctl status kfServer.service</code><br>
显示绿色的 active(running) 表示启动成功。</p>
</li>
</ol>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/1e2c1c3d-8bc1-4d33-a705-7bbf8bba1a79.JPG" alt="" loading="lazy"></p>
<blockquote>
<p>如需重新启动服务器主程序,可使用命令 <code>systemctl restart kfServer.service</code>。<br>
在修改了主程序配置文件后,需要重新启动以生效。</p>
</blockquote>
<h2 id="初始化主程序">初始化主程序</h2>
<ol>
<li>访问域名,进入 Status 查看状态<br>
https://kf-api.yourname.com/Status</li>
</ol>
<blockquote>
<p>注意:直接访问域名显示 404 是正常的,主程序没有默认页面,请留意上面的示例网址,进入 <code>Status</code> 命令</p>
</blockquote>
<p>请确认已经完成了对服务器主程序配置文件的配置。<br>
参阅:使用自动化工具配置服务器端程序</p>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/7fe0de94-d11c-4cdd-8550-621e17f464a2.JPG" alt="" loading="lazy"></p>
<ol start="2">
<li><strong>初始化数据</strong><br>
访问域名,进入 <code>Status/Setup</code> 命令<br>
如:https://kf-api.yourname.com/Status/Setup</li>
</ol>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/67855b8c-fe0a-4256-98b7-0fb35c3b545e.JPG" alt="" loading="lazy"></p>
<h1 id="配置静态资源站点">配置静态资源站点</h1>
<h2 id="修改配置文件-2">修改配置文件</h2>
<p>将服务端程序上传之前,可先在本地电脑完成对配置文件的修改。</p>
<p>参阅:使用自动化工具配置服务器端程序</p>
<p>也可以选择先把服务端程序上传后,再通过 vim 手工对配置文件修改。</p>
<p>参阅:资源站点配置文件修改维护说明</p>
<h2 id="配置静态资源站点-1">配置静态资源站点</h2>
<ol>
<li>
<p>编辑 nginx 配置文件<br>
<code>vim /usr/local/nginx/conf/nginx.conf</code></p>
</li>
<li>
<p>在 Server 节点<strong>平级</strong>添加如下内容<br>
注意 <code>server_name</code> 处替换为你所使用的域名。<br>
<code>location</code> 下的 <code>root</code> 后为 Resource 目录路径。</p>
</li>
</ol>
<pre><code>server {
      listen       80;
      server_namekf-resource.yourname.com;

      location / {
            root   /wwwroot/Resource;
            indexv.html;
      }

      error_page   500 502 503 504/50x.html;
      location = /50x.html {
            root   html;
      }
}
</code></pre>
<blockquote>
<p>示例文件:https://kf.shengxunwei.com/freesite/nginx.conf.txt</p>
</blockquote>
<ol start="3">
<li>重新加载 nginx 配置文件<br>
<code>cd /usr/local/nginx/sbin</code><br>
<code>./nginx -s reload</code></li>
</ol>
<h1 id="配置-web-管理后台">配置 Web 管理后台</h1>
<h2 id="修改配置文件-3">修改配置文件</h2>
<p>将服务端程序上传之前,可先在本地电脑完成对配置文件的修改。</p>
<p>参阅:使用自动化工具配置服务器端程序</p>
<p>也可以选择先把服务端程序上传后,再通过 vim 手工对配置文件修改。</p>
<p>参阅:Web 管理后台配置文件修改维护说明</p>
<h2 id="配置-web-管理后台-1">配置 Web 管理后台</h2>
<ol>
<li>
<p>编辑 nginx 配置文件<br>
<code>vim /usr/local/nginx/conf/nginx.conf</code></p>
</li>
<li>
<p>在 Server 节点<strong>平级</strong>添加如下内容<br>
注意 <code>server_name</code> 处替换为你所使用的域名。<br>
<code>location</code> 下的 <code>root</code> 后为 Management 目录路径。</p>
</li>
</ol>
<pre><code>server {
      listen       80;
      server_namekf-m.yourname.com;

      location / {
            root   /wwwroot/Management;
            indexindex.html;
      }

      error_page   500 502 503 504/50x.html;
      location = /50x.html {
            root   html;
      }
}
</code></pre>
<blockquote>
<p>示例文件:https://kf.shengxunwei.com/freesite/nginx.conf.txt</p>
</blockquote>
<ol start="3">
<li>
<p>重新加载 nginx 配置文件<br>
<code>cd /usr/local/nginx/sbin</code><br>
<code>./nginx -s reload</code></p>
</li>
<li>
<p>在浏览器中访问你的 Web 管理后台域名,显示登录画面,使用 “配置服务器主程序” 完成时,初始化得到的默认登录账户密码登录即可。</p>
</li>
</ol>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/88e62e55-90f5-43b9-a46d-b894df33704d.JPG" alt="" loading="lazy"></p>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/7e9dc001-ad25-4ddb-902d-d6e86077978c.png" alt="" loading="lazy"></p>
<h1 id="配置发布客服端程序">配置发布客服端程序</h1>
<blockquote>
<p>请点击参阅:配置发布客服端程序</p>
</blockquote>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/9e12e88f-ac19-4fed-8ff1-a45c1f83c58d.JPG" alt="" loading="lazy"></p>
<h2 id="启动客服端程序">启动客服端程序</h2>
<p>压缩包中的“Shell”目录为客服端程序。</p>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/75d4b258-1a29-4a1d-8e47-e52e239265ac.JPG" alt="" loading="lazy"></p>
<ol>
<li>找到 Shell 目录下的“Sheng.Linkup.Client.Shell.exe”。</li>
</ol>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/5d9d0869-d9d4-4771-9476-a3aff8d27367.JPG" alt="" loading="lazy"></p>
<ol start="2">
<li>初次启动时,配置服务地址。</li>
</ol>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/8a96badf-55c3-4e04-8fa2-5e2b11ec105b.JPG" alt="" loading="lazy"></p>
<ol start="3">
<li>配置完成后,显示登录界面。</li>
</ol>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/40475bec-7461-42be-b24c-efe55b014745.JPG" alt="" loading="lazy"></p>
<blockquote>
<ul>
<li>如果提示<u><strong>没有返回版本信息</strong></u>,是因为在配置服务器主程序后,没有初始化数据。请查阅 配置服务器主程序 的结尾部分。</li>
<li>如果登录时提示“<u><strong>不允许对非连接的套接字执行此操作</strong></u>”,请检查服务器的防火配置,将客服系统使用的通信规则添加到入站规则,参阅:准备操作系统</li>
</ul>
</blockquote>
<ol start="3">
<li>填写默认密码“123”,点击“登录”进入系统。</li>
</ol>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/188ce37d-bee5-42ae-9e83-117e55301807.JPG" alt="" loading="lazy"></p>
<h2 id="访客聊天测试">访客聊天测试</h2>
<p>登录客服端以后,用浏览器打开你的资源站点域名下的聊天页面,如:</p>
<blockquote>
<p>kf-resource.shengxunwei.com/WebChat/WebChat.html?sitecode=freesite</p>
</blockquote>
<p>开始聊天。</p>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/295287db-7946-4f5c-a624-65a2e08a9782.JPG" alt="" loading="lazy"></p>
<p><img src="https://docs-api.shengxunwei.com/StaticFiles/Upload/564f10a0-9b2e-4048-a975-3cb4c7d6d065.JPG" alt="" loading="lazy"></p>
<h2 id="发布">发布</h2>
<p>将配置好的客服端程序 Shell 目录,压缩或打包分发给客服使用即可。</p>
<h2 id="集成">集成</h2>
<ul>
<li>集成到您的网站</li>
<li>集成到您的手机APP</li>
<li>集成到您的公众号等平台</li>
<li>深度集成:传递您的访客数据到客服系统</li>
</ul><br><br>
来源:https://www.cnblogs.com/sheng_chao/p/17553424.html
頁: [1]
查看完整版本: CentOS 30分钟部署免费在线客服系统