栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

.NET Core项目在Linux服务器部署步骤和注意事项

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.NET Core项目在Linux服务器部署步骤和注意事项

【.NET Core & Linux】项目部署步骤和注意事项

概述

跨平台项目部署守护进程的使用

概述

在开发过程中,可以通过Kestre服务器 or IIS启动项目,进行本地访问。但是想让项目在外网被访问到,就需要把项目部署到能被外网访问到的服务器上,下面就分享下.net core项目在linux服务器上的部署。

跨平台项目部署

服务器使用的是腾讯云轻量应用服务器,Linux系统 ,版本:CentOs 7.6,部署的项目版本为.NET Core 3.1

    发布需要部署到服务器上的项目, 填写发布选项并进行项目发布

    根据发布的目标位置,找到相应打包后的项目文件夹

    使用工具FinalSell or(xshell、sftp)打开Linux服务器;
    (没有服务器的小伙伴可以到腾讯云、阿里云、百度云进行购买)

    安装.NET Core的依赖环境

    注册Microsoft密钥
    sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

    更新yum库
    sudo yum update

    安装 .NET Core 运行时
    sudo yum -y install aspnetcore-runtime-3.1

    安装 .NET Core SDK 运行时
    sudo yum -y install dotnet-sdk-3.1

     若需要部署高版本项目的小伙伴可以选择对应版本的runtime和sdk
    

    查看Dotnet 信息
    dotnet --info

    查看Dotnet 版本
    dotnet --version

    若安装yum过程中,遇到问题or错误可以查看该文章:
    重装yum: https://blog.csdn.net/homewm/article/details/80642851
    

    将压缩包上传到Linux服务器中,并进行解压:unzip publish.zip

    解压后,运行项目:dotnet NswagCodeGenerators.dll

    项目运行正常,nice!
    访问的端口号需要进行开放,不然会被防火墙拦截,导致无法访问

守护进程的使用

我们关闭FinalShell后,会发现原本运行正常的项目无法访问,因为在我们断开linux的链接时,把当前的进程进行的了清除。所以我们为了保证项目的稳定性,需要使用Linux的守护进程,保证我们的项目运行.

Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等…

    创建服务文件
    sudo nano /etc/systemd/system/KestrelSer.service

    文件代码

    [Unit]
    Description=Kestrel running on CentOS
    [Service]
    WorkingDirectory=/projects/wwwroot/code_generators/publish/
    Type=simple
    User=root
    Group=root
    ExecStart=/usr/share/dotnet/dotnet /projects/wwwroot/code_generators/publish/NswagCodeGenerators.dll
    Restart=always
    # Restart service after 10 seconds if the dotnet service crashes:
    RestartSec=10
    SyslogIdentifier=dotnet-example
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    [Install]
    WantedBy=multi-user.target
    

    按CTRL+O保存,CTRL+X退出

Linux 具有区分大小写的文件系统。 将 ASPNETCORE_ENVIRonMENT 设置为“生产”会导致搜索配置文件 appsettings.Production.json,而不是 appsettings.production.json早期版本的dotnet安装的是/usr/bin/下,因此环境变量也就在该目录,后期的版本则安装到了/usr/share/dotnet下如果通过控制台直接进行复制,代码不会进行换行,因为代码中有注释,所以文件会无法运行成功,直接打开KestrelSer.service文件,进行复制即可。

    保存文件并启用服务(按需选择即可)
    systemctl enable KestrelSer.service # 将服务设置为每次开机启动
    systemctl start KestrelSer.service # 服务立即启动 下次不启动
    systemctl enable --now KestrelSer.service # 立即启动且每次重启也启动查看守护进程的运行状态
    systemctl status KestrelSer.service查看日志
    sudo journalctl -fu KestrelSer.service最后断开连接,看看效果

参考文章:
Linux部署.NET Core: https://www.cnblogs.com/fancunwei/p/9308953.html
重装yum: https://blog.csdn.net/homewm/article/details/80642851
dotnet安装目录:https://blog.csdn.net/yedajiang44/article/details/121848792

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/729786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号