Node.jsとExpress.jsで開発したWebアプリをeXcaleで動かす
eXcaleにデプロイする
早速、今作ったアプリケーションをeXcaleにデプロイしてみます。eXcaleではファイルアップロードによるデプロイとgitを利用したデプロイの2種類の方法でデプロイできますが、今回はgitを利用したデプロイを行います。また、eXcaleで実行するためには先ほどeXcaleコマンドで生成したアプリケーションに少し修正を加える必要があります。
まず、eXcaleでNode.jsのアプリケーションを実行する場合、実行するファイル名はindex.jsである必要がありますのでexample.jsをindex.jsにリネームします。
$ mv example.js index.js
続いて、eXcaleではサーバとして待受可能なポートが8080に限定されていますので、8080番ポートで待ち受けるようにindex.jsを修正します。listenメソッドでポートの設定を行っていますのでここを修正します。
(変更前)
listen(1337, '127.0.0.1');
(変更後)
listen(8080, '0.0.0.0');
eXcaleではgit pushを行うとサービス側でライブラリの依存関係を解決します。Node.jsの場合、必要となるライブラリをpackage.jsonに記述しておくことでこの依存関係の解決が行われます。従って今回のアプリケーションでもpackage.jsonを用意する必要があります。今回は実際には依存ライブラリがない状態ですので以下のような内容をpackage.jsonという名前で保存してください。
{ "name": "<アプリケーション名>" , "version": "0.0.1" , "private": true }
次にアプリケーションのディレクトリをgitリポジトリして使用するように初期化して、リモートリポジトリとして全ファイルを追加した上でコミットします。
$ git init $ git add . $ git commit -m "initial commit"
最後にeXcale上でアプリケーションを作成した際に用意されたリポジトリURLをリモートリポジトリとして追加し、masterブランチをプッシュします。
このURLは「詳細」画面の「Git接続先」から確認することができます。eXcale上のGitリポジトリにプッシュすることでアプリケーションのデプロイが行われます。
$ git remote add excale <Git接続先> $ git push excale master
ここで聞かれるユーザ名とパスワードは先ほど作成したeXcaleのアカウントとして登録したメールアドレスとパスワードです。eXcale側でプッシュを検知すると自動的に依存ライブラリの解決をした上でプッシュしたアプリケーションがパッケージングされ、eXcaleに登録された後、アプリケーションインスタンスの起動が行われます。ただし、git push完了時点ではあくまでもインスタンスの起動を開始しただけであり完了しているわけではありません。そこでデプロイしたアプリケーションのステータスを確認します。
eXcaleの「アプリケーション一覧」から対象アプリケーションの「詳細」ボタンをクリックして詳細画面を開いてください。画面下部に「ログ」という項目がありますので「表示」ボタンをクリックするとアプリケーションのログを確認できます。「ログ種類」から「システムログ」を選択して「表示」ボタンをクリックしてください。
画面下半分の領域にインスタンスのデプロイ状況に関するログが表示されますので"Instance started."と表示されていればデプロイは完了しています。また、簡単に確認する場合は詳細画面の「現在のインスタンス数」の値が最小インスタンス数以上(デフォルトでは1)になっていればデプロイが完了しています。
デプロイが完了したらブラウザからアクセスしてみてください。アクセスするURLは先程の詳細画面に表示されているアプリケーションURLです。このURLはインターネット上に公開されているURLですのでこの時点であなたのアプリケーションはWeb上に公開された状態となります。もし、まだデプロイが完了していない場合は"Down for maintenance"という画面が表示されます。その場合は何度かリロードしてみてください。また、ブラウザのキャッシュに残っている可能性もありますのでその場合はキャッシュのクリアを行った後アクセスしてみてください。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Socket.IOを使ってNode.jsでリアルタイムWebアプリを開発する
- expressで開発したWebアプリをeXcaleで動かす
- 「Pulumi Automation API」でPulumi CLIの機能をコード化しよう
- Oracle Cloud Hangout Cafe Season6 #4「Pythonで作るAPIサーバー」(2022年12月7日開催)
- Kubernetes上のアプリケーション開発を加速させるツール(1) Skaffold
- 実践「Heroku」をセットアップしてサンプルアプリを動かそう
- Phalcon Devtoolsを使ったMVCプロジェクト作成からHelloWorldまで
- Kubernetes上のアプリケーション開発を加速させるツール(2) Telepresence
- MySQL Clusterのバックアップ/リストアの具体例
- テストコードを書いて「GitHub Actions」でCIを実行してみよう