zoukankan      html  css  js  c++  java
  • .net core 部署到windows服务上的方法

    
    

    前言

    Net core 项目部门在Windows有很多种方式,大致有以下几种,

    1. dotnet 命令,
    2. iiswindowshosts),
    3. 一些开源的应用容器(docker
    4. 基于一些exe 程序,微软官网上案例
    5. Nssm 搭建windows服务

    其中优劣对比在这不进行累述。我今天是把它搭建到windows服务上的,这种方式对于我们现有dotnet来说相对美观(一个黑框框,一个看不到),电脑重启可以自动重启。

    1.实现

    1.1.下载nssm

    官网http://www.nssm.cc/,下载地址http://www.nssm.cc/download 

    1.2.搭建windows 服务

    找到文件夹下建立的Install.bat 点击运行弹出操作窗体。

    Install.bat内容:

    %~d0
    cd %~dp0
    nssm install NPSWebCoreService
    PAUSE

    Path选择系统运行bat----C:NpsCoreWeb1run.bat

    ps:因为我们系统中要特殊处理所以直接执行了bat。此内容正常是填写C:Program Filesdotnetdotnet.exe. 因为要执行dotnet命令,我这些操作实在bat中执行的。

    Startup directorybat 所在目录不用改变

    ps:发布项目文件夹的地址。

    Arguments为空

    ps:项目运行dll:

    Service name我写在install.bat 批处理里面了,不要改变,因为代码中重启服务我这是写死的。

    ps:创建线管名称即可,即windows 服务名称。

    然后点击Install service按钮就完成了部署。

    注:红色字体为是一般处理方式,非红色是我们系统中处理的方式

    1.2.3 启动服务

    让后输入网站就可以访问了

    3. Nssm

    3.1.输入nssm 了解其命令行

    3.2.官网http://www.nssm.cc/usage

    4. 针对与咱们系统的问题的处理方案

    4.1. 日志问题,nssm path 文件运行bat 不要运行dotnet.exe. Log4net 配置问题。

    4.2. Office 转换pdf 问题,windows servers 2008 服务器缺少com组件缺少窗口,我在程序中增加了相关代码,如果没有权限请手动创建(服务器2008 r2 ,2016都能创建)

    https://blog.csdn.net/wyzlwyzl/article/details/48686483

    4.3.数据库备份重启服务问题,改为重启windows服务,所以请用上面的install.bat运行不要,改变Service name。

    重启服务代码:

     try
     {
        ServiceController service = new ServiceController("NPSWebCoreService");
        if (service.Status == ServiceControllerStatus.Running)
           {
            service.Stop();
            service.WaitForStatus(ServiceControllerStatus.Stopped);
           }
       service.Start();
       service.WaitForStatus(ServiceControllerStatus.Running);
      }
      catch (Exception){}

    4.4.netcoreweb要基于mysql 服务问题,担心再启服务器的时候,mysql和windows 服务启动顺序的问题,我在启动bat 中怎么了判断mysql服务是否启动的判断。

    bat 内容:

    @echo off
    
    SETLOCAL enabledelayedexpansion
    rem 关闭自动输出
    :begin
    
    for /f "skip=3 tokens=4" %%i in ('sc query MySQL') do set "zt=%%i" &goto :next
    :next
    if /i "%zt%"=="RUNNING" (
        echo 已经发现该服务在运行。
    ) else (
        net start MySQL80
        echo 已经发现该服务在运行1。
    )
    
    rem 接收输入
    rem 输出得到的输入信息
    echo 启动NPSWebCore
    
    dotnet ./NPSWebCore.dll
    
    @echo 启动结束
    exit
  • 相关阅读:
    我们可以用SharePoint做什么
    HTML <!DOCTYPE> 标签
    一种支持任意尺寸的图片滑动(上下左右滑动)效果
    CSS选择器
    用css截取字符 css排版隐藏溢出文本
    Web前端行业的了解
    java07课堂作业
    设计模式原型模式
    设计模式建造者
    设计模式抽象工厂
  • 原文地址:https://www.cnblogs.com/wyl1924/p/11506028.html
Copyright © 2011-2022 走看看