欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-07-19
【.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=simpleUser=rootGroup=rootExecStart=/usr/share/dotnet/dotnet /projects/wwwroot/code_generators/publish/NswagCodeGenerators.dllRestart=always# Restart service after 10 seconds if the dotnet service crashes:RestartSec=10SyslogIdentifier=dotnet-exampleEnvironment=ASPNETCORE_ENVIRONMENT=ProductionEnvironment=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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。