環境の縛り
- 認証つきProxyで外部環境に繋がる。
- ユーザIDには「@」を含む。
- Windows上。
Phoenix Frameworkのインストールガイド
必要なアプリ・モジュール
Elixir
そりゃElixirで動くFrameworkだからなあ。
Hex
Erlangのライブラリ管理ツール。
Phoenix
Phoenix Framework本体。Installの所と違ってここに位置付けたのは、単にツリー構造上の話です。Elixirのパッケージだから。
ただ、このインストールの方法では特にHexを使ってインストールしている訳ではない。
Plug, Cowboy, and Ecto
Phoenix Frameworkが必要とするElixirやErlangのパッケージ。中身は今の段階では分からず。
同じVMだからもあるけど、ElixirからErlangのパッケージなんかは利用しやすいようで。
Phoenix入れたら勝手に入るらしい。
node.js (>= 5.0.0)
Phoenix Frameworkではデフォルトではbrunch.ioとかで画面の静的アセット作るらしい。画面はよう分からんが、他に切り替えるほどのノウハウ持っている訳もないので入れておく。
PostgreSQL
裏にDBもつものらしい。うーん、Webアプリから利用するデータおく為のもの?な位置付けでいいのか?
よく知らん。
インストール
node.jsインストール
インストール自体は問題ないが、やっぱLinuxベースアプリという事で、Proxyが上手く通らない。
Proxyの設定が必要。
npm -g config set proxy "http://<proxy username>:<proxy password>@<server>:<port>/" npm -g config set https-proxy "http://<proxy username>:<proxy password>@<server>:<port>/" npm -g config set registry "http://registry.npmjs.org/" npm -g config set strict-ssl=false
ユーザ名やパスワードにURIエンコーディングが必要。
試しにbrunch.ioをインストールして通る事は確かめた。
・・・・・・重い。
PostgreSQLインストール
本体は問題なし。psqlodbc入れるStackBuilderが動作しない。Proxy設定を上のように入れてみても上手くいかないので諦め。
psqlodbcを手動で導入した。
postgresユーザのパスワードが、Phoenix Frameworkではpostgresなので苦労しないように一応そうしておく。
・・・・・・良くないです。
Windows版だと、デフォルトでPostgreSQLのそのDB起動周りもサービスとして登録されます。
デフォルトのポート番号は「5432」。
hex導入のmixコマンド
そのままでは動作しない。Proxy設定する所もない。
・・・・・・環境変数http_proxy、https_proxyを設定すればその設定を読んでくれるというのをソースから推測して入れる。
但し、npmの設定と異なり、URIエンコーディングは不要だった。何か他のエスケープ文字あったりする?
他のアプリの設定と一致しないので、ちょっと考えて、mix.batに以下二行を先頭に追加。
@set http_proxy=http://<proxy username>:<proxy password>@<server>:<port>/ @set https_proxy=http://<proxy username>:<proxy password>@<server>:<port>/
これで、「mix local.hex」は成功する。mixコマンド経由ではとりあえずプロキシ通る。
Phoenix導入
「mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez」
です。
上が通れば出来るはず。
skeleton試してみる(mix phoenix.new --no-brunch --no-ecto&mix phoenix.server)
プロジェクトの置き場に行って
mix phoenix.new <project name> --no-brunch --no-ecto
する。
すると、
「Fetch and install dependencies?」と聞かれてYを選択すると、その後に、mix deps.getが実行されて、依存関係のあるモジュールも落ちてくる。
cd <project name> mix phoenix.server
で、フォルダ配下のElixirのファイルがコンパイルされて、サーバが動く。
普通にプロジェクト作ってみる(mix phoenix.new)
プロジェクトの置き場に行って
mix phoenix.new <project name> --no-brunch --no-ecto
する。
Phoenixのテンプレートがコピーされるまでは一緒(但しモジュールが増えてる)。
ただ、先の質問でYを答えると、mix deps.getの後に、
npm install && node node_modules/brunch/bin/brunch build
が実施されている。これが遅い。
これで、package.jsonの内容をインストールしているらしい。
んだが、クソ重い。なんだこれ。
まあ、他にCPU使ってるのもあるんだけど・・・・・・