在Linux上用supervisor运行ASP.NET Core站点的一个坑

将一个ASP.NET Core站点在Linux服务器上以self-contained部署方式发布出来后,直接在终端上运行下面的命令,站点可以正常运行。

/data/AboutUs/bin/Debug/netcoreapp1.0/ubuntu.14.04-x64/publish/AboutUs

但是通过supervisor以服务方式运行却失败:

# supervisorctl status
aboutus                          FATAL      Exited too quickly (process log may have details)

查看错误日志发现是因为找不到appsettings.json文件:

# supervisorctl tail aboutus
'appsettings.json' was not found and is not optional.
   at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload)

可appsettings.json文件明明就在那里。

在supervisor中是这样配置这个服务的( /etc/supervisor/conf.d/aboutus.conf ):

[program:aboutus]
command=/data/AboutUs/bin/Debug/netcoreapp1.0/ubuntu.14.04-x64/publish/AboutUs
autostart=true
autorestart=true
stderr_logfile=/var/log/aboutus.err.log
stdout_logfile=/var/log/aboutus.out.log
environment=Hosting__Environment=Production
user=root
stopsignal=INT
redirect_stderr=true

和在终端中运行的命令没区别,为什么在supervisor中以服务运行就不行呢?

。。。

后来想到,既然找不到appsettings.json文件,肯定是没在"/data/AboutUs/bin/Debug/netcoreapp1.0/ubuntu.14.04-x64/publish"这个路径中找,那我把当前路径设为这个路径也许能解决问题,于是在"/etc/supervisor/conf.d/aboutus.conf"添加了如下的1行配置:

directory=/data/AboutUs/bin/Debug/netcoreapp1.0/ubuntu.14.04-x64/publish

重启supervisor服务之后,问题解决。

# service supervisor restart
Restarting supervisor: supervisord.
# supervisorctl status
aboutus                          RUNNING    pid 1941, uptime 0:00:02

[相关博文]

ASP.NET Core重写个人博客站点小结

posted @ 2016-07-09 17:51 dudu 阅读(...) 评论(...) 编辑 收藏