//
表示中
モノづくり, Computer - コンピューター, Electronics - 電子工作

漆風呂の温湿度管理アプリケーションをクラウドサービスにデプロイする


初めて使いました。herokuというクラウドサービス(PaaS)です。無料で使える範囲でMongoDBとCloud MQTTのアドオンをアプリケーションに追加して動かしています。特にハマることなくデプロイが完了してしっかり動いています。

Screenshot from 2016-08-17 20-28-55

 

以下、herokuにデプロイするまでの作業です。すでにherokuのアカウントを取得し、toolbeltをインストールしたと仮定して書きます。

herokuにログインします。

プロジェクトのディレクトリに移動します。
$ cd /path/to/project

gitリポジトリを初期化。
$ git init
Initialized empty Git repository in /home/ktsubaki/workspace/java/mqtt_client/.git/

プロジェクトのファイルをリポジトリに追加。
$ git add .

ここで最初のコミットをしたら誰だかわからんと怒られる。
$ git commit -m "init"

*** Please tell me who you are.

Run

 git config --global user.email "you@example.com"
 git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'xxxxxxxx@dynabook.(none)')

自分が誰かをgitに教える。
$ git config --global user.email "メールアドレス"
$ git config --global user.name "氏名"

もう一度コミット。今度はうまく行く。
$ git commit -m "init"

[master (root-commit) fde0f15] init
 27 files changed, 37143 insertions(+)
ずらずら〜〜っとファイルのリストが表示される。

herokuにアプリケーションを追加。createの後ろにアプリケーション名を
入力するとその名前のアプリケーションが作られる。
$ heroku create
Creating app... done, ⬢ secure-plateau-xxxxx
https://secure-plateau-xxxxx.herokuapp.com/ | 
    https://git.heroku.com/secure-plateau-xxxxx.git

Procfile(アプリケーション起動コマンドの定義)を作る
$ nano Procfile
   (中身はこの一行)
   web: node app.js

追加したファイルをリポジトリに追加。
$ git add .

そしてコミット。
$ git commit -m "Procfile added"
[master 1b60f77] Procfile added
 1 file changed, 2 insertions(+)
 create mode 100644 Procfile

SSHのキーを作る
$ ssh-keygen -t rsa -C "xxxxxxxxx@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxxxxxxxxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/xxxxxxxxx/.ssh/id_rsa.
Your public key has been saved in /home/xxxxxxxxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8Z7fi3zLqYwpMPbHbCUaweH7xYdiMzl+dzILEDLAn1k xxxxxxxxx@gmail.com
The key's randomart image is:
+---[RSA 2048]----+
| .. |
| ... E |
| ++=. |
| B= . |
| Sooo . |
| + o.Oo= . |
| . + OoO.. |
| + B*.==..|
| +o.*+BB |
+----[SHA256]-----+

キーファイルができている。
$ ls /home/xxxxxxx/.ssh
id_rsa id_rsa.pub known_hosts

herokuに公開キーを登録。
$ heroku keys:add ~/.ssh/id_rsa.pub
Uploading /home/xxxxxxx/.ssh/id_rsa.pub SSH key... done

登録されたキーを確認。
$ heroku keys
=== xxxxxxxxxx@gmail.com keys
ssh-rsa AAAAB3NzaC...2gYY6k+NOp xxxxxxxx@gmail.com

アプリケーションをherokuにデプロイ
$ git push heroku master
Counting objects: 40, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (34/34), done.
Writing objects: 100% (40/40), 284.92 KiB | 0 bytes/s, done.
Total 40 (delta 1), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Node.js app detected
remote: 
remote: -----> Creating runtime environment
remote: 
remote: NPM_CONFIG_LOGLEVEL=error
remote: NPM_CONFIG_PRODUCTION=true
remote: NODE_ENV=production
remote: NODE_MODULES_CACHE=true
remote: 
remote: -----> Installing binaries
remote: engines.node (package.json): unspecified
remote: engines.npm (package.json): unspecified (use default)
remote: 
remote: Resolving node version (latest stable) via semver.io...
remote: Downloading and installing node 5.11.1...
remote: Using default npm version: 3.8.6
remote: 
remote: -----> Restoring cache
remote: Skipping cache restore (new runtime signature)
remote: 
remote: -----> Building dependencies
remote: Installing node modules (package.json)
remote: eon_test@0.0.1 /tmp/build_a4193f05a208c0bbdfa966fb067f1cd7

ずらずら〜〜〜っとnodeのモジュールがインストールするステップが表示される

remote: -----> Discovering process types
remote: Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote: Done: 14.7M
remote: -----> Launching...
remote: Released v3
remote: https://secure-plateau-xxxxx.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/secure-plateau-xxxxx.git
 * [new branch] master -> master

MongoDBのアドオンをアプリケーションに追加する。
無料のプランでもクレジットカードの認証を事前にしておく必要がある。
$ heroku addons:create mongolab:sandbox
Creating mongolab:sandbox on ⬢ secure-plateau-xxxxx... !
 ▸ Please verify your account to install this add-on plan (please enter a credit card) For more information, see
 ▸ https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify

CloudMQTTのアドオンをアプリケーションに追加する。
$ heroku addons:create cloudmqtt:cat
Creating cloudmqtt:cat on ⬢ secure-plateau-xxxxx... free
Created cloudmqtt-curly-xxxxx as CLOUDMQTT_URL
Use heroku addons:docs cloudmqtt to view documentation

インストールされているコンポーネントの設定を調べる。
MongoDBとCloud MQTTの設定があるのがわかる。
アプリケーションがMongoDBとMQTTにアクセスするときのURIです。
$ heroku config
=== secure-plateau-xxxxx Config Vars
CLOUDMQTT_URL: mqtt://xxxx:xxxx@yyy.cloudmqtt.com:ppppp
MONGODB_URI: mongodb:/xxxx:xxxx@yyyyyyyy.mlab.com:ppppp/xxxxx


データベースとMQTTへの接続情報などがアプリケーションの中で正しく設定されているのを確認。
もう一度デプロイ。
$ git push heroku master
・・・省略
remote: Verifying deploy... done.
To https://git.heroku.com/secure-plateau-xxxxx.git
 1b60f77..8bc1583 master -> master

これでアプリケーションのURLにブラウザからアクセスすれば動く。

初めてでもなんとかなるものです。herokuは使いやすくわかりやすいサービスだと思います。

無料のプランですので大したことはできませんが、様々な実験を行う分です。有料の最も安いプランが月額7ドルということなので、本格的に運用するときにアップグレードを検討します。

マイコンのファームウェアの開発からサーバー側のアプリケーションの開発と運用環境への移行までの一通りの作業を行いました。ここで、一旦、このプロジェクトは中断して工房が本格的に稼働するようになったら、マイコン側もサーバー側もプログラムを見なおして、見せられる部分はソースを公開したいと思います。

まだOSXの上の方が仕事がしやすいですが、だいぶUbuntuにも慣れてきました。iOSのアプリケーションを開発するときくらいしかOSXを使うことはなさそうなので、いずれほとんどの仕事をUbuntuに移行できそうです。

kazz12211 について

Working as a OO programmer and enjoying music, bicycle and photography.

ディスカッション

コメントはまだありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

評価

ブログ統計

  • 562,221 ヒット

カテゴリー

アーカイブ

カレンダー

2016年8月
« 7月   9月 »
 123456
78910111213
14151617181920
21222324252627
28293031  
%d人のブロガーが「いいね」をつけました。