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
Bonjour,
J'ai finalement trouvé la bonne configuration pour un main.py minimaliste.
Pour préserver l'affichage de l'indentation, j'ai ajouté un . en début des lignes indentées.
L'appel avec l'url : flask.mondomaine.net/test2
provoque l'affichage : You want path: flask.cgi/test2
Il faut donc tenir compte dans les chemins de la règle de réécriture d'url qui insère flask.cgi...
Merci pour avoir trouvé la bonne configuration chez OVH !
Cela nous ouvre des voies intéressantes !
#!/usr/bin/env python# coding: UTF-8from flask import Flask, request, jsonifyapp = Flask(__name__) # reprend le nom du module@app.route('/', defaults={'path': ''})@app.route('/<path:path>')def catch_all(path):. return 'You want path: %s' % pathif __name__ == 'main':. app.run()