Deploy Asp.Net Core App to Linux VDS
[optional] Make another building configuration
Create new building configuration
Change app ip port for varius configs:
public const int ReleasePort = 5200;
public const int StagingPort = 5201;
......
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
int port = ReleasePort;
#if STAGING
port = StagingPort;
#endif
webBuilder.UseStartup<Startup>().UseUrls($"http://*:{port}");
webBuilder.UseStartup<Startup>();
});
}
Create Publish Profile in Visual Studio (*.pubxml)
Going to App source code folder
cd MyApp
Clean "publish"-folder
rd /S/ Q publish
del publish.tar
mkdir publish
Publish App
dotnet publish
or
dotnet publish -c Staging -p:PublishProfile=Properties/PublishProfiles/FolderProfile.pubxml --output ./publish
or
dotnet publish -c Release -r linux-x64 --self-contained false -p:PublishSingleFile=false -p:PublishTrimmed=false --framework net5.0 --output ./publish
Remove unnecessary files from "publish"-folder
Remove *.pdb-files:
del publish\*.pdb /S /Q
Remove 'BlazorDebugProxy' folder:
rd publish\BlazorDebugProxy /S /Q
Make tar-archive of "publish"-folder
tar -cf publish.tar ./publish
Copy *.tar to server via scp command
scp -P <ssh-port> publish.tar <linux-user>@<linux-ip>:<upload folder>
Unpack app files and restart service
ssh -t -p %sshPort% %sshServer% "sudo rm ./%appFolder%/* ; sudo rm -R ./%appFolder%/wwwroot/* ; sudo tar -xf publish.tar ; sudo cp -u -r -p ./publish/* ./%appFolder% ; sudo service %appService% restart ; sudo rm -R ./publish"
Bonus: script template
@echo emptying...
rd /S /Q publish
del publish.tar /S /Q
mkdir .\publish
@echo publising...
dotnet publish -c %config% -p:PublishProfile=Properties/PublishProfiles/FolderProfile.pubxml --output ./publish
@echo cleaning publish...
del publish\*.pdb /S /Q
rd publish\BlazorDebugProxy /S /Q
rd publish\Data /S /Q
@echo archiving...
tar -cf publish.tar ./publish
@echo uploading to server...
scp -P %sshPort% publish.tar %sshServer%:%homeDir%
@echo unpack app, restarting service...
ssh -t -p %sshPort% %sshServer% "sudo rm ./%appFolder%/* ; sudo rm -R ./%appFolder%/wwwroot/* ; sudo tar -xf publish.tar ; sudo cp -u -r -p ./publish/* ./%appFolder% ; sudo service %appService% restart ; sudo rm -R ./publish"
See also
Publish Asp.Net core apps to Linux
Useful links
'dotnet publish' official ms manual
Создано: 13/10/2021 13:07, Изменено: 15/10/2021 11:57, Просмотров: 54
Назад