2016-05-16 1 views
2

Je suis nouveau sur systemd. juste installé lubuntu16.04.
J'ai le fichier systemd suivant:Impossible de démarrer gunicorn avec systemd django

[Unit] 
Description=gunicorn daemon 
After=network.target 

[Service] 
User=jcg 
Group=jcg 
WorkingDirectory=/home/jcg/venvs/baseball/baseball_stats 
ExecStart=/home/jcg/.virtualenvs/baseball/bin/gunicorn -w 3 -b 0.0.0.0:8001 baseball_stats.wsgi 

[Install] 
WantedBy=multi-user.target 

Je reçois cette erreur:

[email protected]:/var/log$ systemctl status gunicorn 
● gunicorn.service - gunicorn daemon 
    Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled) 
    Active: failed (Result: exit-code) since Mon 2016-05-16 13:59:18 EDT; 9min ago 
    Process: 681 ExecStart=/home/jcg/.virtualenvs/baseball/bin/gunicorn -w 3 -b 0.0.0.0:8001 baseball_stats.wsgi 
Main PID: 681 (code=exited, status=200/CHDIR) 

May 16 13:59:18 jcg-Inspiron-1011 systemd[1]: Started gunicorn daemon. 
May 16 13:59:18 jcg-Inspiron-1011 systemd[1]: gunicorn.service: Main process exited, code=exited, status=200/CH 
May 16 13:59:18 jcg-Inspiron-1011 systemd[1]: gunicorn.service: Unit entered failed state. 
May 16 13:59:18 jcg-Inspiron-1011 systemd[1]: gunicorn.service: Failed with result 'exit-code'. 

Mais si j'exécuter ce gunicorn starts:

(baseball) [email protected]:~/venvs/baseball/baseball_stats$ /home/jcg/.virtualenvs/baseball/bin/gunicorn -w 3 -b 0.0.0.0:8001 baseball_stats.wsgi 

Qu'est-ce que je suis absent, ou faire du tort ?

+0

répertoire de travail ne semble pas être le même dans votre script et commande shell. J'espère que c'est juste une faute de frappe. –

+0

Bonne prise. J'ai changé /.venvs à/venvs mais le même problème –

+0

ne vous donne plus rien? – e4c5

Répondre

9

Pour les futurs lecteurs, mon problème était dû à l'absence d'un ensemble de variables d'environnement requis par mon application django. (settings.py lit l'environnement). Lorsque vous invoquez gunicorn à partir de la ligne de commande, cette variable d'environnement a déjà été définie.

Lorsque vous utilisez systemd les suivantes est nécessaire dans le fichier gunicorn.service:

[Service] 
    Environment=SECRET_KEY=secret 
+0

Pour plus d'informations, même si vous avez exporté vos variables d'environnement dans '~/.bash_profile' ou' ~/.bashrc', l'environnement doit être défini pour le service. Vous pouvez utiliser ces fichiers en ajoutant 'EnviromentFile = home/user/.bash_profile' au bloc' [Service] '. –

+0

Après avoir lu tous les articles, ça fonctionne bien ... merci de poster la solution. –