如何部署ASP.NET Core 到Linux服务器

我们开发的最终目的,是将开发后的东西发布网络上,以便自己及其他人使用。

本篇博客介绍如果在 linux 上部署 ASP.NET Core应用,使用nginx+systemd 来管理我们的应用。

准备

  • Ubuntu 20.04
  • Nginx
  • .NET SDK 或 Runtime

安装

配置

配置Nginx

配置文件

nginx默认配置会加载/etc/nginx/sites-enabled中的网站,通常我们并不会在该目录下直接配置网站,而只是定义需要生效网站的软链接,实际定义文件通常在/etc/nginx/sites-available目录去定义。

cd /etc/nginx/sites-availabe
sudo vim my-web

以为下nginx 的配置示例

server {
listen 80;
server_name _;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

[!TIP]

proxy_pass,意思是用户访问先经过nginx,然后nginx会路由到 proxy_pass 地址,这个地址也就是asp.net core 服务实际运行使用的地址.

让配置文件生效

我们已经在/etc/nginx/sites-available下创建了 my-web配置文件,现在来创建软链接。

cd  /etc/nginx/sites-enable
sudo ln -s /etc/nginx/sites-available/my-web ./

接下来我们可以使用nginx -t来测试配置文件是否正确。

最后使用配置文件生效,可使用nginx -s reload来重载nginx的配置,以使新站点配置生效。

sudo nginx -t
sudo nginx -s reload

配置服务以自动启动

systemctl 命令用于管理“服务”或“守护程序”。 守护程序的概念与 Windows 服务的概念类似。 当系统启动时,可以自动重启此类服务。

我们需要将我们的应用配置成服务,这样就可以自动运行。

创建服务文件

/etc/systemd/system/目录下创建服务文件,

cd /etc/systemd/system/
sudo vim dusi.service

内容如下:

[Unit]
Description=dusi web site [Service]
WorkingDirectory=/var/dusi/
ExecStart=/usr/bin/dotnet /var/dusi/Http.API.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dusi-log
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install]
WantedBy=multi-user.target

以下是此内容的一些关键方面:

  • WorkingDirectory 是发布应用程序的目录。
  • ExecStart 是启动应用程序的实际命令,dotnet 需要指定到使用的dll文件
  • Restart=always 果由于某种原因(无论是手动还是由于崩溃)而停止,则始终会启动此过程。
  • RestartSec=10 进程停止后,将在经过 10 秒后启动。
  • SyslogIdentifier 很重要。 它表示“系统日志标识符”。 有关守护程序的信息记录在此名称下的系统日志中。 还可以使用此标识符查找进程的 PID。
  • User 是管理服务的用户。 它应存在于系统中,并具有相应的应用程序文件所有权。
  • Environment是设置应用运行时使用的环境变量,可以在设置任意数量的环境变量。

让服务文件生效

如同以上nginx配置,我们定义了文件,同时也需要创建软链接,以让系统使用它,不过服务我们可以通过命令来创建软链接.

sudo systemctl enable dusi.service

启动服务并查看状态

使用systemctl start启动服务,然后通过systemctl status命令查看服务运行状态。

sudo systemctl start stock.service
sudo systemctl status stock.service

部署

部署指将你的文件上传到服务器上,请注意上传的路径最终要和上面服务配置文件中的路径对应。

上传文件到服务器有很多种方式,这里我们使用scp手动传输我们的文件,当然你可以配置其他方式或使用CICD。

示例命令:

