• CentOS7部署Dotnet Core2.1


    前言

    笔者在毫无Linux部署.net core的经验下,第一次用了15分钟完成部署,第二次在生产环境用了5分钟。下文将说明如何在CentOS7下完成.NetCore2.1的部署,包括如何创建ASP.NET Core项目并将程序持久运行在Kestrel上,如何修改代码和防护墙进而使代码可以远程访问。最后也会提及生产环境使用的不同点。

    1.安装RunTime

    ASP.NET Core在Linux运行的首要条件便是需要安装Runtime。

    sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7.4/packages-microsoft-prod.rpm
    sudo yum update
    sudo yum install aspnetcore-runtime-2.1

    微软对不同的Linux发行版本(包括RHEL,Ubuntu,Debian,Fedora,CentOS,openSUSE和SLES)提供了相似的解决方案.

    如果想要在Linux做 .NET Core的开发和编译工作,那么需要同时安装 Dotnet Core SDK(SDK的安装并不是必须的,可以在开发环境编译后上传到Linux服务器),在CentOS下的指令为:

    sudo yum install dotnet-sdk-2.1

    2.创建并编译

    2.1创建MVC工程

    使用如下指令创建ASP.NET Core2.1的工程:

    dotnet new MVC -o MvcDemoApp

    2.2修改代码

    默认的情况下ASP.NET Core2.1本地启动会运行在 Kestrel服务器上,如果想要从其他电脑访问网站,则需要修改绑定。

    打开新建的工程文件中的 Program.cs 文件,修改代码如下:

    1         public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    2             WebHost.CreateDefaultBuilder(args)
    3                 .UseUrls("https://0.0.0.0:5001")
    4                 .UseStartup<Startup>();

    这样绑定的便是服务器上的所有IP,而不只是默认的 localhost。(???)

    2.3编译程序

    在终端运行如下指令:

    dotnet publish --configuration Release

    该指令所有的文件放到 /bin/Release/netcoreapp2.1/publish文件夹中。为了方便管理,我们将该目录下的文件放到Linux服务器下的 /home/RunService/MvcDemo 路径下。

    3.运行Web程序

    完成了.NET Core程序的创建和编译后,现在开始程序的部署。

    3.1直接运行程序

    最简单的是直接进入程序的根目录 /home/RunService/MvcDemo ,然后执行指令:

    dotnet CoreMvcApp.dll

    此时指令会根据代码设定将程序运行在5001端口(结束程序 Ctrl + C),打开浏览器并输入地址 http://localhost:5001/ 或者 http://0.0.0.0:5001/便可以访问web服务。

    3.2作为服务运行

    直接运行可以用来测试程序,但是每次服务器重启后,需要手动打开服务。更好的方法是将网站当作服务运行。

    创建名为 MvcDemo_Conf 的配置文件:

    sudo vi /etc/systemd/system/MvcDemo_Conf.service

    将以下命令写入打开的配置文件中

    复制代码
    [Unit]
    Description=.NET Core Test App
    
    [Service]
    WorkingDirectory=/home/long/RunService/MvcDemo
    ExecStart=/usr/bin/dotnet /home/long/RunService/MvcDemo/MvcDemoApp.dll
    Restart=always
    RestartSec=10
    SyslogIdentifier=MvcDemoApp
    User=long
    Environment=ASPNETCORE_ENVIRONMENT=Production
    
    [Install]
    WantedBy=multi-user.target
    复制代码

    黄色背景的信息需要根据自己的需要修改

     3.3配置文件

     保存服务的配置文件后,使服务可用

    sudo systemctl enable MvcDemo_Conf.service

    启动服务

    sudo systemctl start MvcDemo_Conf.service

    检查服务运行状态

    sudo systemctl status MvcDemo_Conf.service

    如果操作无误,正常的提示如下图所示

    4.设置防火墙

    如果想要在远程访问服务,需要打开防火墙的5001端口,从而其他计算机才可以远程访问。

    打开防火墙的5001端口:

    sudo firewall-cmd --add-port=5001/tcp --permanent
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all

    如果端口打开正常,则局域网内的计算机可通过地址 ip访问

    5.生产系统部署

    上例说明了如何在CentOS上配置ASP.NET Core程序,但因为Kestrel是一个很基本的web服务器,所以需要配置性能更好的IIS、Nginx或者Apache。

    正式程序可以不做步骤5,即打开防火墙的步骤。在Kestrel前置Apache服务器,Apache可以作为Kestrel的反向代理。

    这样可以通过反向代理将部分链接指向ASP.NET Core,而部分代码仍旧使用php或者java,为程序的迁移提供了便利。

    参考

    centos安装VsCode

  • 相关阅读:
    面对复杂业务,if-else coder 如何升级?
    为什么StringBuilder是线程不安全的?
    Hashmap中文解释
    mysql 5.6 5.7 8.0新特性
    数据增强,扩充数据集
    神经网络参数优化器
    缓解过拟合
    损失函数
    神经网络的复杂度&指数衰减学习率&激活函数
    GRU&实例股价预测
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/10573349.html
Copyright © 2020-2023  润新知