CLIという独自ツールを使うので、ちょっと特殊である。使い方が分からなかったので備忘録メモ。CLI上記の参考文献を参考にCentOS用のrpmをダウンロードしてインストール。CLIにログインCentOSの端末から下記の通り入力する。V2」内部で使われるBuildpack、Wardenコンテナの仕組みとは?(前編)デプロイしたいアプリのカレントディレクトリにmanifest.ymlを作成する。server/app.jsmy-appはアプリ名である。urlにも使われるので他のアプリとかぶらない名前を付ける必要がありそう。buildpackはこのURLで固定。commandはnodeで立ち上げたいソースコードを指定。.cfigunoreの作成デプロイに含めたくないファイルがある場合は.cfigunoreに書き込む。.gitigunoreの書式と全く同じ。.git.sass-cache.tmp.idea/dist/e2e/node_modules/bower/node_modules/*grunt*/node_modules/open/node_modules/*jshint*/node_modules/*karma*/node_modules/requirejs/node_modules/supertest/node_modules/should/node_modules/*imagemin*/public/.buildignore/.editorconfig/.gitattributes/.gitignore/.travis.yml/.yo-rc.json/.cfignore/Gruntfile.js/karma.conf.js/protractor.conf.js/manifest.ymlデプロイデプロイしたいアプリのカレントディレクトリから下記の通り入力する。my-app下記のように処理が進めば成功。あとはmy-app.cfapps.ioにアクセスするとアプリが表示される。Variablesタブから設定する。Hostingから候補のサーバーのベンチマークをとってみた。候補条件は独自ドメインでSSLが使えるプランである。ベンチマークは開発中のサイトグルチャを動かしたときのユーザーページの表示速度である。ベンチマークの結果は以下の通り。使い方分からず為替レートは以下の通りの本日のレートで計算した。独自ドメインSSL無しか、herokuサブドメインでSSL有りなら無料で使えるので最高の選択だろう。Addonを入れると月$20かかってくる。独自ドメインSSL有りでherokuより安くなり、速度もherokuと同等である。グルチャはevennodeを使っている。計測していないがめちゃ遅かった。30秒はかかっていただろう。あとSSL使う場合、別途初年度24,000円(税抜)かかるようだ。t2.smallでも30秒かかるので遅い。これより一段上のプランであるt2.mediumは3年間全前払いでも$16.86=1968円かかるのでevennodeより高くなるのでベンチマーク対象外とした。ちなみに西日本StandardA0(1632円)、A1(5508円)、A7(78336円)も試してみたが速度は同じ。WebsitesのFREEを試してみたが、ブラウザのコンソールにwebsocketsのサーバー確立エラーが表示される。アプリケーションの構築ではwebsocketが使えると書いてあるし、設定でもwebsocketを有効にしているのだが。無料でSSLも使えるので非常に魅力的だったが速度が遅い。一段上のプランであるsmall.highcpuは$18.25=2130円かかるのでevennodeより高くなるのでベンチマーク対象外とした。Foundryと同じシステムのPaaSである。Hostingには載ってないが、node.js使えるので使ってみたが、30秒かかるので遅い。最低$2.7は魅力的だが、めちゃ遅い。1GBも試してみたが同じ速度だった。FLARE使いましょうと書いてあった。無料でSSLが使えるらしい。無料で魅力的だがグルチャが動かなかった。SSLにできるかも不明。動くには動くが、トップページの読み込みが異常に長いうえにリロードすると404エラーになってしまう。トップページさえ読み込めれば、他のページは速かった。SSLは無料で使える。$5でSSLが使えるのでかなり魅力的だったが使い方が分からなかった。ドキュメントのページが404エラーになる。デプロイ用のgitもアドインで入れるっぽい。操作が特殊なので使うのを断念。各サーバーのデプロイ方法は下記のリンク参照。他のサーバーのベンチマークをとらなかった理由は下記の通り。ホームページが中国語で分からない。SSLが使えるか明記されていない。ベータ版につき無料っぽいが、BaaSっぽい。SSLは使えるらしい。SSL付きだと$30.24するので高い。最低でも月$25と高い。IDE?ブラウザでコーディングする必要有り。プロプライエタリとして使うにはセキュリティが心配。最低でも月$19.95するので高い。EC2にnode.jsサーバーを構築しよう環境は以下の通り。6.5・ローカルにはnode.jsサーバーのソースコードがあるものとする説明内容は以下の通り。EC2でのサーバー構築方法はsimtterができるまで(サーバー取得と設定)を参照して欲しい。Termの使い方はchat.acができるまで(statusnetをインストール)を参照して欲しい。Linuxのユーザー名はec2-userになる。OSまで入った前提で以降を説明する。Termから下記コマンド実行。Termから下記コマンド実行。~/test.gitnode.jsサーバーをデプロイするローカルのgitにはすでに何らかのソースコードをコミットしているものとする。ローカルから下記コマンドを実行する。EC2に割り当てられたIPアドレスを指定する。独自ドメインを設定している場合はドメイン名でも良い。Termでの通信で使う鍵と同じである。masternode.jsサーバーを起動するサーバーで下記コマンドを実行する。app.jsは自分が起動したいソースファイルに適宜読み替えること。1画像を縮小してからサーバーへアップロードしようサーバーへ画像をアップロードしたい場合、クライアント-サーバー間の通信量軽減のため、クライアント側で画像を縮小してからサーバーへアップロードする方法を説明する。前提条件は下記の通り。・環境はherokuのMEANからCloudinaryに画像をアップロードしようで作った環境を流用する。・画像の縮小にHTML5のcanvasを使う。処理の流れは下記の通り。・FileReaderで画像ファイルを読み込む・ng-srcにFileReaderで読み込んだ画像ファイルのパスを設定する・imgタグのonloadコールバックでcanvasを使って元の画像を縮小した画像を生成する・angular-file-uploadで縮小した画像をサーバーへアップロード※なお、画像の縮小表示にはCSSの縮小処理を使う。(CSSで縮小した画像は表示にしか使えないので、canvasで画像を縮小してサーバーにアップロードする)手順は下記の通り。下記のCSSを作成する。STUDIOherokuのMEANからCloudinaryに画像をアップロードしようのHTMLを下記の通りimgタグを追加する。eventherokuのMEANからCloudinaryに画像をアップロードしようのjavascriptにディレクティブimg-onloadを追加する。これによりimgタグのng-srcの値を変更した際のファイルロード完了後にimg-onloadで設定した関数が呼ばれる。JavaScript?Canvasで描画した画像を送信してサーバに保存するさらにコントローラーも下記の通りに変更する。1herokuのMEANからCloudinaryに画像をアップロードしよう前提は下記の通り。angular-fullstakでMEAN(MongoDB+Express+AngularJS+Node.js)アプリを作成済みこの方法はYEOMANを使ってMEAN(MongoDB+Express+AngularJS+Node.js)を作成しようを参照すること2.アプリをherokuにデプロイ済みこの方法はangular-fullstackをherokuにデプロイする方法を参照すること手順は下記の通り。variablesを参照して環境変数CLOUDINARY_URLをGruntfile.jsに設定する。下記はGruntfile.jsの例。}※本来環境変数は./server/config/local.env.jsに設定すれば良いはずだが、なぜかgruntが読み込んでくれないのでGruntfile.jsに直接記入している。angular-file-uploadconnect-multipartyをインストールする。参考文献:angular-file-upload#installbower.jsonの依存順序を下記通りにする。serve時にclient/index.htmlのbower管理のjavascript読み込み順序も変更される。参考文献:angular-file-upload#usageclient側ソースコードを追加する。サンプルとほぼ同じだがソースコード例を示す。ng-file-select="onFileSelect($files)"></div>※scriptの読み込みはclient/index.htmlで行われる。node.jsserver側ソースコードを追加する。angular-fullstack:endpointでserverにmyapiという名前のAPIを追加した場合の例を示す。clientで画像が選択されるたびにserver経由でcloudinaryに画像ファイルがアップロードされる。0BootstrapのサンプルNestingのドロップダウンが開かないBootstrapのサンプルNestingのドロップダウンが開かないので、その修正箇所を説明する。class="dropdown">が必要。1angular-fullstackをherokuにデプロイする方法angular-fullstack公式のherokuの項に書いてあるが、動作しなかったので動作する方法を説明する。前提としている環境は下記の通り。3.7.6gitをインストールherokuにデプロイするのにgitを使うのでインストールする。foo※fooはherokuのアプリ名を指定する※アドオンを登録するにはherokuのアカウントに事前にクレジットカードを登録しておく必要がある。登録していないとエラーになる。buildcontrol:heroku」で失敗する。install”」が不要なためのようだ。install」だが、デプロイでは不要のなのにコピーしてしまっているためと思われる。buildcontrol:heroku」をすること。build」でdist/package.jsonが生成されるので、面倒だが手作業で削除するのが必要があるようだ。上記手順でデプロイしたアプリは下記URLにある。下記のコマンドを実行する。serve:debugするとブラウザが自動起動してnode-inspectorが開く。‘–debug-brk’オプション付きで起動されるので、必ずサーバー側のソースコードの先頭でブレイクする。PlayerにCentOSを入れてChromeからnode.jsをデバッグしよう今までnode.jsのデバッグにCloud9を使っていたが、どうにもデバッグが不安定(使っているとデバッグ起動ができなくなる)。最近Chromeからnode.jsをデバッグできることを知る。用のコードをステップ実行するこんな簡単な方法があったとは!こういうことは早く教えてくれよと思いつつも、孤立無援の独学でnode.js弄っているので重要な情報がごっそり欠けることもある。なにわともあれ、node.jsのデバッグ環境構築の手順を書き記す。64bitを使っているものとする。WindowsにバーチャルPCとしてLinuxを入れて、さらにLinuxにChromeを入れて、node.jsをデバッグするという手順になる。Player、LinuxはCentOSを使う。Player+CentOSの組み合わせは共有フォルダの設定が簡単である。バーチャルPCにVrtualBox、LinuxにUbuntuの選択肢もあるが、共有フォルダの設定が少々面倒になる。6.0.3のWindows版をダウンロードしてインストールする。5でも問題ないと思うがとりあえず最新版を入れておいた。6.5をダウンロードする。6.5にするのが無難。7にも対応するようになるとは思うが。6.5をインストールする。インストール手順は下記URL参照。Player注意点としては、GUI(デスクトップ)版をインストールすること。普通にインストールすればGUI版が選択されるはず。端末を開くと最初はログインユーザーになっているのでroot権限に切り替える。具体的にはsuコマンドを実行する。suパスワード:パスワードを聞かれるのでrootのパスワードを入れよう。パスワードが正しければroot権限に切り替わる。ブラウザをインストールすることになる。Chromeと大して変わらないので問題なし。inspectorをインストールしてデバッグできるようになる。手順は下記URLを再度掲載する。用のコードをステップ実行する開発スタイルとしては、上記URLで作成するyourcode.jsをWindows側で共有フォルダに作成し、CentOS側でそのファイルをデバッグ実行する。これにより、ソースコードの作成・編集はWindowsで、デバッグだけCentOSで行うことができる。Windowsに使い慣れたテキストエディタがある人ならば、やりやすい開発スタイルだと思う。0herokuでwebsocketsを有効にしようherokuはデフォルトではwebsocketsが無効になっているらしい。どおりで、MMORPG風チャットが遅かったわけだ。WebSocketsに書いてあるが、ここにも書いておく。CLIでログインした状態で以下のコマンドを打つ。myappは有効にしたいアプリ名を指定する。以下のメッセージが出れば成功だ。