红联Linux门户
Linux帮助

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

发布时间:2016-08-06 15:17:08来源:.NET Core交流小组作者:dudu
将一个ASP.NET Core站点在Linux服务器上以self-contained部署方式(http://www.linuxdiyf.com/linux/23080.html)发布出来后,直接在终端上运行下面的命令,站点可以正常运行。
/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
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23081.html