Bienvenue sur IndexError.

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

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

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 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 par foxmask (2,830 points)
0 votes

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 par frague (536 points)
...