zoukankan      html  css  js  c++  java
  • NetCore部署到Linux

     环境:CentOS 7  防火墙状态:关闭

    1.安装SDK

    只是在Linux系统上面部署应用程序,按道理只需要安装ASP.NET Core Runtime即可。但是在进行直接通过 dotnet  xxx.dll启动程序时失败,

    所以直接安装SDK吧,里面包含runtime。

    在安装.NET之前,我们需要先注册Microsoft密钥和源,在终端里面执行下面的命令:

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    
    sudo yum install dotnet-sdk-3.1       我的项目是基于3.1 的; 所以直接安装 3.1  
    

      参考微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7

    二、部署

      1)环境安装完成以后,我们将发布好的文件上传到服务器。

    在终端里面新创建一个文件夹,用来存放我们上传的文件:

    sudo mkdir /NetCore

    如下图所示:

       2)部署: 

        方式一:直接Kestrel方式启动

    dotnet AspNetCoreDeployDemo.dll --urls http://*:5000 
    

      

    如下图所示:

    在浏览器中访问:http://ip:5000 就可以正常访问

    PS

      如果防火墙是开启的,需要把5000端口添加到防火墙中:

    firewall-cmd --zone=public --add-port=5000/tcp --permanent

    但是这种方式有弊端,就是当前终端关闭了,或者按了ctrl+C ,当前站点会无法访问。 所以这种方式不推荐。

         方式二:Nginx 通过 进程守护 Supervisor 方式

          前提:

              1.安装Nginx:https://www.cnblogs.com/huangshuqiang/p/15515000.html

              2.安装supervisor 并将core项目添加进守护进程:https://www.cnblogs.com/huangshuqiang/p/15524132.html

        1)找到nginx的位置,进入,可以看到里面有conf文件夹:

       2)进入conf文件夹,编辑文件nginx.conf 文件:

       3)修改server中对应的内容,如图:

     就可以将5000端口通过nginx监听80端口的方式进行访问。

           通过访问:http://ip 的方式就可以访问对应的netcore项目。

    扩展 1:将supervisor 通过nginx代理。

    只需要在nginx.conf中server节点添加一个location即可。

     注意,箭头标识处的两个  /  符号一定要加。访问站点时,站点的显示样式会有问题。访问方式:http://ip/supervisor  。

    扩展 2: 将netcore项目做成服务。

    前面通过将项目添加进supervisor 以进程守护的方式保证项目的运行,还有通过将项目做成服务的方式来保证项目的运行。

    置 .NET Core 开机启动

    创建服务文件

    vim /etc/systemd/system/demoapp.service

    写入如下内容

    [Unit]
    Description=Demo .NET Web Application running on CentOS 7
    
    [Service]
    WorkingDirectory=/home/publish/demo
    ExecStart=/usr/bin/dotnet /home/publish/demo/Linux.Web.dll
    Restart=always
    RestartSec=20
    SyslogIdentifier=dotnet-demo
    User=nginx
    Environment=ASPNETCORE_ENVIRONMENT=Production
    
    [Install]
    WantedBy=multi-user.target

    设置开机启动

    systemctl enable demoapp.service

    开启服务,并查询状态

    systemctl start demoapp.service
    systemctl status demoapp.service

    其实跟做成supervisor的方式目的一样,都是保证netcore项目的实时运行。

    参考:

    https://www.cnblogs.com/dotnet261010/p/12169294.html

    https://www.jianshu.com/p/b1f573ca50c7

    https://www.cnblogs.com/weiwxg/p/11995577.html

  • 相关阅读:
    金色酒类企业dedecms模板
    hdu 1533 最小费用最大流
    计算几何算法
    博弈总结
    图搜索总结
    一般图匹配题集 转自夏天的风
    极大极小过程题集 转自夏天的风
    dancing links 题集转自夏天的风
    网络流题集转自夏天的风
    nyoj 547 优先队列
  • 原文地址:https://www.cnblogs.com/huangshuqiang/p/15525899.html
Copyright © 2011-2022 走看看