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
Hi @pyguerder, thanks for your answer. I tried using the relative path but I'm having the same problem, I guess the problem is with the libraries or how I import them. If I look in the log file I cannot see anything related to the CGI, that's why I'm so confused.