2017-10-18 4 views
0

J'essaie d'écouter mon application Phoenix sur le port 4000, mais ça ne marche pas. Tout d'abord, je génère mon application de production avec MIX_ENV=prod mix release --env=prod. Ensuite, je rsync le répertoire _build à mon serveur. Ensuite, je cours PORT=4000 ./_build/prod/rel/rumbl/bin/rumbl start. Puis, quand je curl localhost:4000, je n'obtiens aucune réponse.Comment faire pour que Phoenix écoute sur le port 4000?

Voici mon config/prod.exs:

use Mix.Config 

config :rumbl, Rumbl.Endpoint, 
    http: [port: {:system, "PORT"}], 
    url: [host: "localhost", port: {:system, "PORT"}], 
    cache_static_manifest: "priv/static/manifest.json" 

config :logger, level: :info 
import_config "prod.secret.exs" 

Répondre

1

Le problème est ici:

http: [port: {:system, "4000"}], 

il doit se lire comme:

http: [port: {:system, "PORT"}], 

et variable d'environnement système PORT doit être réglé et exportés :

export PORT=4000 

par exemple. dans votre profil de coque. Aussi vous devez ajouter

load_from_system_env: true, 
server: true, 
root: ".", 

lignes à votre config.

Si vous ne voulez pas le configurer, il suffit de faire:

http: [port: "4000"], 

{:system, "4000"} tente essentiellement de lire variable env 4000.


Sidenote: il est préférable de faire la ligne suivante pour correspondre exactement ce paramètre:

url: [host: "localhost", port: {:system, "PORT"}], 
+0

Je modifié mon fichier de configuration pour utiliser des variables du système, mais je ne suis toujours pas en mesure d'accéder à la site. –

+0

J'ai modifié mon message pour refléter les modifications mises à jour. –

+0

J'ai mis à jour une réponse: 'load_from_system_env: true' est important. – mudasobwa