Sto riscontrando alcuni problemi con il mix e MIX_ENV=prod
con mix phoenix.server
, dove non riesce all'avvio. Funzionando tutti i più recenti (Elixir 1.0.5, Phoenix 0.14.0) eccetto Erlang (17.x, 17.3 penso) su Ubuntu 14.04 di Linode.MIX_ENV = prod su un server Phoenix si blocca all'avvio con 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,[]]}}}"}
In particolare, penso che sia questa parte della traccia.
{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]}
Di solito non è necessario eseguire Phoenix dietro a nginx. :) –
Giusto. Questo è solo meglio se non vuoi eseguire il tuo codice a livello di applicazione come root ma assolutamente bisogno della porta 80/443 (che pensavo sarebbe potuta essere il caso qui). –
Si potrebbe anche eseguire un NAT sulla porta usando iptables (o firewall di preferenza). Es: iptables -t nat -A OUTPUT -d myhostname p tcp --dport 80 -j REDIRECT --to-porte 8080 && iptables -t nat -A PREROUTING -d myhostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 – diogovk