.net core系統跨平台部署手冊

  • 2020 年 4 月 10 日
  • 筆記

前言

 .net core跨平台版本基於.net core 3.1 SDK開發,剝離原來的基於MS Office進行文檔轉換功能的模組,使用基於開源跨平台的LibreOffice進行文檔轉換的模組。以此實現跨平台部署。由於LibreOffice同時只能有一個進程進行文檔轉換,為了提高轉換效率,引入Docker進行LibreOffice轉換進程隔離。經過測試,目前支援Windows和Linux作業系統。

Windows部署系統

  1. 推薦使用Windows Server2016和Windows Server2019伺服器作業系統及Windows10桌面版作業系統(Docker只支援這些系統)。
  2. 為了開發調試方便以及簡單化部署(對轉換性能要求不高),系統也支援免Docker部署,這種場景下一次只能轉換一個文檔,需要作業系統安裝LibreOffice。支援的作業系統為Windows Server 2008、Windows Server 2012伺服器作業系統及Windows7桌面版作業系統。
  3. 基於Docker部署流程

(1) 安裝作業系統。

(2) 安裝MySQL8.0資料庫。

(3) 安裝.NET Core 3.1 SDK。

(4) 安裝Docker for Windows Desktop。

(5) 導入docker轉換鏡像。(參考下文導入Docker鏡像)

(6) 解壓縮程式到指定目錄。

(7) 修改程式目錄下appsettings.json文件,將ConvertSetting節點下的ConcurrentCounts(同時轉換文檔數量,即Docker實例數量)設置為合適的值。建議該值設置為CPU內核數,最小1,最大32。

(8) 初始化資料庫表結構。

(9) 創建服務。

(10) 啟動服務。

(11) 登錄系統,進行系統授權。

  1. 免Docker部署流程

(1) 安裝作業系統。

(2) 安裝MySQL8.0資料庫。

(3) 安裝.NET Core 3.1 SDK。

(4) 安裝LibreOffice。

(5) 解壓縮管理端程式到指定目錄。

(6) 修改程式目錄下appsettings.json文件,將ConvertSetting節點下的ConcurrentCounts(同時轉換文檔數量,即Docker實例數量)設置為1。1表示不啟用Docker進行並發轉換。

(7) 初始化資料庫表結構。

(8) 創建服務。

(9) 啟動服務。

(10) 登錄系統,進行系統授權。

Linux部署系統

.Net Core3.1支援以下Linux作業系統

Docker支援以下Linux作業系統

綜合考慮,系統選用CentOS7 Linux作業系統。

  1. 基於Docker部署流程

(1) 安裝作業系統。

(2) 安裝MySQL8.0資料庫。(參考下文CentOS7部署MySQL)

(3) 安裝.NET Core 3.1 SDK。(參考下文CentOS7部署 .NET Core 3.1)

(4) 安裝Docker。(參考下文CentOS7部署Docker)

(5) 導入docker轉換鏡像。(參考下文導入Docker鏡像)

(6) 解壓縮管理端程式到指定目錄。

(7) 修改程式目錄下appsettings.json文件,將ConvertSetting節點下的ConcurrentCounts(同時轉換文檔數量,即Docker實例數量)設置為合適的值。建議該值設置為CPU內核數,最小1,最大32。

(8) 初始化資料庫表結構。

(9) 啟動程式。

(10) 登錄系統,進行系統授權。

  1. 免Docker部署流程

(1) 安裝作業系統。

(2) 安裝MySQL8.0資料庫。(參考下文CentOS7部署MySQL)

(3) 安裝.NET Core 3.1 SDK。(參考下文CentOS7部署 .NET Core 3.1)

(4) 安裝LibreOffice。(參考下文CentOS7部署LibreOffice)

(5) 導入docker轉換鏡像。(參考下文導入Docker鏡像)

(6) 解壓縮管理端程式到指定目錄。

(7) 修改程式目錄下appsettings.json文件,將ConvertSetting節點下的ConcurrentCounts(同時轉換文檔數量,即Docker實例數量)設置為1。1表示不啟用Docker進行並發轉換。

(8) 初始化資料庫表結構。

(9) 啟動程式。

(10) 登錄系統,進行系統授權。

依賴項部署

上傳文件到CentOS7

使用XFTP6通過ssh連接作業系統後即可上傳文件。

CentOS7部署Docker

  1. 卸載舊版本

yum remove docker

docker-client

docker-client-latest

