2016-10-24 3 views
1

У меня есть ядро ​​dotnet 1.0, работающее на ubuntu 14.04 vm. Я пытаюсь написать сценарий выскочки для моего процесса развертывания:dotnet core on ubuntu 14.04 upstart issue

start on filesystem and started networking 
respawn 
chdir /home/dotnetuser/dotnetportal/ 
exec sudo /usr/bin/dotnet restore 
exec sudo /usr/bin/dotnet run 

После запуска этой службы, я проверяю журналы и получить то, что обычно ожидается (от тестирования локально/VM разработки):

Hosting environment: Production 
Content root path: /home/dotnetuser/dotnetportal 
Now listening on: http://localhost:5000 
Application started. Press Ctrl+C to shut down. 

у меня есть Localhost: 5000 на обратный прокси-сервер Nginx для моего домена и SSL:

server { 
    # Enable HTTP/2 
     listen 443 ssl; #http2; 
     listen [::]:443 ssl; #http2; 
     server_name portal.secret.com; 

     # use the lets encrypt certificates 
     ssl_certificate /etc/letsencrypt/live/portal.secret.com/fullchain.pem; 
     ssl_certificate_key /etc/letsencrypt/live/portal.secret.com/privkey.pem; 

     # include the SSL configuration from cipherli.st 
     include snippets/ssl_params.conf; 

    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; 
    } 

} 

Однако, когда я свернуться https://portal.secret.com/ я проверить журналы снова, и я получаю кучу ошибки компилятора.

Имейте в виду, что НЕ ПРИНИМАЮТ любые ошибки при запуске dotnet прямо из рабочей папки производства, и я могу получить доступ к сайту.

бревен, когда я пытаюсь запустить сайт из службы:

an unhandled exception has occurred: Can not find compilation library location for package ' microsoft.aspnetcore.antiforgery' 
18 System.InvalidOperationException: Can not find compilation library location for package 'microsoft .aspnetcore.antiforgery' 
19 at Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths() 
20 at System.Linq.Enumerable.<SelectManyIterator>d__157`2.MoveNext() 
21 at Microsoft.AspNetCore.Mvc.Razor.Compilation.MetadataReferenceFeatureProvider.PopulateFeature( IEnumerable`1 parts, MetadataReferenceFeature feature ETC..... 

Кто-нибудь есть какие-либо идеи, почему это происходит только тогда, когда я upstarting услугу, а не при запуске команда напрямую?

UPDATE: Вот мой Project.json

{ 
    "userSecretsId": "xxxxx", 

    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.1", 
     "type": "platform" 
    }, 
    "System.Runtime.Loader": "4.0.0", 
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0", 
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.1", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Routing": "1.0.1", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.1", 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
     "version": "1.0.0-preview2-update1", 
     "type": "build" 
    }, 
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": { 
     "version": "1.0.0-preview2-update1", 
     "type": "build" 
    }, 
    "MongoDB.Driver" : "2.3.0" 
    }, 

    "tools": { 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    }, 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    }, 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": [ 
     "portable-net45+win8+dnxcore50", 
     "portable-net45+win8" 
     ] 
    }, 
    "Microsoft.Extensions.SecretManager.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    }, 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": [ 
     "portable-net45+win8+dnxcore50", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "dnxcore50", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "**/*.cshtml", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ], 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    }, 

    "tooling": { 
    "defaultNamespace": "WebApplication" 
    } 
} 
+0

Можете ли вы поделиться своим проектом.json? У вас есть 'preserveCompilationContext'? – svick

+0

Спасибо за ответ, да, эта опция сборки установлена ​​в значение true. Смотрите мое обновленное сообщение для project.json. – fredp613

ответ

0

Я решил, удалив/TMP папку/NuGetScratch, а также явно сказал линукс, который пользователь, чтобы запустить приложение под. Обновленный сервис конф сценарий:

start on filesystem and started networking 
respawn 
setuid dotnetuser 
env HOME=/home/dotnetuser 
exec rm -rf /tmp/NuGetScratch/ 
chdir /home/dotnetuser/apps/dotnetportal 
exec dotnet restore 
exec dotnet run 

Проблема в том, что .net не компиляции из-за проблем разрешения файлов, вызванных NuGet блокировки файлов, которые находятся в каталоге я удалил (TMP/NuGetScratch). Я предполагаю, что на данный момент .net ожидает, что вы запуститесь от имени root - нашлось здесь: https://github.com/dotnet/dotnet-docker/issues/78 (количество кэшей NuGet не удается, поскольку/tmp/NuGetScratch принадлежит root или некоторому другому su)