Am un Balon de server care rulează prin portul 5000, și-l's bine. Am acces la http://example.com:5000
Dar este posibil să pur și simplu acces la http://example.com? Am'm presupunând că înseamnă că trebuie să schimbați portul de la 5000 la 80. Dar când am încerca asta pe Balon, I a lua acest mesaj de eroare atunci când am rula.
Traceback (most recent call last):
File "xxxxxx.py", line 31, 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 772, in run
run_simple(host, port, self, **options)
File "/usr/local/lib/python2.6/dist-packages/werkzeug/serving.py", line 706, in run_simple
test_socket.bind((hostname, port))
File "<string>", line 1, in bind
socket.error: [Errno 98] Address already in use
Rularea lsof -i :80
se întoarce
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 467 root 3u IPv4 92108840 0t0 TCP *:www (LISTEN)
apache2 4413 www-data 3u IPv4 92108840 0t0 TCP *:www (LISTEN)
apache2 14346 www-data 3u IPv4 92108840 0t0 TCP *:www (LISTEN)
apache2 14570 www-data 3u IPv4 92108840 0t0 TCP *:www (LISTEN)
apache2 14571 www-data 3u IPv4 92108840 0t0 TCP *:www (LISTEN)
apache2 14573 www-data 3u IPv4 92108840 0t0 TCP *:www (LISTEN)
Am nevoie pentru a ucide aceste procese prima? Este în siguranță? Sau există un alt mod de a păstra Flaconul care rulează pe portul 5000 dar au site-ul principal domeniu de redirecționare cumva?
Pentru exterior vizibil server, în cazul în care nu't folosi apache sau alte serverul web trebuie doar să tastați
flask run --host=0.0.0.0 --port=80
Deci's a aruncat în sus ca mesaj de eroare pentru că ai apache2
care rulează pe portul 80.
Dacă acest lucru este pentru dezvoltarea, m-aș lăsa așa cum este pe portul 5000.
Daca's pentru producție, fie:
Nu Se Recomandă
apache2
prima; Nu se recomandă ca se precizează în documentația:
puteți utiliza built-in server în timpul de dezvoltare, dar ar trebui să utilizați o implementare completă opțiune pentru aplicații de producție. (Nu utilizați built-in server de dezvoltare în producție.)
Recomandate
apache2
la Balon.În acest fel, apache2
putem ocupa de toate fișierele statice (pe care-l's foarte bun la - mult mai bine decât debug server construit în Balon) și acționează ca un proxy inversă pentru conținut dinamic, care trece de aceste cereri la Balon.
Aici's un link la documentația oficială despre configurarea Balon cu Apache + mod_wsgi.
Edit 1 - Clarificare pentru @Djack
HTTP Proxy trafic pentru Balon prin apache2
Atunci când o cerere vine de la serverul pe portul 80 (HTTP
) sau portul 443 ("HTTPS") un server web precum Apache sau Nginx se ocupă de legătura dintre cerere și lucrări ce să facem cu ea. În cazul nostru, o solicitare primită ar trebui să fie configurat pentru a fi trecut printr pentru Balon pe WSGI protocol și manipulate de cod Python. Aceasta este "dinamic" parte.
reverse proxy pentru conținut dinamic
Există câteva avantaje pentru configurarea server-ul web ca cele de mai sus;
Dacă utilizați următoarele opțiuni pentru a schimba portul sau gazdă:
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)
utilizați următorul cod pentru a porni serverul (mea principală de intrare pentru balon este app.py):
python app.py
în loc de a folosi:
flask run
Dacă doriți ca aplicația pe același port eu.e port=5000 atunci doar în terminalul rula această comandă:
fuser -k 5000/tcp
și apoi atunci a alerga:
python app.py
Dacă doriți pentru a rula pe un port specificat, de exemplu, dacă doriți pentru a rula pe portul=80, în principal fișier menționa doar asta:
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)
Problema ta este că ai un apache webserver rulează deja că este deja folosind portul 80. Deci, puteți fie să:
Kill apache: probabil că ar trebui să facă acest lucru prin intermediul `/etc/init.d/apache2 opri, mai degrabă decât pur și simplu uciderea ei.
Implementați balon aplicație în procesul de apache, ca balon în apache descrie.
Am avut de a stabili `FLASK_RUN_PORT în mediul meu de a specificat numărul de port. Data viitoare când porniți aplicația, Vasul va încărca pe care variabila de mediu cu număr de port-ați selectat.
Cel mai simplu și cele mai Bune Soluții
Salva .py fișier într-un folder. Acest caz dosarul meu nume este testul. În promptul de comandă, executați următoarea
c:\test> set FLASK_APP=application.py
c:\test> set FLASK_RUN_PORT=8000
c:\test> flask run
----------------- Următoarele vor fi returnate ----------------
* Serving Flask app "application.py"
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:8000/ (Press CTRL+C to quit)
127.0.0.1 - - [23/Aug/2019 09:40:04] "[37mGET / HTTP/1.1[0m" 200 -
127.0.0.1 - - [23/Aug/2019 09:40:04] "[33mGET /favicon.ico HTTP/1.1[0m" 404 -
Acum pe tipul de browser: http://127.0.0.1:8000. Multumesc