Deploy Asp.Net Core App to Linux VDS


[optional] Make another building configuration

Create new building configuration

staging_conf

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)

publish profile

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

SCP commands

SSH commands

'dotnet publish' official ms manual

Linux copy commands


Создано: 13/10/2021 13:07, Изменено: 15/10/2021 11:57, Просмотров: 54
Назад