Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

apache2: installation API rest

0 votes

Bonjour,
depuis deux jours, je galère à installer une API Rest en python3.5
en suivant la documentation Installation API Rest

j'utilise mod_wsgi : libapache2-mod-wsgi-py3
l'application est dans le répertoire: /srv/www/myapp/all
j'utlise virtualenv avec python 3.5, mon venv est dans /srv/www/myapp/shared/venv

mon fichier myapp.wsgi est dans le répertoire /srv/myapp/all, son contenu est :

import os
import sys
sys.path.append('/srv/www/myapp/all')
os.environ['CONFIG_FILE'] = '/srv/www/myapp/all/conf.py'

activate_this = '/srv/www/myapp/shared/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

import myapp
application = myapp.app

j'ai ajouté le fichier /etc/apache2/conf-enabled/myapp.conf
son conenu est:

<VirtualHost *:80>
        ServerName  myapp.localhost
        DocumentRoot /srv/www/myapp/all/

        WSGIDaemonProcess myapp processes=1 threads=50 display-name='%{GROUP}'
        WSGIProcessGroup myapp
        WSGIApplicationGroup %{GLOBAL}
        WSGIImportScript /srv/www/myapp/all/myapp.wsgi process-group=myapp application-group=%{GLOBAL}
        WSGIScriptAlias / /srv/www/myapp/all/myapp.wsgi

        <Directory /srv/www/myapp>
                Order allow,deny
                Allow from all
        </Directory>
        KeepAlive Off
        LogLevel warn
        CustomLog /var/log/apache2/myapp.localhost-access.log combined
        ErrorLog /var/log/apache2/myapp.localhost-error.log
</VirtualHost>

j'ai modifié le fichier: /etc/hosts en mettant:
127.0.0.1 localhost, myapp.localhost

Impossibe d'atteindre l'application via le navigateur !

par contre si je lance la venv et je lance l'application à la main tout fonctionne bien.
si vous avez des idées pourquoi ça ne fonctionne pas en redémarrant apache2 je suis preneur.
Merci

demandé 24-Jan-2018 par anonyme

2 Réponses

0 votes

à en croire ceci https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/modwsgi/

le dossier indiqué sur la directive Directory est faux

sinon ; on n'expose jamais les sources python dans le DocumentRoot . Pas secure du tout.

répondu 24-Jan-2018 par foxmask (2,892 points)
+1 vote

Salut,
Il y a un autre problème avec ton conf apache: les threads...

python n'aime pas du tout les threads, il les gère pas très bien (GIL, tout ça...)
Pour ma part, j'ai abandonné mod_wsgi pour gunicorn qui est plus partique à mon gout et plus léger à configurer... apache ne sert que de reverse proxy vers un socket "en dur", càd dans le système de fichier.

Peace

répondu 24-Jan-2018 par frague (692 points)
...