2016-07-11 3 views
2

Ich entwickle eine Seite mit Python und Flask und möchte von localhost in meinem Browser auf den Entwicklungsserver und die Entwicklungsseite meines Teams wechseln, aber ich habe Probleme. Ich habe mir bereits die Flask-Dokumentation angesehen, die die Verwendung von host='0.0.0.0' oder die Angabe SERVER_NAME empfiehlt. Bis jetzt hat keines dieser Dinge geholfen. Hier ist ein Stück Code, um zu zeigen, was ich tue:Wechsel von localhost zu echter URL in Flask?

app = Flask(__name__) 

if __name__ == '__main__': 
    app.secret_key = 'super secret key' 
    app.config['SERVER_NAME'] = 'https://example.org/blah' 
    app.run(host=app.config['SERVER_NAME'], port=4343, debug=True) 

Wie Sie sehen können, statt localhost:500, ich möchte meinen Browser in der Lage sein zu gehen und besuchen 'https://example.org/blah' und die gleichen Dinge zu sehen.

Mit diesem Stück Code, erhalte ich diesen Fehler:

(py34)user:~/flask$ python app.py 
INFO - Connection with server established! 
INFO - Server version meets recommendations (v2.9) 
Traceback (most recent call last): 
File "app.py", line 18, in <module> 
app.run(host=app.config['SERVER_NAME'], port=4343, debug=True) 
File "/home/me/anaconda3/envs/py34/lib/python3.4/site-packages/flask/app.py", line 772, in run 
run_simple(host, port, self, **options) 
File "/home/me/anaconda3/envs/py34/lib/python3.4/site-packages/werkzeug/serving.py", line 674, in run_simple 
s.bind((hostname, port)) 
socket.gaierror: [Errno -2] Name or service not known 

Wenn anstelle SERVER_NAME der Verwendung von I host='0.0.0.0' verwenden, ich bekomme keine Fehler, und es wird "Running on http://0.0.0.0:4343/" erfolgreich starten, aber ich kann nicht folgen Diese URL in meinem Browser auf die gleiche Weise wie ich kann, wenn ich eine Verbindung zu meinem localhost.

Was muss ich tun, um meine flask app unter https://example.org/blah zu starten?

Auch, wenn es hilft zu wissen, muss ich ssh in meinem Server.

+2

Hinweis: Um zu vermeiden, dass URLs zwischen Produktion und Test geändert werden, können Sie '/ etc/hosts' verwenden, um DNS-Suchen zu verkürzen. – o11c

Antwort

2

Wenn Sie mit host='0.0.0.0' vom Server laufen, sollten Sie in der Lage sein, zu example.org:4343 zu navigieren und Ihre App zu sehen.

Zusätzlich erfordert SERVER_NAME den Port, pro der documentation:

the name and port number of the server. Required for subdomain support (e.g.: 'myapp.dev:5000')

Schließlich, wenn Sie Sie App ohne Port-Nummer angezeigt werden soll, müssen Sie entweder es im Hafen laufen 80 (oder 443) mit root-Berechtigungen oder die Verwendung von Nginx/Apache zum Weiterleiten der Anfrage von Ihrer Domain an die App.

+0

Es scheint, dass mein Server mit 'host = 0.0.0.0' automatisch an Port 443 sendet, und ich brauche einen Symlink, um ihn zu sehen. In diesem Fall muss ich Port4343 nicht angeben, aber ich glaube nicht, dass Flask läuft, wenn ich keinen Port gebe. – SnarkShark

+0

eigentlich ich denke, Sie sollten Nginx/Apache unabhängig verwenden ... der Kolben Webserver ist super hokey, ich denke, es immer noch http 1.1 – maxymoo

+0

@ maxymoo Ich würde auf jeden Fall zustimmen, vor allem, weil Flask ohne Debug-Modus dient nicht statische Dateien , das wäre dann die Aufgabe von Nginx/Apache. – Celeo