Digital OceanのDropletsを作成するところからexpress.jsでAPIサーバーを立てるところまでのメモ。
Digital Oceanとは言ったもののDropletsを作る以降は、OS共通のはず。
目次:
- Dropletsを作る
- SSH接続してみる
-
nvmでnode.jsをインストールする -
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"}が返ってくることを確認する。