忍者ブログ

更新不定期日記

管理人の気まぐれで更新される正直どうでもいい更新不定期日記。

Node.jsでサーバーを立ち上げてHerokuで公開する

Node.jsでサーバーを立ち上げます




Node.jsの組み込みライブラリを使うと簡単にサーバーを建てられるので
早速やっていきます

server.js
const http = require('http');
const server = http.createServer();
server.on('request', callbackRequest);
server.listen(process.env.PORT || 8080, process.env.IP || '127.0.0.1');
console.log('Server Launch');

function callbackRequest(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello, world!\nThis is my server!');
res.end();
}





コマンドプロンプト上でserver.jsを起動します
node server.js



これは127.0.0.1 (localhost)のポート8080番を開けてサーバーを立ち上げるプログラムです

Server Launchと表示されれば無事にプログラムが起動して
サーバーが建っているはずなので、
http://localhost:8080/
にアクセスしてメッセージが表示されることを確認しましょう

メッセージを変えたくなったりなど、プログラムを変更した際は、
サーバーの再起動をしないと反映されないので、
コマンドプロンプト上でCtrl + Cを実行してプログラムを一旦止めて、
再度nodeコマンドでサーバーを立ち上げる必要があります

これが地味に面倒なので、ファイルが更新されたら
自動でサーバーを再起動してくれるパッケージを導入しましょう
node install nodemon -g




としてnodemonをインストールします

プログラムの起動の際には、nodeコマンドの代わりにnodemonコマンドを使用します
nodemon server.js




サーバーを起動したら試しにserver.jsの内容を書き換えてみましょう
例えばServer LaunchをServer Launch!としてみます
するとnodemonがファイルの更新を自動で感知し、サーバーの再起動を行ってくれます

では早速公開しましょう
Herokuというサービスを利用すると比較的簡単にNode.jsのプログラムを公開できます
適当にアカウントを作成しておきましょう

また、Heroku Toolbeltというものが必要になるので、
Windows用の.exeファイルをダウンロードしてインストールします

herokuコマンドが使えるか確かめておきましょう
heroku --version



herokuは自動でアップデートされるので、バージョンについて気にする必要はないです

Herokuにプログラムを公開するためにはgitというものを使います
これはHeroku Toolbeltに含まれているので新たにインストールする必要はありません

git init .



とすると現在ディレクトリにgit用の場所を確保します

次に、
npm init



として、自分が書いたプログラムの情報を記述します

いろいろ聞かれますが、最初はデフォルト設定でいいので
Enterを連打します
ただし、entry pointが自分のプログラム名(server.js)になっていることだけは
確認しましょう

成功すると、package.jsonが作られます
package.jsonが正常に作られていると、nodeコマンドの代わりに
npmコマンドでプログラムを実行できます
npm start




次に、自動生成されるpackage.jsonは不完全なので情報を追加します
必要なのは自分が使っているNode.jsとnpmのバージョンの情報です

たとえば初期状態ではpackage.jsonは以下のようになっていると思います
{
"name": "test",
"version": "1.0.0",
"description": "My first server",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "",
"license": ""
}




これに以下のようにして追記します
{
"name": "test",
"version": "1.0.0",
"description": "My first server",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "",
"license": "",
"engines": {
"node": "^6.9.5",
"npm": "^4.0.5"
}
}




バージョンは
node --version
npm --version



で確認しましょう

追加の際はカンマに注意しましょう

ここまではNode.jsの準備でした
次に、Heroku用のファイルを作ります
Procfileという名前の、拡張子のないファイルを作成し、
web: npm start



とします

こうすることにより、Herokuにこのプログラムはweb用のものであり、
npm startコマンドでサーバーを起動してくださいと命令できます


次に、Herokuにログインします
heroku login



とすると、メールアドレスとパスワードを聞かれるので入力します

初回は
Could not find an existing public key.
Would you like to generate one? [Yn]
などと公開鍵を作成するか聞かれるので作成しましょう
これがないとHerokuと連携できません

ログインできたら、Herokuのサイトへ行ってアプリを作成します
ダッシュボード右上のcreate appから適当な名前を付けて作成します
ここでは例としてtestserとします

作り終わったら、コマンドプロンプトに戻り、
以下のコマンドで先ほど作ったgitとherokuを連携します
heroku git:remote -a testser




次にgitを更新します
git add .

git commit -m "any comment"




最後に、Herokuにアップロードします
git push heroku master




さあ、ここまで上手くいっていれば無事公開されているはずですので確認しましょう
https://testser.herokuapp.com/

今後更新していくうえで、Herokuへのアップロードに必要なのは
Herokuヘのログイン後、gitコマンドのadd, commit, pushのみです

gitは本来プロジェクトのバージョン管理に用いるもので
他にも便利な機能がありますがとりあえずここまでで
PR