我遵循了Scott Hanselman撰写的精彩文章http://www.hanselman.com/blog/PublishingAnASPNETCoreWebsiteToACheapLinuxVMHost.aspx
我让主管开始了,但当我浏览我的Digitial Ocean Droplet时,我得到了一个502 Bad Gateway。
有什么想法吗?
anton@ubuntu-512mb-lon1-01:/var/dotnettest$ sudo tail -f /var/log/dotnettest.out.log
现在聆听:http://localhost:5000 申请开始了。按Ctrl + C关闭。 警告:Microsoft.Extensions.DependencyInjection.DataProtectionServices [59] 既没有用户个人资料也没有HKLM注册表。使用临时密钥存储库。应用程序退出时,受保护的数据将不可用。 警告:Microsoft.AspNetCore.DataProtection.Repositories.EphemeralXmlRepository [50] 使用内存存储库。密钥不会持久存储。 托管环境:生产 内容根路径:/ var / dotnettest 现在听取:http://localhost:5000
anton@ubuntu-512mb-lon1-01:/var/dotnettest$ sudo tail -f /var/log/supervisor/supervisord.log
> 2017-02-15 08:11:58,737 INFO waiting for dotnettest to die 2017-02-15
> 08:11:58,782 WARN received SIGTERM indicating exit request 2017-02-15
> 08:11:58,815 INFO stopped: dotnettest (exit status 0) 2017-02-15
> 08:12:09,996 CRIT Supervisor running as root (no user in config file)
> 2017-02-15 08:12:09,996 WARN Included extra file
> "/etc/supervisor/conf.d/dotnettest.conf" during parsing 2017-02-15
> 08:12:10,006 INFO RPC interface 'supervisor' initialized 2017-02-15
> 08:12:10,007 CRIT Server 'unix_http_server' running without any HTTP
> authentication checking 2017-02-15 08:12:10,007 INFO supervisord
> started with pid 13383 2017-02-15 08:12:11,011 INFO spawned:
> 'dotnettest' with pid 13388 2017-02-15 08:12:12,013 INFO success:
> dotnettest entered RUNNING state, process has stayed up for > than 1
> seconds (startsecs)
答案 0 :(得分:2)
让它工作,希望它可以帮助别人... 4 x Ubuntu图像以后......:)
Bad Gateway是由于Kestrel服务器不在Nginx侦听的同一端口上提供的。
首先关闭,确保在Program.Main中实际添加.UserConfiguration(config)
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.Build();
var host = new WebHostBuilder()
.UseKestrel()
.UseConfiguration(config) //MAKE SURE THIS IS IN
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.Build();
host.Run();
}
还要确保添加了使用Microsoft.Extensions.Configuration; Program.cs的命名空间
然后根据Scott的帖子将您的hosting.js文件添加到路线中。
如果您现在执行dotnet运行,请确保应用程序在您在hosting.js文件中指定的端口上启动,按照Scott的帖子,它将是:5123
发布应用程序并执行主管停止并启动以确保该端口是5123运行此
sudo tail -f /var/log/dotnettest.out.log
这必须是端口5123而不是默认的5000,如果它在您发布的目录中缺少hosting.js文件,如果您按照帖子将它/ var / dotnettest
我做的唯一其他非常愚蠢的事情是我在testapp下发布我的应用程序,而主管conf正在寻找dotnettest.dll而不是testapp.dll,它会给你一个可爱的
nginx主管由SIGABRT终止;不期望
错误
感谢Scott Hanselman,没有这些家伙会怎样做...... http://www.hanselman.com/blog/PublishingAnASPNETCoreWebsiteToACheapLinuxVMHost.aspx
干杯
答案 1 :(得分:0)
如果Anton的话仍然不起作用,则可能值得检查Startup.Configure()
是否在使用app.UseHttpsRedirection();
,而hosting.json
/参数和Nginx设置尚未为此准备好。
在我的情况下,从一开始我就尝试设置 SSL ,因为我使用的Visual Studio模板默认情况下启用了它(带有Angular的SPA),但是过了一会儿它变得太难了并决定将其留待以后……只是忘了删除该行形式Startup.cs
,这导致该应用在失败时反复产生。
通过使用sudo tail -f /var/log/myapp.err.log
(或您在主管的配置文件中设置的任何文件名)查看错误日志,我发现了这一点