Ausführen von .net core als systemd-Dienst auf Ubuntu 14

1175
Edik Mkoyan

das funktioniert gut,

webadmin@sandbox:/www/web/prod/prereg.example.org/prereg-sample$ dotnet restore Restoring packages for /www/web/prod/prereg.example.org/prereg-sample/WebApplication/WebApplication.csproj... Restoring packages for /www/web/prod/prereg.example.org/prereg-sample/WebApplication/WebApplication.csproj... Restore completed in 558.64 ms for /www/web/prod/prereg.example.org/prereg-sample/WebApplication/WebApplication.csproj. Lock file has not changed. Skipping lock file write. Path: /www/web/prod/prereg.example.org/prereg-sample/WebApplication/obj/project.assets.json Restore completed in 2.12 sec for /www/web/prod/prereg.example.org/prereg-sample/WebApplication/WebApplication.csproj.  NuGet Config files used: /home/webadmin/.nuget/NuGet/NuGet.Config  Feeds used: https://api.nuget.org/v3/index.json webadmin@sandbox:/www/web/prod/prereg.example.org/prereg-sample$ dotnet publish Microsoft (R) Build Engine version 15.1.548.43366 Copyright (C) Microsoft Corporation. All rights reserved.  WebApplication -> /www/web/prod/prereg.example.org/prereg-sample/WebApplication/bin/Debug/netcoreapp1.1/WebApplication.dll webadmin@sandbox:/www/web/prod/prereg.example.org/prereg-sample$ cd WebApplication/ webadmin@sandbox:/www/web/prod/prereg.example.org/prereg-sample/WebApplication$ dotnet run Hosting environment: Production Content root path: /www/web/prod/prereg.example.org/prereg-sample/WebApplication Now listening on: http://sandbox.example.lab:5000 Application started. Press Ctrl+C to shut down. 

Hier ist das Ergebnis

[sandbox]/etc/systemd/system> ps aux |grep dotnet webadmin 29736 1.2 0.5 3286936 48576 pts/4 SLl+ 13:19 0:00 dotnet run webadmin 29775 1.5 0.5 21251244 42736 pts/4 SLl+ 13:19 0:00 dotnet exec /www/web/prod/prereg.example.org/prereg-sample/WebApplication/bin/Debug/netcoreapp1.1/WebApplication.dll 

Aber wenn ich dies zu systemd hinzufüge, so versuche ich, dass es sich als Linux-Dienst verhält, der zum Beispiel automatisch gestartet wird.

mit der folgenden Konfiguration

[Unit] Description=prereg application  [Service] WorkingDirectory=/www/web/prod/prereg.example.org/prereg-sample/WebApplication/bin/Debug/netcoreapp1.1/ ExecStart=/usr/bin/dotnet /www/web/prod/prereg.example.org/prereg-sample/WebApplication/bin/Debug/netcoreapp1.1/WebApplication.dll Restart=always RestartSec=10 # Restart service after 10 seconds if dotnet service crashes SyslogIdentifier=prereg-sample User=webadmin Environment=ASPNETCORE_ENVIRONMENT=Production  [Install] WantedBy=multi-user.target 

Ich bekomme diese Fehler. Haben Sie eine Idee, warum dies passiert?

[sandbox]/etc/systemd/system> systemctl start prereg-sample [sandbox]/etc/systemd/system> systemctl status prereg-sample prereg-sample.service - prereg application Loaded: loaded (/etc/systemd/system/prereg-sample.service; enabled) Active: failed (Result: start-limit) since Sat 2017-03-18 13:24:23 +04; 8s ago Process: 30080 ExecStart=/usr/bin/dotnet /www/web/prod/prereg.example.org/prereg-sample/WebApplication/bin/Debug/netcoreapp1.1/WebApplication.dll (code=killed, signal=ABRT)  [sandbox]/etc/systemd/system> journalctl -fu prereg-sample -- Logs begin at Fri 2017-03-17 11:56:37 +04. -- Mar 18 13:24:23 sandbox.example.lab prereg-sample[30064]: at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider) Mar 18 13:24:23 sandbox.example.lab prereg-sample[30064]: at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider) Mar 18 13:24:23 sandbox.example.lab prereg-sample[30064]: at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) Mar 18 13:24:23 sandbox.example.lab prereg-sample[30064]: at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) Mar 18 13:24:23 sandbox.example.lab prereg-sample[30064]: at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureStartup() Mar 18 13:24:23 sandbox.example.lab prereg-sample[30080]: Unhandled Exception: System.IO.FileNotFoundException: The configuration file 'appsettings.json' was not found and is not optional. The physical path is '/www/web/prod/prereg.example.o...ppsettings.json'. Mar 18 13:24:23 sandbox.example.lab prereg-sample[30080]: at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload) Mar 18 13:24:23 sandbox.example.lab prereg-sample[30080]: at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers) Mar 18 13:24:23 sandbox.example.lab prereg-sample[30080]: at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build() Mar 18 13:24:23 sandbox.example.lab prereg-sample[30080]: at WebApplication.Startup..ctor(IHostingEnvironment env) in /www/web/prod/prereg.example.org/prereg-sample/WebApplication/Startup.cs:line 23 
0

1 Antwort auf die Frage

1
Edik Mkoyan

Ich bin so dumm,

The configuration file 'appsettings.json' was not found and is not optional. 

bedeutet, dass der Ordner falsch eingestellt ist, es sollte / publish sein, die appsettings.json ist da. und es hat funktioniert. Und der Dev hat die Konfigurationsdatei nicht hinzugefügt, die die MongoDb-Verbindungszeichenfolge enthält.