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-8
from flask import Flask, request, jsonify
app = 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