SupervisorでGoをデーモン化する。CentOS/Ubuntu
GoアプリケーションをCentOS環境で、デーモン化する必要があったので、その時の作業ログ。
CentOS
$ wget https://bootstrap.pypa.io/ez_setup.py -O - | python $ easy_install --version
$ easy_install supervisor $ supervisord -v
$ echo_supervisord_conf > /etc/supervisord.conf
設定ファイルを変更
;/etc/supervisord.conf [unix_http_server] file = /tmp/supervisor.sock chmod = 0777 chown= root:root [inet_http_server] port=9001 username = admin password = yourpassword [supervisorctl] serverurl = unix:///tmp/supervisor.sock [supervisord] logfile=/var/log/supervisord/supervisord.log logfile_maxbytes=50MB logfile_backups=10 loglevel=info pidfile=/var/run/supervisord.pid nodaemon=true minfds=1024 minprocs=200 user=root childlogdir=/var/log/supervisord/ [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [program:app] command=/path-to-path/yourappname autostart = true startsecs = 5 user = root redirect_stderr = true stdout_logfile = /var/log/supervisord/app.log
Run
supervisord
Stop/Reload
以下のコマンドで管理モードに入る
supervisorctl reload
Ubuntu
$ sudo apt-get install supervisor
$ sudo vim /etc/supervisor/conf.d/app.conf
設定ファイルを変更
[unix_http_server] file=/var/run/supervisor.sock chmod=0700 [supervisord] logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid childlogdir=/var/log/supervisor [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor.sock [include] files = /etc/supervisor/conf.d/*.conf [program:app] command=<your path> autostart=true autorestart=true startretries=10 user=root redirect_stderr=true stderr_logfile=/var/log/long.err.log stdout_logfile=/var/log/long.out.log stdout_logfile_maxbytes=50MB stdout_logfile_backups=10
(command に指定する前にbuildしておく必要がある。)
$ sudo service supervisor restart