フレームワークの意図をつかむまでにちょっ混乱した
前回作成したbookアプリをもとにアプリ公開まで行う
なお、Loopbackについての概要はこちら
Parseがサービス終了する今、選ぶべきはオープンソースBaaS!探し求めていたのはLoopBackだった…!
ローカルとサーバで使用するツールの違い
LoopBackはStrongLoop Process Manager(PM)というツールを使ってアプリの公開を行う
こちらには開発用のコマンドはない
一方、前回、ローカル(Mac)で構築した環境には開発用ツールも同梱されている
こちらはサーバ側にインストールしなくてよい
前回の記事
LoopBackをサクッと触ってみた(環境構築からAPIまで)+おまけでUnity
StrongLoop Process Manager(PM)とは?
サーバ上にLoopBack作業用ユーザを作り、サーバに必要な機能をいろいろとやってくれるツール
・slc deploy、slc ctlの受け口となる
・サービスが落ちないようにしてくれる
・複数アプリを管理してくれる
参考:StrongLoop Process Manager
アプリを公開するまでの簡単なフロー
1.ローカルに開発環境を構築(前回やった)
2.サーバにPMをインストール
3.ローカルでアプリを作る
4.ローカルでサーバに配置するアプリの設定を行う
5.ローカルでビルド
6.ローカルでサーバにデプロイ
見てもらってわかるようにサーバ側は環境構築のみで完結した
よく出来ている
この切り分けさえ分かれば迷わない
それではサーバの環境構築をする
これから環境構築する色々
ここにまとめておくので適宜読み替えてほしい
ホスト名:111.222.333.444
アプリが使用するポート:3030
Strong PMユーザ名:myuser
Strong PMパスワード:password
Strong PMの(デプロイ等で使用する)ポート:7070
アプリ名:sampleapp
アクセスURL:/api/books
※使用するポートはiptablesで許可設定をする
#さくらVPSの設定
これらの設定を問題なく終えていると想定
npmのインストール
公式サイトに従ってやった
curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum -y install nodejs
終わったら下記で確認
node -v
StrongLoop Process Manager(PM)の環境構築
参考:公式サイトの説明
※最新版である5.2系では正しく動作しなかったので5.1.0を指定
sudo npm install -g strong-pm@5.1.0
PMを扱うユーザをサーバ上に作成する
PMのユーザ名、パスワード、ポートをパラメータとして指定する
sudo sl-pm-install --upstart=0.6 --http-auth myuser:password -p 7070
sudo /sbin/initctl start strong-pm
sudo /sbin/initctl status strong-pm
※--upstart=0.6はCentOS6等で必要なオプション
これでサーバが起動している間は7070ポートでLISTEN状態となる
使用するDBの構築(MongoDB)
前回ローカルでMongoDBを構築した
サーバ側でも必要になるのでMongoDBをインストールする
Mongo公式から
###設定ファイルを作成
sudo touch /etc/yum.repos.d/mongodb-org-3.2.repo
sudo vi /etc/yum.repos.d/mongodb-org-3.2.repo
ファイルに以下を書き込む
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
設定ファイルを使用してインストールとサービス起動
sudo yum install -y mongodb-org
sudo service mongod start
LoopBackアプリの設定
slc ctlコマンドを使うことで、PMを通じてサーバ側のアプリ設定を行える
アプリ名作成
slc ctl -C http://myuser:password@111.222.333.444:7070 create sampleapp
###本番環境用として設定
この設定により、config.production.json、datasources.production.json等の本番環境用ファイルを使用できる
slc ctl -C http://myuser:password@111.222.333.444:7070 env-set sampleapp NODE_ENV=production
###アプリが使用するポートを設定
アプリが使用するポートを設定
slc ctl -C http://myuser:password@111.222.333.444:7070 env-set sampleapp PORT=3030
アプリ設定の確認
slc ctl -C http://myuser:password@111.222.333.444:7070
アプリのビルド
git管理をしていれば自動でdeployブランチが作成される
slc build
アプリのデプロイ
slc deploy -s sampleapp http://myuser:password@111.222.333.444:7070 deploy
アップロード先のパスがログに出るが、特に意識する必要はない
何かあればローカルからslc ctlコマンドで操作(再起動や停止など)をしてやればいい
アプリにアクセス
疎通確認する(200が返ってくるか?)
http://111.222.333.444:3030/api/books
productionの設定
productionに設定するとAPI Explorerはオフになる
開発用と本番用に分けたい場合
アプリの設定で開発用も作成する
独自設定にはなるがNODE_ENV=developmentを設定して、config.development.jsonを定義すれば読み込んでくれる(…はず、まだやってない)
複数のアプリの管理
アプリの設定で別のアプリを作成する
本番用と開発用を切り分けるのと大差はない
#ログは?
var/log/messagesに残る
#まとめ
サクッと書いたけど要所要所でハマる
また後日読み返して追記できるところは追記します