CentOS7+Phoenix Frameworkで80番ポートを使う方法
タイトルそのまま。デフォルトだと4000番ポートになってるけど、ブラウザでそのままアクセスできるように、80番(http)に変更してみる。
dev.exsの編集
projectを作成した後、config/dev.exs
のhttp: [port: 4000]
を以下のように編集する。
http: [port: 80]
firewalldの設定変更
この状態でサーバを起動しても、httpによる外部からのアクセスはiptablesによって拒否されるため、(iptablesを利用している)firewalldの設定を変更する。
firewalldがインストールされていない場合は、yum
で適宜インストールしておく。
80番ポートのアクセスを許可する。
# firewall-cmd --add-port=80/tcp --permanent
設定を反映させる。
# firewalld-cmd --reload
サーバの起動
いよいよサーバを起動するのだが、ルート権限で実行しないと以下のようなエラーが出てしまう。
[error] Failed to start Ranch listener HelloPhoenix.Endpoint.HTTP in :ranch_tcp:listen([port: 80]) for reason :eacces (permission denied)
=INFO REPORT==== 4-Nov-2016::16:54:58 ===
application: logger
exited: stopped
type: temporary
** (Mix) Could not start application hello_phoenix: HelloPhoenix.start(:normal, []) returned an error: shutdown: failed to start child: HelloPhoenix.Endpoint
** (EXIT) shutdown: failed to start child: Phoenix.Endpoint.Server
** (EXIT) shutdown: failed to start child: {:ranch_listener_sup, HelloPhoenix.Endpoint.HTTP}
** (EXIT) shutdown: failed to start child: :ranch_acceptors_sup
** (EXIT) {:listen_error, HelloPhoenix.Endpoint.HTTP, :eacces}
というわけで、ルート権限でサーバを起動する。
# mix phoenix.server