• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Udostępnienie serwera Python Flask

Object Storage Arubacloud
+2 głosów
143 wizyt
pytanie zadane 7 stycznia w Python przez piotr_domanski Bywalec (2,080 p.)

Witam,

Mam taki problem, napisałem sobie prosty kod serwera w Pythonie w Flask, wszystko śmiga z moim programem  w C++ przez Curl. Tylko to działa tylko lokalnie. Próbowałem już zrobić to przez przekierowanie portów na ruterze. Tzn.:

Mój router to Orange FunBox6 (światłowód)

1) Podłączyłem komputer przez kabel Ethernet

2) Uruchomiłem skrypt serwera

3) Przekierowałem porty: trzeba było wpisać port zewnętrzny (wpisałem 8080) i port wewnętrzny (5000), Flask mi działa na porcie 5000: 

Nie wiem co robię źle ale komunikacji z serwerem nie ma żadnej z zewnątrz. Wpisałem w przeglądarkę publiczny adres IP routera i nic.

KOD SERWERA:

from flask import Flask, send_file, request, abort

app = Flask(__name__)

# Ustaw klucz API
API_KEY = 'moje_api'

@app.route('/get_file/<path:file_path>', methods=['GET'])
def get_file(file_path):
    # Sprawdź, czy przekazany jest klucz API w nagłówku
    client_api_key = request.headers.get('X-API-Key')

    if client_api_key != API_KEY:
        abort(403)  # Zakaz dostępu, jeśli klucz API jest nieprawidłowy

    try:
        return send_file(file_path, as_attachment=True)
    except FileNotFoundError:
        abort(404)  # Plik nie istnieje
    except Exception as e:
        abort(500)  # Wewnętrzny błąd serwera

if __name__ == '__main__':
    app.run(port=8080)

Nie wiem jak rozwiązać problem. Pozdrawiam

Piotr Domański

 

3 odpowiedzi

0 głosów
odpowiedź 7 stycznia przez reaktywny Nałogowiec (41,050 p.)
wybrane 7 stycznia przez piotr_domanski
 
Najlepsza

Poczytaj u cioci Google pod hasłem: "Expose localhost to the web" otrzymasz masę tutoriali, które tłumaczą tak jak koledzy jak tego dokonać.

Tu jest dobry tutek: https://www.baeldung.com/cs/localhost-remote-access

Warto jeszcze wspomnieć o usługach, które robią niemal to samo, tj. udostępniają stronę / serwis / twoje usługi on-line, ale robią to przez specjalny tunel! Działa to trochę na innej zasadzie i jest ponoć bezpieczniejsze. Jednym z takich serwisów jest ngrok.io ale jest ich sporo więcej:

i wiele innych.

 

 

0 głosów
odpowiedź 7 stycznia przez AnimaVillis Stary wyjadacz (11,510 p.)
Musisz oba porty udostępnić publicznie no i pytanie czy faktycznie masz publiczny adres ip :)

Niektóre ISP udostępniają go odpłatnie jak np. lokalny z którego korzystam i liczy sobie 10zł/msc.
komentarz 7 stycznia przez piotr_domanski Bywalec (2,080 p.)
Publiczne IP mam bo raz już udostępniałem stronę na ubuntu server na apache i działała publicznie/

co do tych portów to co mam wpisać w port wewnętrzy i zewnętrzny?
komentarz 7 stycznia przez AnimaVillis Stary wyjadacz (11,510 p.)
Chociażby dlatego, że skoro przekierowujesz port przykładowo 8080 na ip komputera to ten port jest otwarty, skoro nie masz odpowiedniego routingu w aplikacji to albo odblokowujesz oba porty albo poczytaj sobie o Reverse Proxy.
0 głosów
odpowiedź 7 stycznia przez adrian17 Ekspert (344,860 p.)

Jak dokładnie odpalasz flaska?

Pokazuje Ci się `

 * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)

Z dokładnie tym IP? Jak tak to musisz jeszcze dodać `--host=0.0.0.0` przy odpalaniu.

Patrz: https://flask.palletsprojects.com/en/3.0.x/quickstart/#public-server

A, no i masz w kodzie `app.run(port=8080)`, a powiedziałeś "Flask mi działa na porcie 5000", co się nie zgadza.

Zakładam że nie masz pomiędzy żadnego właściwego serwera HTTP jak nginx (który na dłuższą metę powinieneś mieć, ale nie jest wymagane w tym momencie - tylko notka na przyszłość).

komentarz 7 stycznia przez piotr_domanski Bywalec (2,080 p.)
mam to  Running on http://127.0.0.1:8080

 Z tym serwerem nginx wczoraj jak próbowałem to odpalić to mi się pokazał napis nginx pod napisem NOT FOUND, coś takiego było
komentarz 7 stycznia przez adrian17 Ekspert (344,860 p.)
No to przeczytaj to co napisałem pod spodem :)
komentarz 7 stycznia przez piotr_domanski Bywalec (2,080 p.)

zmieniłem na

app.run(host='0.0.0.0', port=5000)

 

Podobne pytania

0 głosów
0 odpowiedzi 109 wizyt
pytanie zadane 14 kwietnia 2022 w Python przez Karolina932022 Nowicjusz (170 p.)
0 głosów
1 odpowiedź 265 wizyt
pytanie zadane 24 lutego 2021 w Python przez Klmn3 Nowicjusz (120 p.)

92,579 zapytań

141,432 odpowiedzi

319,662 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...