首页 > 系统相关 >如何部署ASP.NET Core到Linux服务器

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

时间:2023-05-19 11:22:53浏览次数:41  
标签:Core ASP dusi nginx sudo etc proxy Linux NET

# 如何部署ASP.NET Core 到Linux服务器 我们开发的最终目的,是将开发后的东西发布网络上,以便自己及其他人使用。 本篇博客介绍如果在 linux 上部署 ASP.NET Core应用,使用nginx+systemd 来管理我们的应用。 ## 准备 - Ubuntu 20.04 - Nginx - DOTNET SDK 或 Runtime ## 安装 - [安装Nginx](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/) - [安装.NET]() ## 配置 ### 配置Nginx #### 配置文件 nginx默认配置会加载`/etc/nginx/sites-enabled`中的网站,通常我们并不会在该目录下直接配置网站,而只是定义需要生效网站的软链接,实际定义文件通常在`/etc/nginx/sites-available`目录去定义。 ```bash cd /etc/nginx/sites-availabe sudo vim my-web ``` 以为下nginx 的配置示例 ```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`配置文件,现在来创建软链接。 ```bash cd /etc/nginx/sites-enable sudo ln -s /etc/nginx/sites-available/my-web ./ ``` 接下来我们可以使用`nginx -t`来测试配置文件是否正确。 最后使用配置文件生效,可使用`nginx -s reload`来重载nginx的配置,以使新站点配置生效。 ```bash sudo nginx -t sudo nginx -s reload ``` ### 配置服务以自动启动 `systemctl` 命令用于管理“服务”或“守护程序”。 守护程序的概念与 Windows 服务的概念类似。 当系统启动时,可以自动重启此类服务。 我们需要将我们的应用配置成服务,这样就可以自动运行。 #### 创建服务文件 在`/etc/systemd/system/`目录下创建服务文件, ```bash cd /etc/systemd/system/ sudo vim dusi.service ``` 内容如下: ```ini [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`配置,我们定义了文件,同时也需要创建软链接,以让系统使用它,不过服务我们可以通过命令来创建软链接. ```bash sudo systemctl enable dusi.service ``` ### 启动服务并查看状态 使用`systemctl start`启动服务,然后通过`systemctl status`命令查看服务运行状态。 ```bash sudo systemctl start stock.service sudo systemctl status stock.service ``` ## 部署 部署指将你的文件上传到服务器上,请注意上传的路径最终要和上面服务配置文件中的路径对应。 上传文件到服务器有很多种方式,这里我们使用`scp`手动传输我们的文件,当然你可以配置其他方式或使用CICD。 示例命令: ```powershell scp /my/publish/* [email protected]/var/dusi/ ``` > [!NOTE] > Windows系统`Powershell`(非Windows Powershell)也可以使用`scp`命令,你并不需要安装额外的软件。 ## 其他 ### 查看日志 在linux 中,你可以通过`journalctl`命令查看日志,示例: `journalctl -fu dusi.service` ### 参考资料 - [使用 Nginx 在 Linux 上托管 ASP.NET Core](https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-6.0&tabs=linux-ubuntu) - [在 Linux 中创建和配置 ASP.NET Core应用程序](https://learn.microsoft.com/zh-cn/troubleshoot/developer/webapps/aspnetcore/practice-troubleshoot-linux/2-1-create-configure-aspnet-core-applications)

标签:Core,ASP,dusi,nginx,sudo,etc,proxy,Linux,NET
From: https://www.cnblogs.com/msdeveloper/p/17414367.html

相关文章

  • 如何在Linux 上安装JDK
    ​  在Linux上安装JDK的步骤如下:下载JDK首先需要从Oracle官网下载JDK安装包,可以根据实际需求选择不同版本的JDK。解压JDK将下载的JDK安装包解压到指定的目录创建多级目录[root@wei01~]#mkdir/root/02InstallStorage/JDK/newest-p1.切换到JDK目录[root@8x......
  • 如何在Linux 上安装JDK
    ​  在Linux上安装JDK的步骤如下:下载JDK首先需要从Oracle官网下载JDK安装包,可以根据实际需求选择不同版本的JDK。解压JDK将下载的JDK安装包解压到指定的目录创建多级目录[root@wei01~]#mkdir/root/02InstallStorage/JDK/newest-p1.切换到JDK目录[root@8x......
  • 使用Python脚本修改Linux用户的密码
    直接上代码使用python,通过系统默认的passwd命令,修改用户Tom的密码为NewPasswordimportsubprocess#Gettheusernameandnewpasswordfromtheuserusername="Tom"new_password="NewPassword"#Usethe'passwd'commandtoupdatethepassword#Th......
  • HTB ACADEMY-Stack-Based Buffer Overflows on Linux x86 WRITE UP
    WewereabletogainSSHaccesstoaLinuxmachinewhosepasswordwasreusedbyanothermachineduringourpenetrationtest.Onthismachine,wehaveastandarduser"htb-student"whocanleaveamessagetotheadministratorusingaself-written......
  • Linux系统学习须牢记这几点
    工欲善其事须先利其器,想了解Linux技术,先要有一套教学平台,请教同行或者老师来为我们解答,当然也可以下载Cygwin进行学习。但是自主学习的这一过程很困难,因为没有别人的帮助,我们或许会感到迷茫,也会出现不知所措的情况,所以这个问题也经常在困扰我。我之前尝试过下载这个软件,但是整整......
  • Linux系统学习须牢记这几点
    工欲善其事须先利其器,想了解Linux技术,先要有一套教学平台,请教同行或者老师来为我们解答,当然也可以下载Cygwin进行学习。但是自主学习的这一过程很困难,因为没有别人的帮助,我们或许会感到迷茫,也会出现不知所措的情况,所以这个问题也经常在困扰我。我之前尝试过下载这个软件,但是整整......
  • Linux系统学习须牢记这几点
    工欲善其事须先利其器,想了解Linux技术,先要有一套教学平台,请教同行或者老师来为我们解答,当然也可以下载Cygwin进行学习。但是自主学习的这一过程很困难,因为没有别人的帮助,我们或许会感到迷茫,也会出现不知所措的情况,所以这个问题也经常在困扰我。我之前尝试过下载这个软件,但是整整......
  • Linux 网络设置
    目录一、网卡1.ens33网卡2.查询网卡信息二、路由表1.查看路由表2.添加静态路由(1)临时添加静态路由(2)永久添加静态路由三、查看端口信息1.netstat命令2.ss命令四、检测网络联通性1.ping命令2.traceroute命令五、DNS域名解析1.正向解析nslookup2.显示网站的详细信息d......
  • Linux系统学习须牢记这几点
    工欲善其事须先利其器,想了解 技术,先要有一套教学平台, 请教同行或者老师来为我们解答,当然也可以下载Cygwin 进行学习。但是自主学习的这一过程很困难,因为没有别人的帮助,我们或许会感到迷茫,也会出现不知所措的情况,所以这个问题也经常在困扰我。我之前尝试过下载这个软件,但是整整......
  • Linux开发
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......