如何将Asp.net Core站点部署到CentOS

我们要想在linux系统中运行asp.net core程序,有两种方式:

  1. 直接部署在linux系统中
  2. 通过docker镜像部署在linux系统中

今天就来看下,如何直接把asp.net core应用站点部署到CentOS中!

安装.NET Core SDK

添加微软包地址到rpm(安装升级RPM包)

#其中i表示安装,v表示显示安装过程,h表示显示进度,U是表示升级包rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

更新rpm包

rpm update

 检查net core版本,更新完以后,默认会安装最新版的NET Core SDK,可以通过以下命令查看版本

dotnet --info

手动安装.net core sdk

yum install dotnet-sdk-3.1

 发布asp.net core到linux系统

asp.net core程序发布到本地文件夹

通过visual studio 发布菜单,将asp.net core应用程序发布到本地应用程序文件夹。

选择linux x64环境,前面已经安装了SDK,建议直接框架依赖。

默认是保存到Release下的publish目录里面,发布后可以直接点击链接导航到目标文件夹。

  • 上传到linux系统

通过XShell,将文件上传到CentOS中的/data/sites/yourapp目录下,其中yourapp可以自己随便命名和创建。

//递归创建目录 -p 表示递归创建mkdir -p /data/sites/yourapp

XShell上点击新建传输,直接将windows文件夹中的文件拖动到linux文件夹中即可。

如果上传不成功,需要给文件夹设置权限

sudo mkdir -p /data/sites/yourapp
// 修改权限为当前登录用户,否则无法上传
sudo chown -R 用户:用户组 /data
  • 启动应用程序

文件上传上去后,我们进入的Linux系统中,先切换目录到/data/sites/yourapp,再通过dotnet yourapp.dll命令来启动应用程序。

# cd /data/sites/yourapp
//如果当前用户权限不足,在前面加 sudu 提权
# dotnet yourapp.dll

如果我们执行命名后,提示如下界面,表示服务启动成功

// 主机环境:Production
Hosting environment: Production
// 根目录
Content root path: /data/sites/yourapp
// 侦听地址和端口
Now listening on: http://0.0.0.0:5100
// 提示关闭技巧,Ctrl+C 可以关闭此主机
Application started. Press Ctrl+C to shut down.

yourapp 可自行重命名成自己的应用程序启动文件名

  • 将应用程序修改成常驻服务

前面通过命名启用站点的方式,很容易被关闭,只要控制台被关闭,服务就会被关闭。而且运行在控制台模式下,无法执行其它操作。

接下来我们把它修改成常驻服务:

定位到文件夹 /etc/systemd/system,输入命令

//创建dotnet寄宿服务配置文件kestrel-dotnet.service,并进入编辑状态
sudo vi kestrel-dotnet.service// 按 i 将编辑器转换为输入模式
// 将以下内容 copy 到当前编辑器中
[Unit]
Description=Example .NET Web Site running on Centos[Service]
WorkingDirectory=/data/sites/yourapp
ExecStart=/usr/bin/dotnet yourapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false[Install]
WantedBy=multi-user.target// 按 esc 键推出编辑模式,输入命令 :wq! 保存并退出

执行以上命令后,我们还需要注册和启动服务

// 注册服务
sudo systemctl enable kestrel-dotnet.service
// 启动服务
sudo systemctl start kestrel-dotnet.service

以上命令执行完成后,我们就完成了常驻服务了。

这个时候,我们可以用浏览器打开我们刚部署的站点,如:http://192.168.1.110:5100。

如果可以正常访问就表示部署完成了。如果不能正常访问,我们可以通过以下几种方式来判断服务是否正常。

外部浏览器无法访问服务排查方法

  • 查看服务是否正在运行
//服务未启动,外部肯定无法访问服务器,需要查看服务是否在线
//通过以下命令,查看`kestrel-dotnet.service`是否存在,如果不存在则重启服务
//查看`kestrel-dotnet.service`是否存在# systemctl | grep running//如果不存在,启动服务
# systemctl start kestrel-dotnet.service
  • 查看端口是否正在监听
