將一個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
[相關博文]
