Firewalldのポート開放 & phoenix app 起動 @Fedora22(Conoha VPS)
phoenixのサンプル画面がブラウザから確認できなかった。
サーバー上でwgetすると取れるし、ローカルPCからpingも通る。
tcpdump port 4000 みてると、たしかにブラウザからのアクセスは届いてはいた。
ファイアーウォールまわりだろうとはすぐ絞れたけど
iptables使ってない、firewalldになったとかでハマった。
systemctl restart firewalld とするべきを firewall-cmd --reloadしていた。
/usr/lib/firewalld/services/http.xmlをコピーして
/etc/firewalld/services/http.xmlを書き換えるとか試したけど、コマンドでやるのが確実。
以下でポート開放された。
現状の確認
[root@host ~]# firewall-cmd --list-all FedoraServer (default, active) interfaces: eth0 sources: services: cockpit dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
サービスを追加
[root@host ~]# firewall-cmd --permanent --add-service=http success [root@host ~]# firewall-cmd --permanent --add-service=https success
ポートを開ける
[root@host ~]# firewall-cmd --permanent --add-port=80/tcp success [root@host ~]# firewall-cmd --permanent --add-port=4000/tcp success
firewalldを再起動
[root@host ~]# systemctl restart firewalld [root@host ~]# firewall-cmd --list-all FedoraServer (default, active) interfaces: eth0 sources: services: cockpit dhcpv6-client http https ssh ports: 4000/tcp 80/tcp masquerade: no forward-ports: icmp-blocks: rich rules:
phoenixのサンプルアプリを作成
[user@host app] mix phoenix.new app
アプリを port 4000 で起動
[user@host app]# mix phoenix.server
ビルドは以下に作られる
[user@host app]# tree -L 1 _build/ _build/ ├── dev └── prod
アプリのホスト名・ポートなどの設定変更は以下のファイルを書き換える。モード別に配置されている
tree -L 1 config/ config/ ├── config.exs ├── dev.exs ├── prod.exs ├── prod.secret.exs └── test.exs
production mode ( port 80 )で起動
[user@host app]# MIX_ENV=prod mix compile.protocols [user@host app]# sudo MIX_ENV=prod PORT=80 /usr/local/src/elixir-1.1.1/bin/elixir -pa _build/prod/consolidated -S /usr/local/src/elixir-1.1.1/bin/mix phoenix.server