.net core系統跨平台部署手冊
- 2020 年 4 月 10 日
- 筆記
前言
.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
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