Node.jsを使ったアプリケーションを公開したいと思ってもどこで公開したらいいかな?なんて思いますよね。
AWSやGCPもあるけど、VPSはどうなんだろう?その中でさくらのVPSはどうなんだろう?と思ってこの記事に辿り着いたはずです。
VPSはクラウド破産もないし、料金も結構安く使うことができて何よりAWSやGCPなどのクラウドより簡単です。
そこで今回はさくらのVPSでNode.jsをインストールして公開するっていうことをやっていきます。
- さくらのVPSでサーバーを立てる
- 立てたサーバーにNode.jsをインストールする
- Node.jsを動かす
- Expressアプリを動かす
どんな風に動かすことができるのか少しでも気になったら参考にしてみてください。
さくらのVPSでサーバーを立てる
さくらのVPSを契約してサーバーを立てなければ何もできないので、まずはサーバーを立てましょう。
色々選択していくだけでサーバー構築することができるので楽ですね。(ちなみに。さくらのVPSは2週間無料で使えます。)
実際のサーバー作成画面からやっていきます。
クーポンは使いたいものがあれば使うといいです。まずゾーンはどこでもいいけど、東京第2にしておきます。
プランは1Gを今回は選択するけど、これはどれぐらいのスペックが欲しいかによって選択してください。(最低でも1Gは欲しいです)
ストレージ変更オプションは変更手数料が0円のSSDを選択して購入台数は1台です。
次へボタンを押すとサーバー設定ですね。
サーバー名とサーバー説明ですが、管理画面に表示されるので分かりやすいものを設定しておくといいです。
インストールするOSは以下から選べるけど、今回はubuntsにしておきます。
管理ユーザー名は決まっていてubuntuです。パスワードも入力しておきましょう。
スタートアップスクリプトといって、インストール時に走らせるスクリプトを設定できるけど[利用しない]にします。
SSHキーもここで登録できるけど、登録しないで進みます。
支払い方法は毎月払いか12ヶ月一括か選べますね。クレジットカード選択をすると2週間のお試し期間を使えるので、クレカ払いがおすすめです。
これでお支払いをクリックするとサーバー作成が完了します。
少ししてサーバー一覧画面を見ると、作成したサーバーが表示されました。
これで選択した情報に基づいてサーバーを立てることができました。今回のサーバーはゾーンは東京第2、メモリは1GB、OSはUbuntuです。
サーバーを起動して接続する
サーバーを立てると初期状態は停止中なので起動します。
起動するとステータスが稼働中になって色が緑色になります。
サーバーに接続する
サーバーに接続するにはさくらのVPSで用意されているコンソールを使うかSSH接続するかです。
コンソールでサーバーに接続する
コンソールはコンソールボタンからVNCコンソールかシリアルコンソールを使えます。
ちなみにユーザー名は選んだOSによって変わるので注意しましょう。
SSH接続する
SSH接続は普通にコマンドで接続できます。
ssh ubuntu@IPアドレス
IPアドレスは管理画面から見ることができますよ。
さくらのVPSで立てたサーバーにNode.jsをインストールする
サーバーが立ったので、Node.jsをインストールしていきます。
$ sudo apt update
$ sudo apt install nodejs
$ nodejs -v
=> v12.22.9
無事Node.jsをインストールできました。
さくらのVPSでNode.jsを動かす
Node.jsの入門ガイドにあるサーバーを起動するコードを書いて動かしてみます。
const http = require('http');
const hostname = IPアドレス;
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
IPアドレス:3000にアクセスすればHello Worldが表示されるコードだけど、さくらのVPSはパケットフィルターというものがついていて、ポートを制限してくれています。
なので3000番を許可するように設定します。
パケットフィルターで3000番ポートを許可する
これで3000番ポートでアクセスできるようになりました。
サーバーを起動してアクセス
node app.js
起動してからブラウザからアクセスするとちゃんと表示されましたね。
さくらのVPSでExpressアプリを動かす
Expressもインストールして動かしてみたいと思います。WebサーバーにはNginxを使って経由していきましょう。
npmをインストール
$ sudo apt install npm
$ npm --version
=> 8.5.1
Expressをインストール
# expressをインストール
$ sudo npm install express -g
# generatorをインストール
$ sudo npm install express-generator -g
Expressアプリを作成
# expressアプリを作成
$ express my-app
$ cd my-app
$ npm install
Nginxをインストール
$ sudo apt install nginx
Nginxの設定
$ vim /etc/nginx/conf.d/app_nginx.conf
server {
listen 80;
server_name サーバーのIPアドレス;
location / {
proxy_pass http://localhost:3000;
}
}
$ sudo systemctl restart nginx
Nodeアプリを起動する
Expressアプリに移動して起動しましょう。
$ npm start
これでIPアドレスにアクセスして確認するとExpressの初期画面が無事表示されましたね。
これは単純にExpressの初期画面を表示させただけだけど、なんとなく自分の作ったアプリケーションも公開できそうな気もしますよね。
もちろんMySQLなどのデータベースもインストールして扱うこともできるので、アプリケーションのことならやりたいことはできるはずです。
まとめ
さくらのVPSでNode.jsをインストールして動かすっていうことをやってみたけど、ちゃんとインストールして動かすことができました。
今回やったことは以下です。
- さくらのVPSでサーバーを立てる(Ubuntu)
- Node.jsをインストール
- パケットフィルターで3000番ポートを解放
- Node.jsでサーバー起動
- Expressアプリを起動
Node.jsを使ったアプリケーションもちゃんと動かすことができるのはイメージできたんじゃないかなと思います。
もし自分で作成したアプリケーションを公開したかったらさくらのVPS2週間無料で使えるので、試してみるといいですよ。
サーバーは選択していくだけで立てることができるので楽です。メモリは少なくとも1GB以上がおすすめです。