OVH permettait l'exécution du code Python sur son hébergement mutualisé. La version de Python utilisée était 2.6 mais Flask et ses dependances n'étaient sont pas installés en standard (vérifier).
Flask-0.10.1 (télécharger) fonctionne sur cet environnement. Ses dépendances sont :
- itsdangerous-0.24 (télécharger)
- Jinja2-2.8 (télécharger)
- MarkupSafe-0.23 (télécharger)
- Werkzeug-0.11.3 (télécharger)
- wheel-0.26.0 (télécharger)
Une fois les archives téléchargées extrayez-les dans un dossier projets.
Placez le code de votre application Flask dans le dossier projets/website.
L'arborescence résultante est la suivante :
/
├ projects/
│ ├ Flask-0.10.1/
│ │ ├ flask/
│ │ └ LICENSE
│ ├ itsdangerous-0.24/
│ │ ├ itsdangerous.py
│ │ └ LICENSE
│ ├ Jinja2-2.8/
│ │ ├ jinja2/
│ │ └ LICENSE
│ ├ MarkupSafe-0.23/
│ │ ├ markupsafe/
│ │ └ LICENSE
│ ├ Werkzeug-0.11.3/
│ │ ├ werkzeug/
│ │ └ LICENSE
│ ├ wheel-0.26.0/
│ │ ├ wheel/
│ │ └ LICENSE
│ └ website/
│ ├ templates/
│ | ├ template1.htm
│ | └ template2.htm
│ ├ main.py
│ ├ __init__.py
│ └ database.sqlite
└ www/
├ static/
│ ├ css/
│ ├ img/
│ └ js/
├ flask.cgi
├ .htaccess
├ sitemap.gz
└ robots.txt
Cette arborescence peut être personnalisée grâce aux instructions sys.path.append du fichier flask.cgi.
Ces instructions sont également à adapter en fonction du nom de votre compte OVH (moncompte dans le fichier ci-joint). En cas de doute, vous pouvez obtenir cette information en créant dans le dossier www un fichier PHP contenant <?php echo getcwd(); ?>.
Le fonctionnement repose sur les fichiers /www/.htaccess et /www/flask.cgi donnés ci-joints.
Il est essentiel que les permissions du fichier /www/flask.cgi soient 755 ou supérieures. Le problème est que le serveur OVH remet les permissions à 604 dès que le fichier est modifié. Pensez-y quand vous rencontrez des erreurs 500 !
Astuce : si vous hébergez votre site sur un contrat start10m (donc avec 10 Mo d'espace disque), vous pouvez supprimer tous les fichiers et dossiers des projets (docs, examples, artwork, etc.) sauf flask, itsdangerous.py, jinja2, markupsafe, werkzeug et wheel (et, pour respecter les license, LICENSE). Le dossier projets est ainsi réduit à 2,2 Mo !
De plus, par défaut, Python va stocker les fichiers bytecode (*.pyc) et ceux-ci réduiront d'autant l'espace disponible pour l'hébergement. Les lignes suivantes, à ajouter au fichier django.cgi, permettent d'empêcher Python de stocker ces fichiers (au prix d'une réduction des performances) :
os.environ['PYTHONDONTWRITEBYTECODE'] = '1'
sys.dont_write_bytecode = True
Bonsoir @pyguerder
J'ai essayé avec un main.py minimaliste
#!/usr/bin/env python# coding: UTF-8from flask import Flask, request, jsonifyapp = Flask(__name__) # reprend le nom du module@app.route('/test', methods=['GET'])def test():return "Hello ! I'm alive "# app.run()J'ai été obligé de commenter la ligne app.run(), sinon j'avais une exception " [Errno 13] Permission denied "
Malheureusement, je me heurte à une erreur "Not Found"
Je l'appelle avec l'url : flask.mondomaine.net/test
(J'ai fait un sous domaine flsak. pour faciliter ces tests)
Mon fichier minimaliste marche en local sur ma machine ubuntu 16.04 (mais python 3.5)
Pourriez-vous donner un exemple simple de fichier main.py incluant des directives Flask ?
Merci
PS : en cliquant sur votre lien de vérification, OVH semble être passé de la version python 2.6 à 2.7