
npm startで複数のNode.jsのアプリ ケーションを立ち上げたい
2019/10/122018/03/12投稿ではてなブログから移行した内容です.
結論
- concurrentlyを利用する
- -prefixを使う
例)package.json
"scripts": {
"start": "concurrently \"npm -prefix ./1つ目のアプリのディレクトリ/ start\" \"npm -prefix ./2つ目のアプリのディレクトリ/ start\""
}
経緯
Firebase Realtime Databaseを利用したシステムを最近作りました.
そこで,データベースの内容をバックアップ取りたいなーと思ったのですが,
Blazeプラン(有料)じゃないと使えないみたい...
自動バックアップ | Firebase
無料で簡単な方法でやりたいと思い,調べてみました.
方法1
まず,初めにこちらの記事を発見.
firebase活用調査編③【databaseのバックアップ】
ちょっとやってみたのですが,自分の環境ではうまくいかなかったため,断念.
方法2
次に,こちらを発見.
サーバーに Firebase Admin SDK を追加する | Firebase
この方法が一番簡単そうなので,これで行くことに決定.
let fs = require('fs')
let admin = require('firebase-admin')
let serviceAccount = require('秘密鍵')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://プロジェクトID.firebaseio.com"
})
setInterval(viroBackup, 5000)
function viroBackup () {
let db = admin.database()
db.ref('/').once('value', (snapshot) => {
let now = new Date()
let dirName = now.getFullYear() + '-' + (Number(now.getMonth()) + 1) + '-' + now.getDate()
let fileName = now.getHours() + '_' + now.getMinutes() + '_' + now.getSeconds() + '_bk.json';
if (!fs.existsSync(dirName)) {
fs.mkdirSync(dirName)
}
fs.writeFileSync('./' + dirName + '/' + fileName, JSON.stringify(snapshot.val(), null, 4))
})
}
こんな感じで完成.
でも,問題点が...
これをどうやって動かすか.
解決策1
Node.jsで動かせるやつないかなーって調べたら,nowというサービスを発見.
https://codeiq.jp/magazine/2017/10/54570/
使ってみたのだが,ディレクトリを作る権限が無くて失敗.
設定で出来るのかもしれないが,調べるのが面倒なので却下.
解決策2
AWSを利用する.
EC2は,金銭面で怖いので却下(知らないものは怖い).
AWS Lambdaを利用したのだが,バックアップを上手く取得できない.
Lambdaは,ファイル関係は向かないみたい...
解決策3
1月に作成したシステムが動いているさくらVPSで動かす.
でも,どうやって複数のサービスを動かせばよいのだろうか...
調べてみると,こちらの記事を発見.
これでよさそう!
でもどうやって,ディレクトリの違うNode.jsのプロジェクトを実行させれば良いのだろうか...
こちらの記事で解決できました.
Togelloというサービスをリリースいたしました。