docker-common

docker-latest

docker-latest-logrotate

docker-logrotate

docker-engine

  1. 安裝本地rpm包

rpm -ivh *.rpm –nodeps –force

  1. 啟動Docker服務

systemctl start docker

  1. 測試Docker是否正確安裝

docker image ls

  1. 導入文檔轉換鏡像 centos7_soffice.tar

docker load –input centos7_soffice.tar

導入Docker鏡像

Windows系統打開命令行或Windows Power Shell,Linux系統打開Bash,然後執行:

docker load –input <鏡像文件路徑>

如:docker load –input /root/centos7_soffice.tar

CentOS7部署MySQL

  1. 卸載MariaDB

通過 rpm -qa | grep mariadb 命令查看 mariadb 的安裝包

通過 rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 –nodeps 命令裝卸 mariadb

  1. 解壓tar包
  2. 依次安裝

rpm -ivh mysql-community-common-8.0.18-1.el7.x86_64.rpm –nodeps –force

rpm -ivh mysql-community-libs-8.0.18-1.el7.x86_64.rpm –nodeps –force

rpm -ivh mysql-community-client-8.0.18-1.el7.x86_64.rpm –nodeps –force

rpm -ivh mysql-community-server-8.0.18-1.el7.x86_64.rpm –nodeps –force

  1. 初始化資料庫,依次執行

mysqld –initialize

chown mysql:mysql /var/lib/mysql -R

systemctl start mysqld.service

systemctl enable mysqld

  1. 查看資料庫root密碼 cat /var/log/mysqld.log | grep password
  2. 登錄資料庫mysql -uroot -p

此時已進入mysql控制台,再輸入的就是SQL語句(以分號結尾,否則不執行),不是Linux命令了

  1. 修改mysql 的root用戶密碼(必須修改默認密碼)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123.root@zst';

  1. 開放防火牆

查詢埠是否開啟:firewall-cmd –query-port=3306/tcp

開啟埠:firewall-cmd –zone=public –add-port=3306/tcp –permanent

重啟防火牆:firewall-cmd –reload

查看所有開啟的埠:firewall-cmd –list-port

CentOS7部署LibreOffice

官方安裝教程:https://zh-cn.libreoffice.org/get-help/install-howto/linux/

  1. 解壓縮tar包

tar -xvf LibreOffice_6.3.3_Linux_x86-64_rpm.tar.gz

tar -xvf LibreOffice_6.3.3_Linux_x86-64_rpm_helppack_zh-CN.tar.gz

tar -xvf LibreOffice_6.3.3_Linux_x86-64_rpm_langpack_zh-CN.tar.gz

  1. 安裝LibreOffice

rpm -ivh ./LibreOffice_6.3.3_Linux_x86-64_rpm/RPMS/*.rpm –nodeps –force

/* 安裝主安裝程式的所有rpm包 */

rpm -ivh ./LibreOffice_6.3.3_Linux_x86-64_rpm_langpack_zh-CN/RPMS/*.rpm –nodeps –force

/* 安裝中文語言包中的所有rpm包 */

rpm -ivh ./LibreOffice_6.3.3_Linux_x86-64_rpm_helppack_zh-CN/RPMS/*.rpm –nodeps –force

/* 安裝中文離線幫助文件中的所有rpm包 */

CentOS7部署.NET Core SDK

  1. 卸載

dotnet –list-sdks

yum remove dotnet-host

sudo rm -rf /usr/share/dotnet/sdk/1.0.1

sudo rm -rf /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1

sudo rm -rf /usr/share/dotnet/shared/Microsoft.AspNetCore.App/1.0.1

sudo rm -rf /usr/share/dotnet/host/fxr/1.0.1

1.0.1為示例,根據list-sdks實際結果替換

參考教程:https://docs.microsoft.com/en-us/dotnet/core/versions/remove-runtime-sdk-versions?tabs=linux

  1. 安裝dotnet-sdk

mkdir -p HOME/dotnet && tar zxf dotnet-sdk-3.1.100-rhel.6-x64.tar.gz -C

export DOTNET_ROOT=$HOME/dotnet

export PATH=PATH:HOME/dotnet

vim ~/.bashrc

#在文件末尾增加

export PATH=PATH:HOME/dotnet

export DOTNET_ROOT=$HOME/dotnet

其他

  1. 解壓縮WebCore程式:unzip WebCore*.zip
  2. 啟動主程式:dotnet NPSWebCore.dll