最近在linux(CentOS7)上发布了.net core的应用,需要使用守护程序。
于是使用了supervisor。
安装:
yum install python-setuptools
easy_install supervisor
配置:
mkdir /etc/supervisor
然后,在supervisor目录下再建一个conf.d文件夹
这时需要两个配置文件,一个是supervisor的配置,一个是supervisor关于你.net core项目设置文件
即:supervisord.conf 和conf.d/yourwebproject.conf
这个supervisord.conf怎么来?
echo_supervisord_conf > /etc/supervisor/supervisord.conf
如果不成功,则到cd /usr/bin目录下,可以找到echo_supervisord_conf文件
运行一下,可以看到输出内容。但是我们要保存到文件中去。这样做:
echo_supervisord_conf > supervisord.conf
这样就可了。然后mv这个conf到/etc/supervisord目录下即可。
修改supervisord.conf文件,将文件尾部的配置[include]打开,分号去掉
[include]
files = conf.d/*.conf
另外,要注意的是:在
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket;username=chris ; should be same as in [*_http_server] if set;password=123 ; should be same as in [*_http_server] if set这里是unix:冒号!冒号!冒号!不是分号...我的不知道怎么会是分号结果出现错误下面的错误搞了半天:unix:///tmp/supervisor.sock no such file
改成冒号就行了。
如果服务已启动,修改配置文件后,可用“supervisorctl reload”命令来使其生效。
yourproject.conf示例:
[program:SemanticBindWeb]
directory=/home/qiang/user/Cy/PublishOutput/command=dotnet SemanticBindWeb.dll
environment=ASPNETCORE__ENVIRONMENT=Productionuser=qiangstopsignal=INTautostart=trueautorestart=truestartsecs=3stderr_logfile=/var/log/semanticbindweb.err.logstdout_logfile=/var/log/semanticbindweb.out.log
使用sudo supervisorctl可以进入supervisior的控制台
当你修改yourproject.conf后,控制台内执行reload即可
supervisor>reload
运行成功会有这样的反馈:
SemanticBindWeb STARTING
supervisor> status
SemanticBindWeb RUNNING pid 30145, uptime 0:14:54不成功的可能会是:
SemanticBindWeb FATAL unknown error making dispatchers for 'SemanticBindWeb': EACCES
或
SemanticBindWeb FATAL Exited too quickly (process log may have details)
这些基本都是yourproject.conf的配置问题,仔细修改:路径,命令,以及用户。也可能要chmod 777到你的log文件。