前言

 .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 $HOME/dotnet

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

2019-12-13

张林

.net core系统跨平台部署手册的更多相关文章

  1. ASP.NET Core托管和部署Linux实操演练手册

    一.课程介绍 ASP.NET Core 是一种全新的跨平台开源 .NET 框架,能够在 IIS.Nginx.Apache.Docker 上进行托管或在自己的进程中进行自托管. 作为一个.NET Web ...

  2. 使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台

    使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台. 前面讲解了VSCode开发调试 .NET Core.都只是在windows下运行. .NET Core真正的核心是跨平 ...

  3. .NET Core跨平台部署

    目录 .NET Core跨平台部署 1. Windows-IIS 1.1 安装.NET Core Windows Server Hosting 1.2 配置应用程序池 1.3 使用发布文件 2 Lin ...

  4. ASP.NET Core开发Docker部署

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  5. 如何将.Net Core应用程序部署在Linux操作系统上运行

    .Net Core简介 跨平台: 可以在 Windows.macOS 和 Linux 操作系统上运行. 跨体系结构保持一致: 在多个体系结构(包括 x64.x86 和 ARM)上以相同的行为运行代码. ...

  6. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  7. glusterFS系统中文管理手册(转载)

    GlusterFS系统中文管理手册       1文档说明 该文档主要内容出自 www.gluster.org 官方提供的英文系统管理手册<Gluster File System 3.3.0 A ...

  8. MariaDB Galera Cluster部署手册

    MariaDB Galera Cluster部署手册 galara保证双主数据库的同步及一致性 1.环境准备 基于新部署.最小化安装centos6.5 1>  yum install opens ...

  9. ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

随机推荐

  1. jsvascript篮球梦

    首先让我们先欣赏一下效果图: html文本: <div class="box"> <img id="imgshow" src="la ...

  2. iview 和 Elemet UI 源码比较

    (近期给自己立了个小flag,读源码,每周至少读1篇源码) 下面来谈谈iview 和 Elemet UI 这两个基于Vue 的UI 框架源码的基本结构以及区别. 一.文件结构开发主要放在根文件夹下的s ...

  3. c语言之学生管理系统

    0x00 学生管理系统 说到学生管理系统,对于每一个初学c语言的人都是一道不得不过的砍.不过,学习c,我觉得每个人都应该写一个学生管理系统,至于为什么,我想倘若连一个学生管理系统都写不好,哪么他的c是 ...

  4. ts文件的编译和运行

    hello.ts代码 function sayHello(person: string): string { return 'Hello, ' + person; } let user = 'Tom' ...

  5. AOP和spring AOP学习记录

    AOP基本概念的理解 面向切面AOP主要是在编译期或运行时,对程序进行织入,实现代理, 对原代码毫无侵入性,不破坏主要业务逻辑,减少程序的耦合度. 主要应用范围: 日志记录,性能统计,安全控制,事务处 ...

  6. 必备技能一、webpack

    https://cloud.tencent.com/developer/section/1477376----->配置很重要 一.基本安装 mkdir webpack-demo &&am ...

  7. js中(event)事件对象

    事件对象 • 什么是事件对象? • 就是当你触发了一个事件以后,对该事件的一些描述信息 • 例如: ° 你触发一个点击事件的时候,你点在哪个位置了,坐标是多少 ° 你触发一个键盘事件的时候,你按的是哪 ...

  8. python学习列表(Lists).基础二

    列表(Lists) 序列是Python中最基本的数据结构,序列中的每个元素都分配一个数字,它的第一个索引是0第二个索引是1,依次类推. 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号 ...

  9. django 从零开始 13 返回文件

    进行一些操作返回文件,flask和django差不多,基本都是在返回response 并且对其中的返回头部写入返回文件信息 # image def image(request): f = open(r ...

  10. 关于adsl vps 拨号ip服务器

    我这几天写了一遍在xp上的文章,但是因为xp上貌似只能使用squid2.6版本的,tinyproxy也不能用,而且怎么弄不出去vps端的端口出来 https://www.cnblogs.com/zen ...