//如果服务存在,但是应用程序监听错误,也会导致外部无法访问
//查看本机的监听端口是否正常开启,如果没有正常开启,检查站点服务是否启动异常
# netstat -nao
  • 查看本地是否可访问
//先排查本机服务是否能正常访问,如果本机能正常访问,表示本地服务正常。那就需要从其它因素考虑原因。
//尝试请求服务,如果有响应,表示服务正常
# curl http://192.168.1.110:5100
  • 查看端口是否添加到防火墙白名单
//如果端口没有对外暴露,外部应用程序是无法访问的。这种情况,就是本机能正常访问,而外部无法访问很常见的因素
//检查防火墙对外暴露端口,是否包含自己部署的应用程序端口号
# firewall-cmd --zone=public --list-ports
//添加端口到白名单
# firewall-cmd --add-port=5100/tcp
//添加成功后,再重新访问,查看请求是否正常

以上就是将asp.net core部署到linux系统中的过程,我们终于可以真正体验跨平台的乐趣了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】从C语言到C++学习指南

如果你也是从C语言一路过来的,那么请一起看下去吧! 文章目录 面型对象程序设计C基础C和C一些语法区别C在非对象方面对C语言的扩充C的一些标准(兼容旧标准) 首先,在C的学习中,我们要时刻清醒一点&#xff1…

【FPGA开发】Vivado自定义封装IP核,绑定总线

支持单个文件的封装、整个工程的封装,这里用单个文件举例。 在文件工程目录下,自建一个文件夹,里面放上需要封装的verilog文件。 选择第三个,指定路径封装,找到文件所在目录 取个名,选择封装IP的路径 会…

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…

深入理解 MySQL 锁机制:分类、实现与优化

在高并发的数据库应用中&#xff0c;锁机制是保障事务在操作数据库时数据一致性和完整性的重要工具。MySQL 提供了多种类型的锁&#xff0c;不同的存储引擎和场景下的实现各具特点。本篇文章将详细介绍 MySQL 锁的分类、实现&#xff08;主动与被动&#xff09;以及优化策略。 …

前端-Git

一.基本概念 Git版本控制系统时一个分布式系统&#xff0c;是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景&#xff1a;多人开发管理代码&#xff1b;异地开发&#xff0c;版本管理&#xff0c;版本回滚。 Git 的三个区域&a…

QT配置文件详解

TEMPLATElib TEMPLATE变量用于指定项目模板类型&#xff0c;其值可以是以下几种&#xff1a; app&#xff1a;建立一个应用程序的makefile&#xff0c;这是默认值。lib&#xff1a;建立一个库的makefile。vcapp&#xff1a;建立一个应用程序的Visual Studio项目文件。vclib&a…

深入浅出摸透AIGC文生图产品SD(Stable Diffusion)

hihi,朋友们,时隔半年(24年11月),终于能腾出时间唠一唠SD了🤣,真怕再不唠一唠,就轮不到SD了,技术更新换代是在是太快! 朋友们,最近(24年2月)是真的没时间整理笔记,每天都在疯狂的学习Stable Diffusion和WebUI & ComfyUI,工作实在有点忙,实践期间在飞书上…

Maven 如何配置忽略单元测试

在使用 Maven 进行项目构建时&#xff0c;有时您可能希望跳过测试阶段。 这在确保代码更改不影响测试结果或需要快速部署项目的情况下特别有用。 Maven 提供了多种方法来在构建过程中跳过测试。 为什么跳过测试&#xff1f; 加速构建&#xff1a;对于具有大量测试用例的大项…

面试(十一)

目录 一.IO多路复用 二.为什么有IO多路复用机制? 三.IO多路复用的三种实现方式 3.1 select select 函数接口 select 使用示例 select 缺点 3.2 poll poll函数接口 poll使用示例 poll缺点 3.3 epoll epoll函数接口 epoll使用示例 epoll缺点 四. 进程和线程的区别…

HCIP——堆叠技术实验配置

