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
@xoancosmed: I don't know if this is still working, I have another hosting now. But I am pretty sure there is a mistake in your
.htaccess
RewriteRule ^(.*)$ /home/xxxxxxx/yyyyyyyy/api.cgi/$1 [QSA,L]
should not contain a full path, try withRewriteRule ^(.*)$ api.cgi/$1 [QSA,L]
.Also, you can probably have more details about the error 500 in the logs https://logs.ovh.net/
Regards