Digital Ocean
のDroplets
を作成するところからexpress.js
でAPIサーバーを立てるところまでのメモ。
Digital Ocean
とは言ったもののDropletsを作る以降は、OS共通のはず。
目次:
1. Dropletsを作る
2. SSH接続してみる
3. nvm
でnode.js
をインストールする
4. express.js
アプリケーションを実行する
Droplets を作る
以下のイメージとサイズを選択した。
OS: CentOS 7.5 x 64
MEMORY: 1GB
vCPUs: 1vCPU
SSD DISK: 25 GB
TRANSFER: 1 TB
PRICE: $5/mo, $0.007/hr
region: Singapore
SSHキーもこの画面で設定できる。これでサーバーが生成されて起動する。
SSH接続してみる
ターミナルを開いて $ ssh root@[IPアドレス]
。
うまく接続できると[root@[サーバー名] ~]#
となる。
nvmでnode.jsをインストールする
nvm
はnode.js
のバージョンマネージャー。直接node.js
をインストールすることもできるけど。今回はnvm
経由でインストールする。
インストール方法は、参考のリンクにあるのでそちらを参照したほうが確実。
以下は2018/10現在のインストール手順。
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
これだけだとnvm: command not found
となったが一度exit
して入りなおしたらnvm
コマンドが使えるようになった。インストールはbash
の起動スクリプトにnvm
が追加するだけのため。多分。
nvm
を使ってnode.js
をインストールする。とりあえずローカルのnode
バージョンと同じものをインストールする。$ nvm install 9.2.0
。
$ node -v
でインストールされていることを確認する。
express.jsアプリケーションを実行する
hello worldするだけのexpressアプリケーションを作ってそれをscpで転送して実行してみる。
以下のファイルを転送する。
import express from 'express';
const app = express();
const port = 8080;
app.get('/api/hello', (req, res) => res.json({ message: 'hello world' }));
app.set('port', port);
app.listen(app.get('port'), () => {
console.log(`running at port: ${port}`);
});
{
"scripts": {
"start": "node -r babel-register hello.js"
},
"babel": {
"presets": [
"env"
]
},
"dependencies": {
"express": "^4.16.3"
},
"devDependencies": {
"babel-preset-env": "^1.7.0",
"babel-register": "^6.26.0"
}
}
SCPを使って転送する。$ scp -r /just-hello root@[IPアドレス]:/home/public
サーバーに入ってファイルが転送されていることを確認してみる。
$ ssh root@[IPアドレス]
$ cd /home/public
$ ls
/home/public
ディレクトリが生成され中にhello.js
とpackage.json
があるはず。
確認したらnode modules
をインストールしてhello.js
を実行する。
$ npm install
$ npm run start
ブラウザでhttp://159.65.143.104:8080/api/hello
にアクセスして{"message":"hello world"}
が返ってくることを確認する。