1. 程式人生 > >用Supervisor 守護Golang 應用程序的配置示例

用Supervisor 守護Golang 應用程序的配置示例

Supervisor 可以監控伺服器的程序,並在出現問題是自動重啟。用Supervisor 來守護Golang 應用程序是不錯的選擇。

下面是一份用Supervisor 守護Golang 應用程序的配置:

[program:yourapp]
command=/home/yourappuser/bin/yourapp # the location of your app
autostart=true
autorestart=true
startretries=10
user=yourappuser # the user your app should run as (i.e. *not* root!)
directory=/srv/www/yourapp.com/ # where your application runs from environment=APP_SETTINGS="/srv/www/yourapp.com/prod.toml" # environmental variables redirect_stderr=true stdout_logfile=/var/log/supervisor/yourapp.log # the name of the log file. stdout_logfile_maxbytes=50MB stdout_logfile_backups=10

###

1. 啟動下觀察效果,出現了一個錯誤。


[python] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. [[email protected] ~]# supervisord -c ./supervisord.conf 
  2. Error: .ini file does not include supervisord section  
  3. For help, use /usr/bin/supervisord -h  

意思是少了 [supervisrod] 配置項,可以參考 supervisord-section-settings, 修改配置檔案如下,還有log檔案最好先建立好,supervisord不會自己建立。


2. 

 sudo easy_install supervisor==3.2.0

注意 這裡就是重點:

通過apt-get安裝的supervisor 版本號是3.0b2, 而當你第一次安裝這個版本之後 再用easy_install的話 就也是這個版本 而不是最新版的3.2.0

然後生成配置檔案(root許可權):

  echo_supervisord_conf >/etc/supervisord.conf

再然後:

  sudo supervisord

再然後:

   sudo supervisorctl

啟動成功.

最後說明:

使用easy_install安裝的supervisor的預設sock檔案 會被定義在/tmp下面 而apt-get會在/var/run下面. 鑑於apt-get會出現各種問題 這裡建議使用easy_install或是pip安裝 supervisor.


golang:   https://astaxie.gitbooks.io/build-web-application-with-golang/content/zh/12.3.html