Nodejsが好きな理由が、Javascriptが好きだから!という、ユゲタです。
インターネットブラウザをリアルタイムに動的にプログラミングできる唯一の言語というのも、自分が好きな理由に大きく関わっています。
そして、Socket.IOを使った、Polingするようなwebシステムも当たり前の様に増えてきましたが、それをサーバーに実装する時に、サーバーを再起動した時に自動的にnodeプログラムを起動したいと考えた時に、
これまでforeverモジュールで、永続起動していたのですが、Ubuntuであれば、Daemon化してしまうことで、サーバーモジュールとして起動時に自動的にstartし、モジュールプログラムの更新があったときは、root権限でrestartできるというのが非常に安定的にかつ、サーバー管理者として違和感なく運用できるということで今回初めてこの手法を導入して、うまくいったので、その備忘録を書いておきます。
Ubuntuでのdaemon化処理
Ubuntuでは、shellバッチを作っておくことで、簡単にdaemon化することができます。
手順は次のとおりです。
#!/bin/bash
cd /var/www/html/
/usr/local/bin/node server
※今回は、/var/www/html/server.jsを起動するコマンドを記述しています。(ご自身の環境に合わせて書き換えてください)
※/var/www/html/は、nodejsで起動するモジュールのroot階層に移動しています。
※nodeコマンドは、which nodeで表示されたパスを登録してください。
[Unit]
Description=www_boot
[Service]
User=web
Type=simple
ExecStart=/bin/sh /var/www/www_boot.sh
Restart=no
[Install]
WantedBy=multi-user.target
このように起動shellバッチと、サービスデーモンモジュールを作っておき、次のコマンドで、OS登録します。
systemctl enable /var/www/www_boot.service
そして、次のコマンドで起動できます。
systemctl start www_boot
foreverがうまく起動しない件
そもそも、nodejsをforeverで実装しようとしたんですが、OS-boot時にうんともすんとも、startしてくれないので、(shellコマンドを直接実行すると正常に起動していた)
色々調べていたところ、OS起動時にforeverの起動が完了していないという問題がわかり、そもそもdaemon起動するのだから、nodeコマンドを直接起動させるのでいいんじゃないかという思考に行きつき、
当初の想定とは違ってしまいましたが、結果オーライになったという事でした。
雨降って地固まる
サーバー設定は、想定している通りにいかないことがたまにありますが、そうした時も自分がやりたいと思っていた箇所がもっとシンプルに構築できたり、
全く思考方法を変えることでうまく行くことがあるので、改めてそうした経験によるスキルアップが安定したサービス稼働する要因にもなり得るな〜と感じた今回の設定作業でした。
オレに幸あれ!
0 件のコメント:
コメントを投稿