Comment changer le port dans Flask?

J’ai un serveur Flask qui fonctionne sur le port 9000, et tout va bien. Je peux y accéder à l’adresse http://exemple.com:9000

Mais est-il possible d’y accéder simplement à l’adresse http://example.com ? Je suppose que cela signifie que je dois changer le port de 9000 à 80. Mais lorsque j’essaie cela sur Flask, j’obtiens ce message d’erreur lorsque je l’exécute.

Traceback (most recent call last):
  File "script.py", line 14, in <module>
app.run(host="0.0.0.0", port=int("80"), debug=True)
   File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 872, in run
run_simple(host, port, self, **options)
  File "/usr/local/lib/python2.6/dist-packages/werkzeug/serving.py", line 865, in run_simple
    test_socket.bind((hostname, port))
  File "<string>", line 1, in bind
socket.error: [Errno 98] Address already in use

En exécutant lsof -i :80, le système retourne

COMMAND   PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
apache2   652     root    bob IPv4 82108840      0t0  TCP *:www (LISTEN)
apache2  6621 www-data    bob IPv4 82108840      0t0  TCP *:www (LISTEN)
apache2 12587 www-data    bob IPv4 82108840      0t0  TCP *:www (LISTEN)
apache2 12588 www-data    bob IPv4 82108840      0t0  TCP *:www (LISTEN)
apache2 12589 www-data    bob IPv4 82108840      0t0  TCP *:www (LISTEN)

Dois-je d’abord tuer ces processus ? Ou existe-t-il un autre moyen de continuer à faire fonctionner Flask sur le port 9000 tout en redirigeant le domaine du site Web principal d’une manière ou d’une autre ?

Arrêter les autres applications qui utilisent le port 80. Puis exécuter l’application avec le port 80 :

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

Voir ce tuto, peut vous aider.

Pour un serveur visible de l’extérieur, où vous n’utilisez pas Apache ou un autre serveur web, il suffit de taper:

flask run --host=0.0.0.0 --port=80

Si vous utilisez la méthode suivante pour modifier le port ou l’hôte :

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

utiliser la commande suivante pour démarrer le serveur (mon entrée principale pour flask est app.py) :

python app.py

au lieu d’utiliser :

flask run