読者です 読者をやめる 読者になる 読者になる

DELAEMON BLOG

Live as if you were to die tomorrow. Learn as if you were to live forever.

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