Ich habe einige Probleme mit Mix und MIX_ENV=prod
mit mix phoenix.server
, wo es beim Start fehlschlägt. Alles läuft neu (Elixir 1.0.5, Phoenix 0.14.0) außer Erlang (17.x, 17.3 glaube ich) auf Linodes Ubuntu 14.04.MIX_ENV = Absturz auf einem Phoenix-Server stürzt ab mit PORT = 80
$ MIX_ENV=prod PORT=80 mix phoenix.server
{"Kernel pid terminated",application_controller,"{application_start_failure,elirc_site,{{shutdown,{failed_to_start_child,'Elixir.ElircSite.Endpoint',{shutdown,{failed_to_start_child,'Elixir.Phoenix.Endpoint.Server',{shutdown,{failed_to_start_child,{ranch_listener_sup,'Elixir.ElircSite.Endpoint.HTTP'},{shutdown,{failed_to_start_child,ranch_acceptors_sup,{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]},{supervisor,init,1,[{file,\"supervisor.erl\"},{line,243}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,306}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,239}]}]}}}}}}}}},{'Elixir.ElircSite',start,[normal,[]]}}}"}
Speziell ich denke, es ist dieser Teil der Spur.
{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]}
Es gibt normalerweise keine Notwendigkeit, Phoenix hinter nginx zu laufen. :) –
Richtig. Das ist nur dann besser, wenn Sie Ihren Code auf Anwendungsebene nicht als root ausführen möchten, sondern unbedingt Port 80/443 benötigen (was ich hier für möglich gehalten habe). –
Sie können auch eine NAT für den Port mit iptables (oder Firewall der Präferenz) tun. Ex: iptables -t nat -A OUTPUT -d myhostname -p --dport 80 tcp -j REDIRECT --to-Ports 8080 && iptables -t nat -A PREROUTING -d myhostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 – diogovk