ポジローぽけっと

昨日より今日、今日より明日を信じて、トライトライ

debianサーバ起動時にサービスを動作させたくなったら

/etc/init.d/に起動スクリプトを作って登録する

起動スクリプトの作り方

テンプレートをコピーして、

# cp /etc/init.d/skelton /etc/init.d/kidou

最低限以下を書く(参考:ラズパイで自動起動するデーモンを自作する - 銀の弾丸

できたら、権限を与える

# chmod 755 /etc/init.d/kidou
# chown root:root /etc/init.d/kidou

起動スクリプトの登録と削除

登録は、

# update-rc.d kidou defaults

この時Providesが他とかぶってると(skeltonのまま二つ目を登録すると
以下となってしまうのでProvidesはユニークにする必要がある

# update-rc.d hogehoge defaults
The disable|enable API is not stable and might change in the future.
# update-rc.d vpnclient defaults
insserv: script vpnclient: service skeleton already provided!
insserv: exiting now!
update-rc.d: error: insserv rejected the script header

削除は、

# update-rc.d -f kidou remove

systemdが流行ってるらしいよ

  • systemdは賛否両論あるけれど多くのdistで使われている
  • init.d配下を呼び出すことはできる

参考:
私がsystemdを嫌う理由 | インフラ・ミドルウェア | POSTD
systemd で LSB な init script を走らせる(ささやかな抵抗) - Qiita

init.d配下はsystemd経由で呼び出せるので、枯れてるinit.dのスクリプトを書いた。
目的に対し、覚えるコストが低く、歴史の長いものを使っとけば、とりあえずOK

debianのnginxでredmineをspawn-fcgiで動作させたくなったら

試したのはdebian 8, jessie

redmineのインストー

redmine - Debian Wikiの2までやる。
インストールとは別だが、フォルダ配置が純粋redmineと異なる点に注意
詳細はページ最下段のDifferences_from_upstream_Redmineにある通り

nginxのインストールとconf修正

まずは、インストー

apt install nginx

次は、confを準備・修正
nginxは起動時に/etc/nginx/nginx.confを読み込み、
defaultのnginx.confはinclude /etc/nginx/conf.d/*.confするので

# default.confを読み込まないよう名前を変更
mv /etc/nginx/conf.d/default.conf default
# テンプレをredmine.confとしてコピー
cp /usr/share/doc/redmine/examples/nginx-alias.conf /etc/nginx/conf.d/redmine.conf

最後に、redmine.confを修正

upstream redmine_default {
    # the socket a fastcgi process is bound to
    server unix:/var/run/redmine/sockets/default/fcgi.socket;
}
server {
    location / {
        alias      /usr/share/redmine/public;
        try_files $uri @fcgi;
    }
    location @fcgi {
        include /etc/nginx/fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME /usr/share/redmine/public/$fastcgi_script_name;
        fastcgi_pass    redmine_default;
        #fastcgi_pass    127.0.0.1:9999; #unixドメインソケットを使わないなら、こっち
        fastcgi_index   index.html;
    }
}

spawn-fcgiとnginxの起動

Unixドメインソケットなら、

RAILS_ENV=production spawn-fcgi -U nginx -s /var/run/redmine/sockets/default/fcgi.socket -S -d /usr/share/redmine -- /usr/share/redmine/public/dispatch.fcgi
systemctl start nginx

tcpなら、

RAILS_ENV=production spawn-fcgi -a 127.0.0.1 -p 9999 -d /usr/share/redmine -- /usr/share/redmine/public/dispatch.fcgi
systemctl start nginx

以上