目录 一、堆叠的理论知识 二、堆叠技术实验配置 三、总结 一、堆叠的理论知识 1.1堆叠概述&#xff1a; 是指将两台交换机通过堆叠线缆连接在一起&#xff0c;从逻辑上变成一台交换设备&#xff0c;作为一个整体参与数据的转发。 1.2堆叠的基本概念 堆叠系统中所有的单台…

【GPT】力量训练的底层原理?

详细解读力量训练的每一个底层原理 力量训练之所以有效&#xff0c;是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析&#xff0c;并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力&#xff08;Stress&#xff09;&#xff1a;指训练带来的负…

快速上手:如何开发一个实用的 Edge 插件

在日常浏览网页时&#xff0c;背景图片能够显著提升网页的视觉体验。如果你也想为自己的浏览器页面添加个性化背景图片&#xff0c;并希望背景图片设置能够持久保存&#xff0c;本文将介绍如何通过开发一个自定义Edge插件来实现这一功能。我们将涵盖保存背景设置到插件选项页&a…

介绍一下atol(arr);(c基础)

hi , I am 36 适合对象c语言初学者 atol(arr)&#xff1b;是返回整数(long型)&#xff0c;整数是arr数组中字符中数字 格式 #include<stdio.h> atol(arr); 返回值arr数组中的数字 未改变arr数组 #include<stdio.h> //atol(arr); 返 <stdlib> int main…

每日十题八股-2024年11月27日

1.类型互转会出现什么问题吗&#xff1f; 2.为什么用bigDecimal 不用double &#xff1f; 3.装箱和拆箱是什么&#xff1f; 4.Java为什么要有Integer&#xff1f; 5.Integer相比int有什么优点&#xff1f; 6.那为什么还要保留int类型&#xff1f; 7.说一下 integer的缓存 8.怎么…

Python的排序算法

一、算法 1.1 算法概念 算法就是计算机解决问题的方法或者步骤 程序 数据结构 算法 1.2 算法的特性 1】确定性&#xff1a; 算法的每条语句具有明确的意思&#xff0c;不能模棱两可 2】有穷性&#xff1a;在执行一定的时间后&#xff0c;能自动结束算法 3】输入&#…

npm install -g@vue/cli报错解决:npm error code ENOENT npm error syscall open

这里写目录标题 报错信息1解决方案 报错信息2解决方案 报错信息1 使用npm install -gvue/cli时&#xff0c;发生报错&#xff0c;报错图片如下&#xff1a; 根据报错信息可以知道&#xff0c;缺少package.json文件。 解决方案 缺什么补什么&#xff0c;这里我们使用命令npm…

RuoYi排序

RuoYi框架提供了多种实现排序的方法&#xff0c;以满足不同场景下的需求。这里简要介绍几种常见的排序实现方式&#xff1a; 1. 后端排序 1.1 使用startPagePlus方法 RuoYi框架中&#xff0c;可以通过对BaseController进行扩展来实现更灵活的分页与排序功能。例如&#xff0…

在windows操作系统上,用git与github账户连接

一、环境准备 1.1 git软件 1.2 github账号 1.3 创建一个项目目录&#xff0c;比如 D:\project\gitproject 二、开始操作 1. 进入项目目录下&#xff0c;右键&#xff0c;如图&#xff0c;打开git bash命令行 2. 在命令行输入以下三个命令 $ git config --global user.name &quo…

视频监控实现画面缩放功能

文章目录 概要一、功能说明二、核心实现代码三、技术细节 概要 在视频监控系统中&#xff0c;经常需要查看视频画面中的细节。通过实现区域放大、滚轮缩放和拖拽平移等功能&#xff0c;可以让用户更方便地观察视频细节。本文介绍如何在 Windows 系统下实现这些交互功能。 一、…

鸿蒙本地模拟器 模拟TCP服务端的过程

鸿蒙模拟器模拟TCP服务端的过程涉及几个关键步骤&#xff0c;主要包括创建TCPSocketServer实例、绑定IP地址和端口、监听连接请求、接收和发送数据以及处理连接事件。以下是详细的模拟过程&#xff1a; **1.创建TCPSocketServer实例&#xff1a;**首先&#xff0c;需要导入鸿蒙…