scp /my/publish/*  user@10.10.10.1/var/dusi/

[!NOTE]

Windows系统Powershell(非Windows Powershell)也可以使用scp命令,你并不需要安装额外的软件。

其他参考

查看日志

在linux 中,你可以通过journalctl命令查看日志,示例:

journalctl -fu dusi.service

参考资料

如何部署ASP.NET Core到Linux服务器的更多相关文章

  1. 以self-contained方式在Linux上部署ASP.NET Core站点

    今天准备将一个在Windows上用VS2015开发的ASP.NET Core程序部署到阿里云Linux服务器上,部署时发现这台服务器是内网服务器,无法直接安装.NET Core SDK,于是想到尝试用 ...

  2. Windows 服务器部署 asp.net core

    踩坑日记与 Windows 服务器部署 asp.net core 指南. 准备 操作系统:Windows Server 2008 R2 或更高版本 文件: Microsoft Visual C++ 2 ...

  3. linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库

    1.ASP.NET Core 是一个跨平台的高性能开源框架,可以部署到Linux上,那项目部署在Linux上有哪些好处呢? 1.linux硬件需求小,大部分版本免费,成本低. 2.linux的用户管理 ...

  4. Linux+Nginx+Supervisor部署ASP.NET Core实操手册

    一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...

  5. 使用Linux、Nginx和Github Actions托管部署ASP.NET Core 6.0应用

    使用Linux.Nginx和Github Actions托管部署ASP.NET Core 6.0应用 前言 本文主要参考微软这篇文档而来 Host ASP.NET Core on Linux with ...

  6. 在Linux环境下使用Jexus部署ASP.NET Core

    关于如何在Linux中添加ASP.NET Core运行时环境请参考我的上一篇文章,本文章将不再做赘述. 本文章运行环境如下:  (1) 安装独立版Jexus 本教程安装的是独立版的Jexus,独立版的 ...

  7. Jexus + Kestrel 部署 asp.net core

    结合Jexus + Kestrel 部署 asp.net core 生产环境 ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依 ...

  8. CentOS 7部署ASP.NET Core应用程序

    看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...

  9. 【转载】CentOS 7部署ASP.NET Core应用程序

    看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...

  10. Centos7安装jexus,部署asp.net core,asp.net mvc

    什么是Jexus 官网解释:https://www.jexus.org/ Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,Jexus Web Service,简称JWS,以支持AS ...

随机推荐

  1. openstack-train-ovs-ceph 部署

    第一章 Openstack简介 https://baike.baidu.com/item/OpenStack/342467?fr=aladdin Openstack框架图![img](file:/// ...

  2. 什么是慢SQL且如何查看慢SQL

    什么是慢 SQL 且如何查看慢 SQL? 介绍 某个 SQL 执行时间超过指定时间时称为慢 SQL.我们可以查看慢 SQL,包括历史慢 SQL 以及当前慢 SQL. 查看历史慢 SQL 首先要设置 l ...

  3. 第十八篇:Django进级

    一.Django工程创建 二.Django 的 CBV和FBV 三.模板语言循环字典 四.Django基于正则表达式的URL 五.Django对应的路由名称 六.Django路由分发 七.Django ...

  4. Android 开发入门(3)

    0x05 活动 Activity (1)启停活动页面 a. 启动和结束 从当前页面跳转至新页面 startActivity(new Intent(this, [targetPage].class)) ...

  5. Spring Cloud 核心组件之Spring Cloud Zuul:API网关服务

    Spring Cloud Zuul:API网关服务 SpringCloud学习教程 SpringCloud API网关 Spring Cloud Zuul 是Spring Cloud Netflix ...

  6. EZHTTP(一键安装Nginx Apache PHP MySQL Memcached Pureftpd)安装【测试ing】

    EZHTTP(一键安装Nginx Apache PHP MySQL Memcached Pureftpd)安装 [复制链接] 本帖最后由 梁国平 于 2014-2-11 22:47 编辑 简介     ...

  7. Pytorch-tensor的激活函数

    1.激活函数 激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题.因为很多问题都不是线性的,你只有给它加入一些非线性因素,就能够让问题更好的解决. 函数1:RE ...

  8. 小白也能懂的 Nacos 服务模型介绍

    简介: 理解了 Nacos 的服务模型,也有利于我们了解 Nacos 背后的工作原理,从而确保我们正确地使用 Nacos. 作者:岛风 前言 按照目前市场上的主流使用场景,Nacos 被分成了两块功能 ...

  9. OceanBase首次阐述战略:继续坚持自研开放之路 开源300万行核心代码

    简介: 在数据库OceanBase3.0峰会上,蚂蚁集团自主研发的分布式数据库OceanBase首次从技术.商业和生态三个维度对未来发展战略进行了系统性阐述.同时,OceanBase宣布正式开源,并成 ...

  10. [ML] Tensorflow2 保存完整模型以及使用 HDF5

    将模型保存为完整的 HDF5 文件,后面可以直接加载使用: # cnblogs.com/farwish import tenforflow as tf model = tf.keras.models. ...