« サーバー復旧奮戦記(4.tomcat が止まってしまう(1)・・・今はまっています) | メイン | オールシーズンタイヤを買いました »

2017年12月16日 (土)

サーバー復旧奮戦記(5.自動起動)

新しい systemd のやり方で自動起動の設定を試みました。マニュアルも読まずにネットにある情報だけで Unit ファイルを作り、systemctl start tomcat とやるとエラー。でも、さほど苦労せずに動きました。systemctl からの start, stop はOK。ログアウトしても止まらないし 自動起動もOK。なんだ、最初からこれをやれば良かったんあだ・・・。ところが、tomcatUser で
動かしているはずなのに root で動いている。起動スクリプトに tomcatUser が存在すれば tomcatUser で起動、そうでなければ root で起動という部分があるのですが、いじりまわしているうちに壊してしまったようで、常に root で起動するようになっていました。それを修正して起動・・・動かない。またハマってしまいました。

root ならば動く。tomcatUser で起動しようとすると、起動スクリプトが正常終了した直後に stop を受け取る。正常終了後 stop を受け取るまでの間のログはなし。こんなタイミングで stop を発行できるのは systemd だけだと思うんだけど。


この時点では su tomcatUser -c で startup.sh を呼んでいたのだけれど、Unit ファイルの [Service] の User=・・ を記述すれば実行ユーザーを指定できる事になっているので、su tomcatUser はやめにして User=・・を記述して起動。

結果は変わらず。<---- 「結果は変わらず」は間違いでした。起動スクリプトを実行しようとすると「権限がない」エラーで停止した。が正しい。

起動スクリプトから systemd に戻った時に、「実行ユーザーが root でなかったら止める」みたいな事をやっているかの動きです。

これにはまいりました。使い方が悪いのか systemd のバグなのかも分からない。ググってみても情報は殆どありません。「ルート以外でサービスを起動しようとすると、ハマりどころがいっぱいある」といった記事を見つけて、そこに書いてある事をやってはみたものの、NG。
「どこから手をつけるか、何を調べるか、アイデアなし」状態です。

root でなら問題なく動くので、とりあえず root で我慢しておくか。面白くないけど。
残り作業は log lotate や時計の自動時刻合わせ、tomcat のメモリー容量、それからスクリプト内のデバッグ文の削除などなど。大した事ではないけど、疲れた。今日はこれで終わり。明日以降にしよう・・・明日は日曜日か。月曜日以降にするか。

コメント

コメントを投稿