前言
.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
张林