前言
.net core跨平台版本基于.net core 3.1 SDK開發,剝離原來的基于MS Office進行文檔轉換功能的子產品,使用基于開源跨平台的LibreOffice進行文檔轉換的子產品。以此實作跨平台部署。由于LibreOffice同時隻能有一個程序進行文檔轉換,為了提高轉換效率,引入Docker進行LibreOffice轉換程序隔離。經過測試,目前支援Windows和Linux作業系統。
Windows部署系統
- 推薦使用Windows Server2016和Windows Server2019伺服器作業系統及Windows10桌面版作業系統(Docker隻支援這些系統)。
- 為了開發調試友善以及簡單化部署(對轉換性能要求不高),系統也支援免Docker部署,這種場景下一次隻能轉換一個文檔,需要作業系統安裝LibreOffice。支援的作業系統為Windows Server 2008、Windows Server 2012伺服器作業系統及Windows7桌面版作業系統。
- 基于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) 登入系統,進行系統授權。
- 免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作業系統。
- 基于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) 登入系統,進行系統授權。
- 免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
- 解除安裝舊版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安裝本地rpm包
rpm -ivh *.rpm --nodeps –force
- 啟動Docker服務
systemctl start docker
- 測試Docker是否正确安裝
docker image ls
- 導入文檔轉換鏡像 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
- 解除安裝MariaDB
通過 rpm -qa | grep mariadb 指令檢視 mariadb 的安裝包
通過 rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps 指令裝卸 mariadb
- 解壓tar包
- 依次安裝
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
- 初始化資料庫,依次執行
mysqld --initialize
chown mysql:mysql /var/lib/mysql -R
systemctl start mysqld.service
systemctl enable mysqld
- 檢視資料庫root密碼 cat /var/log/mysqld.log | grep password
- 登入資料庫mysql -uroot -p
此時已進入mysql控制台,再輸入的就是SQL語句(以分号結尾,否則不執行),不是Linux指令了
- 修改mysql 的root使用者密碼(必須修改預設密碼)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123.root@zst';
- 開放防火牆
查詢端口是否開啟: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/
- 解壓縮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
- 安裝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
- 解除安裝
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
- 安裝dotnet-sdk
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.1.100-rhel.6-x64.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
vim ~/.bashrc
#在檔案末尾增加
export PATH=$PATH:$HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
其他
- 解壓縮WebCore程式:unzip WebCore*.zip
- 啟動主程式:dotnet NPSWebCore.dll
2019-12-13
張林