「Webサービスを(少しずつ)構築する」 第4回
サーバ側で ls -l
した時の出力が、おそらく
-rw-r--r-- 1 nobu zemi 1277 11月 19 22:53 2018 app.js
drwxr-xr-x 2 nobu zemi 4096 11月 26 11:40 2018 bin
drwxr-xr-x 2 nobu zemi 4096 11月 26 15:10 2018 config
-rw-r--r-- 1 nobu zemi 793 11月 23 15:34 2018 memo.db
のようになるだろう。パーミッションの列(左端10文字に着目)がこんな形で、ファイルのオーナー以外に w (書き込み)のパーミッションが立っていない状態なら大丈夫だろう。
$APP/config/config.json
の、
development
フェーズの、
host
パラメータ。これを "localhost"
または
"127.0.0.1"
に変更する
(最初の値に戻す、とも言える)。""
囲んでも
シングルクォート''
で囲んでもいい。npm install
すでにシステムで(いずれかのデーモンが)使っている番号との衝突も予めチェックしておくこと。
netstat -ant | grep LISTEN
で表示される接続の、
ローカル側(左側)のポート番号をチェック。 * 以下の解説では、たとえばポート3333を選んだ場合を想定して示す。
$APP に cd(場所を移動、或いはカレントディレクトリの変更)したあと、
PORT=3333 npm start
この先、随時動作確認を行うようにして下さい。
http://sakura:3333/
或いは、端末からテキストベースのWebブラウザ等を使って、
curl http://localhost:3333
Unixの機能(nohup)を使って
PORT=3333 nohup npm start &
という方法もあるが、
ここでは、node.js のライブラリを活用するデーモン化の方法を解説する。
npm用ユーザディレクトリを作る
mkdir ~/npm
「グローバルインストール」(-g をつけたインストール操作)のインストール先ディレクトリ(上記ディレクトリ)を、 npm君に指示しておく。
npm config set prefix=$HOME/npm
~/.bash_profile を編集して、
export PATH=$PATH:$HOME/npm/bin
を末尾(がいいだろう)に追加し保存する。
forever パッケージをインストール
npm install forever -g
起動
PORT=333 forever bin/www
動作確認と運用
ps x # 起動しているかどうか確認
netstat -ant # 目的のポート番号でLISTENしているかどうか
# 以下は foreverコマンドの使用例
forever list # forever が管理しているデーモンの一覧
# 2カラム目の `[]` で囲まれた数が id番号
forever stop 0 # など id番号を指定してデーモンを停止できる
他の選択肢:
他にデーモン化のためのツール(ライブラリ)として、 pm2 があり、こちらが後発なので機能は充実しているようだ (がここでは解説は省略する)。
5.
まで進めた人は連絡下さい。express-generator は $APP/publicを静的コンテンツ置き場に設定しており、
例えば /stylesheets/style.css
といった資源への要求に対して、
このディレクトリ以下のファイルの内容を応答として送信する。