Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Nas synology hébergé une application python/flask sur le port 80

+1 vote

J'ai réalisé mon application web avec python et flask et j'aurai aimer pouvoir l'héberger sur mon nas syno sur le port 80.

Mais voilà, après pas mal de recherches je n'ai tjr pas réussi...
Je peut en effet l'héberger sur un autre port par exemple 9000, mais le but est de pouvoir l'hébergé sur le port 80 pour que le nom de domaine puisse pointer directement sur le site.

Donc est-ce possible d’héberger mes apps python/flask sur un nas sur le port 80 de n'importe quel manière, cgi, fastcgi, mod_wsgi, la version de dsm est la 6.0 ?

demandé 1-Dec-2016 par trockler
edité 1-Dec-2016 par max

1 Réponse

+2 votes
 
Meilleure réponse

Voilà, j'ai enfin trouvé... Et comme beaucoup de personnes se demande comment faire.

Deux solutions

Solutions 1:

  • Installer chroot debian dans les packets community du syno
  • Désactiver apache sur dsm ( Photo station ne fonctionnera plus mais vous pouvez réactiver apache par la suite donc ce n'est pas perdu "Attention il y a deux serveurs apache qui tourne simultanément sur le dsm et qui écoute le port 80 par défaut si webstation est désactiver le deuxieme apache écoute pour rediriger sur le port 5000 du syno...") à vous de les stopper pour que le serveur apache de debian puisse écouter sur le port 80 par défaut. "je ne sais plus exactement comment j'ai fait mais google c'est votre pote"
  • /var/packages/debian-chroot/scripts/start-stop-status start
  • /var/packages/debian-chroot/scripts/start-stop-status chroot
  • apt update && apt upgrade
  • apt-get install apache2 libapache2-mod-wsgi
  • Ensuite vous installez mysql où mariadb "server et client"

Pour apache2 vérifier que vous disposez soit du modpython, modwsgi, mod_cgi

La doc flask: http://flask.pocoo.org/docs/0.11/deploying/mod_wsgi/
Référer vous à la doc pour modifier apache sur le debian et créer votre fichier .wsgi, .fastcgi...

Voilà vous pouvez coder vos applications avec divers framework python! Vous pouvez également installer virtualenv, pip etc...

Solution 2:
Pas besoin de chroot debian... juste sur dsm

  • Activez les packages python où python3
  • Ativez la connexion ssh dans le syno port 22
  • Dans votre terminal: "ssh monutilisateur@ipsyno et ensuite entrez votre mot de passe"
  • Vous prenez les droits: "root "sudo -i"
  • Installer virtualenv: "easy_install virtualenv"
  • Monter votre environnement virtuel exemple: "virtualenv --no-site-packages -p /usr/bin/python2.7 flaskweb
  • source bin/activate
  • pip install flask
  • pip freeze > requirements.txt "pas obligatoire"
  • utiliser un port différents de 80 par exemple 9000
  • Dans dsm créer un virtualhost par exemple : "flask"
  • Créer le dossier "flask" dans votre répertoire www
  • Créer un fichier index.php au niveau de la racine
  • Dans ce fichier index.php ecriver juste:

    <?php header('Location: http://votreaddr:9000') ?>

Votre applications sera hébergé sur le port 9000 mais quand une personne se connectera sur votre nom de domaine 'port 80', elle sera rediriger sur votre nom de domaine 'port 9000'

Au niveau du fichier flask exemple:

#! /usr/bin/python2.7
# -*- coding:utf-8 -*-

import os
from flask import Flask

app = Flask(__name__)

app.config.from_object(__name__)
app.config.update(dict(
    DEBUG = False,
    THREADED = True,
    SECRET_KEY = os.urandom(24)
))

@app.route('/')
def page_index():
    return "<h1>Hello</h1>"

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=9000)

J'avoue ce n'est pas super propre mais je n'ai pas trouvé mieux... c'est même très très moche car on utilise le serveur interne de python qui n'est pas prévus pour faire de la production...
Favoriser le chroot debian.

Pour la première méthode c'est hyper casse tête de tout stopper sur le port 80 du syno, c'est le truc réellement difficile...

Mais bon, on peut donc hébergé une application python /flask /bottle /django sa fonctionne des deux manières! pour le chroot debian sur le port 80 :) c'est cool car on ne casse pas tout sur le syno, on peut donc stopper le serveur du chroot debian pour relancer celui du syno.

!!!!! IMPORTANT: avant le chroot, activer bien la connexion ssh et telnet pour être certain de gardez accès aux syno et de pouvoir start apache.

répondu 2-Dec-2016 par trockler

Cool, merci d'avoir donné la soluce, si tu pouvais cliquer sur la coche en dessous de ta réponse pour la marquer comme "acceptée", comme ça ça servira aux autres.
Merci.

Coucou max, sorry c'est la première fois que je fesais un question/réponse sur indexerror, je ne vois pas la coche en dessous de la réponse :s

là :)

enter image description here

Mdr le plan, ça ne peut pas être plus clair ! En tout cas merci d'avoir partagé la solution c'est cool

...