supervisor是一個unix的系統程序管理軟體,可以用它來管理apache、nginx等服務,若服務挂了可以讓它們自動重新開機。下面基于centos 6.6,描述下具體實作:
1
2
<code>sudo</code> <code>yum </code><code>install</code> <code>python-setuptools</code>
<code>sudo</code> <code>easy_install supervisor</code>
如果沒有看到什麼報錯,那麼就安裝成功了,可以使用echo_supervisord_conf檢視配置詳情,而後生成配置檔案。
<code>sudo</code> <code>echo_supervisord_conf > </code><code>/etc/supervisord</code><code>.conf</code>
假設如下一段簡單的golang代碼:
<code>package</code> <code>main</code>
<code>import</code> <code>(</code>
<code> </code><code>"fmt"</code>
<code> </code><code>"log"</code>
<code> </code><code>"net/http"</code>
<code>)</code>
<code>func</code> <code>main() {</code>
<code> </code><code>http.HandleFunc(</code><code>"/"</code><code>, </code><code>func</code><code>(w http.ResponseWriter, r *http.Request) {</code>
<code> </code><code>fmt.Fprintf(w, </code><code>"Hello world"</code><code>)</code>
<code> </code><code>})</code>
<code> </code><code>err := http.ListenAndServe(</code><code>":9090"</code><code>, nil)</code>
<code> </code><code>if</code> <code>err != nil {</code>
<code> </code><code>log.Fatal(</code><code>"ListenAndServe: "</code><code>, err)</code>
<code> </code><code>}</code>
<code>}</code>
go build編譯,在/usr/local/ponpon/gowork/src/test/生成可執行檔案test。
編輯/etc/supervisord.conf,在最後增加運作程式設定
3
4
5
6
7
8
9
10
11
12
13
14
<code>[program:go-http-server]</code>
<code>command</code><code>=</code><code>/usr/local/ponpon/gowork/src/test/test</code>
<code>directory=</code><code>/usr/local/ponpon/gowork/src/test</code>
<code>autostart=</code><code>true</code>
<code>autorestart=</code><code>true</code>
<code>startsecs=10</code>
<code>stdout_logfile=</code><code>/var/log/stdout</code><code>.log</code>
<code>stdout_logfile_maxbytes=1MB</code>
<code>stdout_logfile_backups=10</code>
<code>stdout_capture_maxbytes=1MB</code>
<code>stderr_logfile=</code><code>/var/log/stderr</code><code>.log</code>
<code>stderr_logfile_maxbytes=1MB</code>
<code>stderr_logfile_backups=10</code>
<code>stderr_capture_maxbytes=1MB</code>
幾個配置說明:
command:表示運作的指令,填入完整的路徑即可。 directory:表示cd到應用的目錄下 autostart:表示是否跟随supervisor一起啟動。 autorestart:如果該程式挂了,是否重新啟動。 stdout_logfile:終端标準輸出重定向檔案。 stderr_logfile:終端錯誤輸出重定向檔案。
最後啟動supervisor
<code>sudo</code> <code>/usr/bin/supervisord</code> <code>-c </code><code>/etc/supervisord</code><code>.conf</code>
如果提示/tmp/supervisord.sock 報錯,删除/tmp/supervisord.sock重新啟動supervisor即可
本文轉自 ponpon_ 51CTO部落格,原文連結:http://blog.51cto.com/liuxp0827/1643620,如需轉載請自行聯系原作者