その9.Node.jsで「Hello World!」
今回は、JavaScript をサーバ側で実行できる Node.js を使ってURLでアクセスしたブラウザに「Hello World!」を表示したいと思います。
ブラウザでの表示は、
node.js + express + forever です。
今までのGCP関連記事はこちら↓
環境情報
Debian GNU/Linux 9 (stretch)
Apache/2.4.25 (Debian)
※ファイアウォールの tcp接続 3000ポートを開けています(設定方法は本文中)
無料枠サーバにNode.js をインストールする
Node.jsの最新バージョンを下記Webページで確認します。
現時点のLTS(推奨版)最新バージョンは、14.15.4 のようです。
LTS(推奨版)の最新バージョンをインストールするコマンド
$ curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
$ sudo apt-get install -y nodejs
もし、最新版をインストールしたい場合は、
setup_lts.x → setup_current.x に指定します。
コマンドの詳細はこちら↓
■バージョン確認
$
sudo nodejs -v v14.15.4
$
sudo npm -v 6.14.10
バージョンを指定してインストールするコマンド ※今回は未使用
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt-get install -y nodejs
もし違うバージョンをインストールしちゃった場合の対処方法
※アップグレードする場合は普通にインストールで大丈夫です
■ npm の n をインストールする
$
sudo npm install -g n
■ 他のnpmパッケージに影響が無いことを確認する
次のコマンドを実行してインストール済みのnpmパッケージをリスト表示します。
$
npm list -g
n と npm 以外のパッケージがある場合は、ダウングレードによる影響を調査してください。
node.js を始めてインストールした場合は、npm と 先ほどインストールした n だけになります。
■ダウングレード可能なバージョンの一覧を確認する
$
n ls-remote --all
ずらーっと出てきます。
今回は仮に 12.20.1 にしてみます。
■ダウングレードを実行する
$
sudo n 12.20.1
installing : node-v12.20.1
mkdir : /usr/local/n/versions/node/12.20.1
fetch : https://nodejs.org/dist/v12.20.1/node-v12.20.1-linux-x64.tar.xz
installed : v12.20.1 (with npm 6.14.10)
変更後のバージョンを確認します。
$
sudo nodejs -v
v12.20.1
$ sudo npm -v 6.14.10
バージョンが変わりました。
もし、インストール結果の出力に /usr/local/bin へディレクトリを変更したというメッセージが出た場合は nodejs のシンボリックリンクのリンク先を変更する必要があります。
注意:シンボリックリンクのリンク先変更は慎重に行ってください
私の場合は、/usr/bin → /usr/local/bin へ変わったので下記コマンドでシンボリックリンクを変更しました。
※自分の環境に合わせて行ってください。
$ cd /usr/bin
$ sudo rm -rf node
ここにある node を一旦削除。
$ sudo ln -s /usr/local/bin/node node
シンボリックリンクとして新規作成。
$ sudo ln -nfs /usr/local/bin/npm npm
npm のリンク先を変更。
$ sudo ln -nfs /usr/local/bin/npx npx
npx のリンク先を変更。
ブラウザで「Hello World!」を表示する
express と forever をインストールして起動コードを書いていきます。
express と forever をインストールする
インストールするフォルダを作成
$ cd ~
$ mkdir express-api
$ cd express-api
npm を初期化
$ npm init -y
express をインストール
$ npm i --save express
forever をインストール
$ npm i --save-dev forever
起動コードとコマンドを作成
index.js を作成して編集
$ vi index.js
index.jsの中身
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(3000, function(){
console.log('Server is running.');
});
※ポート番号3000を使用しています
package.json を編集
$ vi package.json
6行目あたりに "scripts" の記述があるのでそれを下記内容に変更します。
"scripts": {
"start": "forever start index.js",
"stop": "forever stop index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
の中身は↓のようになってます。
使用するポートを開く
GCPコンソールで接続するサーバのファイアウォール設定を修正します。
まずは、対象サーバに設定されているファイアウォール ルールを確認する。
VMインスタンスの詳細から、対象サーバに設定されているネットワークタグを確認。
左上のメニューから VPCネットワーク → ファイアウォール を選択する。
ターゲットのネットワークタグが確認したものと同じものを選択して編集画面を開く
プロトコルとポートの項目の tcp に 3000 を追加する
設定したら保存して終了します。
コードを起動して処理を常駐させてURLでアクセスする
サーバ側のプログラムを起動する(常駐)
先ほど作った index.js を起動します(常駐します)
$ npm run start
> express-api@1.0.0 start /home/user/express-api
> forever start index.js
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: index.js
↑ のような出力が出てコンソールが戻ってきます。(常駐してる)
ブラウザからhttpアクセスする
ブラウザのアドレスに下記URLを入力します。
http://(外部IP):3000
常駐プログラムを止める
確認が終わったら、下記コマンドで常駐プログラムを終了します。
$ npm run stop
> express-api@1.0.0 stop /home/user/express-api
> forever stop index.js
info: Forever stopped process:
uid command script forever pid id logfile uptime
[0] wKlZ /usr/local/bin/node index.js 1457 1464 /home/user/.forever/wKlZ.log 0:0:7:9.567999999999984
お疲れさまでした。^^
0 件のコメント:
コメントを投稿