如何部署ASP.NET Core到Linux服务器
如何部署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服务器的更多相关文章
- 以self-contained方式在Linux上部署ASP.NET Core站点
今天准备将一个在Windows上用VS2015开发的ASP.NET Core程序部署到阿里云Linux服务器上,部署时发现这台服务器是内网服务器,无法直接安装.NET Core SDK,于是想到尝试用 ...
- Windows 服务器部署 asp.net core
踩坑日记与 Windows 服务器部署 asp.net core 指南. 准备 操作系统:Windows Server 2008 R2 或更高版本 文件: Microsoft Visual C++ 2 ...
- linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库
1.ASP.NET Core 是一个跨平台的高性能开源框架,可以部署到Linux上,那项目部署在Linux上有哪些好处呢? 1.linux硬件需求小,大部分版本免费,成本低. 2.linux的用户管理 ...
- Linux+Nginx+Supervisor部署ASP.NET Core实操手册
一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...
- 使用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 ...
- 在Linux环境下使用Jexus部署ASP.NET Core
关于如何在Linux中添加ASP.NET Core运行时环境请参考我的上一篇文章,本文章将不再做赘述. 本文章运行环境如下: (1) 安装独立版Jexus 本教程安装的是独立版的Jexus,独立版的 ...
- Jexus + Kestrel 部署 asp.net core
结合Jexus + Kestrel 部署 asp.net core 生产环境 ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依 ...
- CentOS 7部署ASP.NET Core应用程序
看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...
- 【转载】CentOS 7部署ASP.NET Core应用程序
看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...
- Centos7安装jexus,部署asp.net core,asp.net mvc
什么是Jexus 官网解释:https://www.jexus.org/ Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,Jexus Web Service,简称JWS,以支持AS ...
随机推荐
- 我为OpenHarmony 写代码,战“码”先锋第二期正式开启!
OpenAtom OpenHarmony(以下简称"OpenHarmony")问世以来,两年多时间汇聚了160万+社区用户,全球下载次数高达6300万,5.5万+次代码提交,吸引了 ...
- 新版本NOI Linux发布,支持VSCode,Code::Blocks开发C++!!!,内附下载地址。
注意VSCODE 虽然有C艹插件,但是在第一次编译的时候必须要有网络,否则用不了 我推荐还是用CODE::BLOCKS 作者10月8日补充 有些省份已经开始强制在NOIP的比赛里使用NOI Linux ...
- scala json解析到case类
有时候,需要将从json文件读取程序配置设置,并同步到定义好的一些case类中,这个时候可以使用 io.circe解析json文件,并同步文件字段到定义好的case类 case class Confi ...
- Telnet qsnctfwp
Windows 安装 Telnet 在控制面板的程序和功能中选择打开或关闭Windows功能 启用 Telnet 客户端并单击确认退出 启动终端,输入命令 telnet 打开 Telnet 客户端 在 ...
- 重新点亮shell————sed其他命令[十一]
前言 简单介绍一下其他增删查. 正文 删除命令: 例子: 插入和更改: 例子i: 例子c: 读文件和写文件: 例子r: 下一行命令: 打印: 例子: 只想输出匹配的行: 退出命令: 前面的运行效率更高 ...
- CPU性能实战分析
1.从平均负载谈起 我们每次发现线上系统变慢时,第一件事往往都会使用top或者uptime命令查看cpu的负载以及占用率,比如top命令会有下面的结果: top - 15:51:39 up 84 da ...
- 开源数据库PolarDB为什么能捕获娃哈哈的心?
简介: 在10月25日由阿里云开发者社区.PolarDB开源社区.infoQ联合举办的「开源人说」第三期--<数据库PolarDB专场>沙龙上,中启乘数科技(杭州)有限公司联合创始人唐成带 ...
- 如果千百年前有视觉AI算法,世界将会是什么样的光景呢?
视觉AI算法在近些年取得了一定的突破,被应用在了越来越多的地方,我相信距离真正的AI普及这个大目标也越来越近了.我时常在想假如古代也有视觉AI算法,那是不是很多故事的结局都将被改写?<伯乐相马& ...
- OpenKruise v1.0:云原生应用自动化达到新的高峰
简介:OpenKruise 是针对 Kubernetes 的增强能力套件,聚焦于云原生应用的部署.升级.运维.稳定性防护等领域. 云原生应用自动化管理套件.CNCF Sandbox 项目 -- Op ...
- 打通JAVA与内核系列之一ReentrantLock锁的实现原理
简介:写JAVA代码的同学都知道,JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁).其中synchronized锁是JAVA语言层面提供的能力 ...