在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重寫個人博客站點小結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM