gpt4 book ai didi

linux - 将 ASP.NET Core 从 Visual Studio 发布到 Linux

转载 作者:IT王子 更新时间:2023-10-29 00:54:32 24 4
gpt4 key购买 nike

我能否在 Visual Studio 中编辑 ASP.NET Core 应用程序并部署到 Linux 服务器(例如 Ubuntu)?

最佳答案

您可以在 ASP.NET CORE 文档中查看此页面 - https://learn.microsoft.com/en-us/aspnet/core/publishing/linuxproduction

在 Scott Hanselman 的这篇博客文章中也可以找到一个很好的例子 - https://www.hanselman.com/blog/PublishingAnASPNETCoreWebsiteToACheapLinuxVMHost.aspx

我目前使用自己的批处理脚本进行部署,具体步骤如下:

  1. 使用 dotnet publish 命令发布应用。
  2. 使用 Powershell 压缩所有内容。
  3. 使用 pscp 将 zip 复制到 Linux 机器 - https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter5.html
  4. 使用 Windows Bash 连接到 Linux 机器(您需要 Windows 10 周年更新才能使用此功能)。
  5. 在 Linux 机器上调用解压缩命令 - 需要先安装在那里。
  6. 在 Linux 机器上重新启动主管服务。

编辑:我已经按照 Andrew Basarab 的要求添加了我发布原始答案时使用的脚本版本。 .考虑到我当时的脚本知识不多,我确信它需要一些重构。请谨慎使用:

@echo off

set PrivateKeyLocation="C:\fakepath\fakefile.ppk {private key for connecting to the remote Linux machine}"
set CertificateFileLocation="/mnt/c/fakepath/fakefile.pem {same key used to execute remote bash commands from my Windows machine}"

for %%* in (.) do set CurrentDirName=%%~nx*
set OutputFolder="%tmp%\%CurrentDirName%"
set OutputZipFile="%tmp%\%CurrentDirName%.zip"
set RemoteHost="ubuntu@54.142.181.122 {remote host address}"
set RemoteLocation="/home/ubuntu {the location to copy the output to}"

dotnet publish -o "%OutputFolder%"

powershell -command "& {&'Compress-Archive' -Path %OutputFolder% -DestinationPath %OutputZipFile%}"
rmdir /s /q %OutputFolder%

pscp -i %PrivateKeyLocation% -pw {private key password} %OutputZipFile% %RemoteHost%:%RemoteLocation%
del /q %OutputZipFile%

bash -c "ssh -i %CertificateFileLocation% %RemoteHost% 'sudo rm -rf %CurrentDirName% ; unzip %CurrentDirName%.zip ; rm -r %CurrentDirName%.zip ; sudo service supervisor restart'"

一些工具和服务需要安装在两台机器上。请参阅 Scott Hanselman 的上述帖子。

关于linux - 将 ASP.NET Core 从 Visual Studio 发布到 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com