zoukankan      html  css  js  c++  java
  • .net core服务程序在centos7上的部署

    最近因为项目上的需要,使用.net core写了一个服务,用于指定word模板文件与数据,完成数据的填充(word读写使用npoi)与格式转换(使用aspose,将word转pdf)。之所以选择用.net core就是考虑到跨平台部署的问题。

    1、打开powershell,使用ssh登录到服务器(以172.16.170.41为例):

      ssh root@172.16.170.41 

      输入密码即可登录;

    2、安装.net core3.1(我们的服务是使用3.1版本开发的):

      sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

      sudo yum install dotnet-sdk-3.1

      安装完了运行dotnet --version,如果能查看版本说明安装成功;

    3、将我们本地编译发布好的服务文件copy到服务器上

      在本地powershell里输入:scp -r C:pdfservice  root@172.16.170.41:/var/www/pdfservice

      这条命令表示拷贝本地C:pdfservice下的所有文件,到41服务器的/var/www/pdfservice目录下(会自动创建pdfservice目录);

    4、安装jexus。jexus是一款国产开源免费应用服务器,功能与Nginx类似,但是更加能够发挥.net core程序的优势。

      curl https://jexus.org/release/x64/install.sh | sudo sh

      完成后,会生成/usr/jexus目录。其中/usr/jexus/siteconf目录下用来存放jexus的配置文件。

    5、配置jexus。

      进入/usr/jexus/siteconf目录下

      vi pdfservice新建一个配置文件(也可以使用默认配置文件default)

      输入“i”进入编辑模式, copy以下内容:

      

    ########################################

    port=5555
    root=/ /var/www/pdfservice/
    hosts=* #OR your.com,*.your.com

    # User=www-data

    # AspNet.Workers=2 # Set the number of asp.net worker processes. Defauit is 1.

    # addr=0.0.0.0
    # CheckQuery=false
    NoLog=true

    AppHost={
    cmd=dotnet /var/www/pdfservice/CATSTI.PdfService.dll;
    root=/var/www/pdfservice/;
    port=0;
    }

    # NoFile=/index.aspx
    # Keep_Alive=false
    # UseGZIP=false

    # UseHttps=true
    # ssl.certificate=/x/xxx.crt #or pem
    # ssl.certificatekey=/x/xxx.key
    # ssl.protocol=TLSv1.0 # TLSv1.1 or TLSv1.2...
    # ssl.ciphers=

    # DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24
    # AllowFrom=192.168.*.*
    # DenyDirs=~/cgi, ~/upfiles
    # indexes=myindex.aspx

    # Deny asp ...
    # rewrite=^/.+?.(asp|cgi|pl|sh|bash|dll)(?.*|)$ /.deny->$1
    # rewrite=.*/editor/.+ /.deny->editor
    # reproxy=/bbs/ http://192.168.1.112/bbs/
    # host.Redirect=abc.com www.abc.com 301
    # ResponseHandler.Add=myKey:myValue


    # Jexus php fastcgi address is '/var/run/jexus/phpsvr'
    #######################################################
    # fastcgi.add=php|socket:/var/run/jexus/phpsvr

      其中:

      port=5555 表示jexus监听5555端口;

      root=/ /var/www/pdfservice/  表示服务的根目录;

      AppHost={
          cmd=dotnet /var/www/pdfservice/CATSTI.PdfService.dll;
          root=/var/www/pdfservice/;
          port=0;
          }

      中的=dotnet /var/www/pdfservice/CATSTI.PdfService.dll 表示服务的入口是使用.net把CATSTI.PdfService.dll启动起来;

      修改完成后,按“esc”键返回浏览模式,再按“:”键,输入wq保存退出;如果输入q!表示不保存退出。

     

    6、重启jexus服务并在centos的防火墙中放开5555端口

      重启jexus:service jexus restart

      放开5555端口:firewall-cmd --zone=public --add-port=5555/tcp --permanent

      重启防火墙:firewall-cmd --reload

    7、如果顺利,服务就可以正式使用了。如果不顺利,就百度吧(:P)

    8、安装字体。由于我们的服务使用word作为模板, 用到的字体在服务器上不一定全,因此需要把涉及到的字体安装到服务器。可以参考这个帖子做:https://www.cnblogs.com/qize/p/12522886.html

    ~~采坑更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    实际现场实施过程中,同事发现,当使用多文档合并输出pdf时,会发生错误“The type initializer for 'SkiaSharp.SKAbstractManagedStream' threw an exception”。

    百度有说到aspose的.net core版本会使用SkiaSharp来处理图像,SkiaSharp是微软官方用于在.net core下进行图像处理的中间件。而在centos环境下报错的“原因是linux下skiasharp依赖libSkiaSharp.so,而如果系统中没有libSkiaSharp.so,就会报这个错”。而我们发布的安装包里确实没有这个文件。

    最后程序猿MM通过如下方式解决了:

    1、替换文件SkiaSharp.dll

    2、新增文件libSkiaSharp.so下载地址:https://github.com/mono/SkiaSharp/releases/tag/v1.59.3

    3、赋权限chmod77libSkiaSharp.so

    4、lddlibSkiaSharp.sotoinspectdependencies

    5、yuminstallfontconfig

    6、yuminstalllibGL

    给我们的程序猿MM手动点赞!

  • 相关阅读:
    【MySQL】mysql实现将b表某列数据填充到a表
    Java集合包(十)——Set的两个实现类
    Java集合包(七)——Map实现类之LinkedHashMap原理
    Java集合包(九)——Map实现类之TreeMap原理
    Java集合包(八)——Map实现类之 WeakHashMap 原理分析
    Java集合包(六)——Map实现类之HashMap、HashTable 原理分析
    Java集合包(五)——Map接口及其子接口、抽象类
    Java集合包(四)——List实现类之LinkedList与Stack原理分析
    Java集合包(三)——List实现类之ArrayList与Vector原理分析
    Java集合包(二)——Collection接口及其子接口、抽象类 原理分析
  • 原文地址:https://www.cnblogs.com/coldlight/p/13051051.html
Copyright © 2011-2022 走看看