Konfigurace Flask dev server tak, aby byly viditelné v celé síti

hlasů
237

Nejsem si jistý, jestli se jedná o specifický Baňka, ale když jsem spustit aplikaci v režimu pro vývojáře ( http://localhost:5000), nemohu přístup z jiných počítačů v síti (s http://[dev-host-ip]:5000). S Rails v režimu pro vývojáře, například, to funguje dobře. Nemohl jsem najít žádné dokumenty týkající se konfigurace serveru dev baňky. Nějaký nápad, co by měl být nakonfigurován k tomu, aby to?

Položena 11/08/2011 v 09:40
zdroj uživatelem
V jiných jazycích...                            


12 odpovědí

hlasů
417

I když je to možné, neměli byste používat baňky dev serveru ve výrobě. Dev Server baňka není navržen tak, aby zvláště bezpečné, stabilní, nebo účinné. Podívejte se na dokumenty o nasazení pro správné řešení.


Přidejte parametr Vašeho přání app.run(). Ve výchozím nastavení běží na localhost, změnit jej app.run(host= '0.0.0.0')spustit na vašem zařízení IP adresu.

Zdokumentovány na místě nádoby pod „Zvnějšku viditelné Server“ na stránce Quickstart :

Externě viditelné Server

Pokud spustíte server si všimnete, že server je k dispozici pouze ze svého počítače, a ne z jakéhokoli jiného v síti. Toto je výchozí, protože v režimu ladění může uživatel aplikace spustit libovolný kód v jazyce Python na počítači. Pokud jste ladit s postižením nebo důvěřovat uživatelům v síti, můžete server veřejně dostupné.

Stačí změnit na volání run()metody vypadat takto:

app.run(host='0.0.0.0')

To říká svůj operační systém pro poslech na veřejné IP adresy.

Odpovězeno 11/08/2011 v 14:53
zdroj uživatelem

hlasů
11

Pokud vaše coolaplikace je to konfigurace načtena z externího souboru, jako v následujícím příkladu, pak nezapomeňte aktualizovat odpovídající konfigurační soubor s hostitelskými = „0.0.0.0“

cool.app.run(
    host=cool.app.config.get("HOST", "localhost"),
    port=cool.app.config.get("PORT", 9000)
)            
Odpovězeno 07/05/2015 v 20:52
zdroj uživatelem

hlasů
-1

Přidání do @ Shawn odpověď, tam je také variabilní SERVER_NAME zabudovaný konfigurace. můžeme nastavit, aby se 0.0.0.0 v konfiguračním souboru, který určíte v app.config.from_pyfile ( „config.py“). Také si všimněte, že tato přepíše app.run název hostitele.
Reference: http://flask.pocoo.org/docs/0.10/config/

Odpovězeno 02/02/2016 v 06:23
zdroj uživatelem

hlasů
38

Pokud použijete baňky spustitelný spustit server, můžete použít flask run --host=0.0.0.0k změnit výchozí od 127.0.0.1 a otevřít ji až mimo místní připojení. Tyto config a app.run metody, které ostatní odpovědi popsat jsou pravděpodobně lepší praxe, ale to může být užitečné také.

Externě Viditelné Server Pokud spuštění serveru zjistíte, že server je přístupná pouze z vlastního počítače, nikoli z jakéhokoli jiného v síti. Toto je výchozí, protože v režimu ladění může uživatel aplikace spustit libovolný kód v jazyce Python na počítači.

Pokud jste ladicí vypnuty nebo důvěru uživatelů v síti, můžete server veřejně dostupné pouhým přidáním --host = 0.0.0.0 na příkazový řádek:

Baňka run --host = 0.0.0.0 To říká svůj operační systém pro poslech na všech veřejných IP.

Reference: http://flask.pocoo.org/docs/0.11/quickstart/

Odpovězeno 29/10/2016 v 01:28
zdroj uživatelem

hlasů
3

Přidejte pod linií do projektu

if __name__ == '__main__':
    app.debug = True
    app.run(host = '0.0.0.0',port=5005)
Odpovězeno 04/01/2018 v 09:18
zdroj uživatelem

hlasů
1

Měl jsem stejný problém, já používám PyCharm jako redaktor a když jsem vytvořil projekt, PyCharm vytvořil baňky Server. To, co jsem udělal, bylo vytvořit server s Python v následujícím způsobem;

Config Python Server PyCharm v podstatě to, co jsem udělal, bylo vytvořit nový server, ale baňky, ne-li python

Doufám, že to pomůže

Odpovězeno 04/07/2018 v 02:02
zdroj uživatelem

hlasů
0

Zkontrolujte, zda je konkrétní port je otevřený na serveru sloužit klientovi, nebo ne?

V Ubuntu nebo Linux distro

sudo ufw enable
sudo ufw allow 5000/tcp //allow the server to handle the request on port 5000

Nakonfigurovat aplikaci pro práci s vzdálené požadavky

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


python3 app.py & #run application in background
Odpovězeno 01/09/2018 v 19:12
zdroj uživatelem

hlasů
0

Tato odpověď není výhradně v souvislosti s baňky, ale měla by být použitelná pro všechny, není možné připojit službu z jiného hostitele problém.

  1. pouze netstat -ano | grep <port>zjistit, zda je adresa 0.0.0.0 nebo ::. Pokud je to 127.0.0.1, pak je pouze pro místní požadavky.
  2. používat tcpdump zjistit, zda některý paket chybí. Kdyby to ukazují zjevnou nerovnováhu, zkontrolujte směrování pravidla, iptables.

Dnes jsem běžet můj baňky aplikaci jako obvykle, ale všiml jsem si, že se nemůže připojit z jiného serveru. Pak běhám netstat -ano | grep <port>a místní adresa ::nebo 0.0.0.0(jsem se snažil oba, a já vím, 127.0.0.1 umožňuje pouze připojení z místního hostitele). Pak jsem použil telnet host port, výsledek je podobný connect to .... To je velmi zvláštní. Pak jsem si myslel, by lépe kontrolovat ji tcpdump -i any port <port> -w w.pcap. A všiml jsem si, že je všechno takhle:

tcpdump výsledek ukazuje, že je tam jen SYN pakety od vzdáleného hostitele

Pak zaškrtnutím iptables --listvýstupní část, viděl jsem několik pravidel:

iptables výsledková listina

Tato pravidla zakazují výstupní tcp důležité paketů handshaking. Jejich mazání, problém je pryč.

Odpovězeno 24/03/2019 v 11:34
zdroj uživatelem

hlasů
0

Zkuste to v případě, že metoda 0.0.0.0 nefunguje

Boring Stuff

Já osobně bojoval hodně, aby mi aplikace přístupné i pro jiné zařízení (notebooky a mobilní telefony) prostřednictvím místního-server. Snažil jsem se o metodu 0.0.0.0, ale ne štěstí. Pak jsem se pokusil změnit port, ale to prostě nefungovalo. Takže poté, co se snaží spoustu různých kombinací, přijel jsem k tomuto jeden, a to vyřešit můj problém nasazení mé aplikace na místním serverem.

kroky

  1. Získejte místní adresu IPv4 počítače. To lze provést zadáním ipconfigna Windows a ifconfigLinux a Mac.

IPv4 (Windows)

Poznámka: Výše ​​uvedený krok je třeba provést na stroji, který sloužící aplikaci dál a dál ne stroj, na kterém je přístup. Také si všimněte, že adresa IPv4 se může změnit, pokud odpojit a znovu připojit k síti.

  1. Nyní jednoduše spustit aplikaci baňky s získané adresy IPv4.

    flask run -h 192.168.X.X

    Například v mém případě (viz obrázek), běžel jsem to jako:

    flask run -h 192.168.1.100

spuštění aplikace baňky

Na svém mobilním zařízení

screenshot z mého mobilního telefonu

Volitelné Stuff

Pokud provádíte tento postup v systému Windows, a pomocí aplikace Power Shell jako CLI, a přesto nejsou schopni získat přístup k webu, zkuste použít příkaz CTRL + C v plášti, který je spuštěna aplikace. Power Shell zmrznout up a někdy potřebuje špetku oživit. Mohlo by dokonce ukončit server, ale to někdy dělá trik.

A je to. Dát palec nahoru, pokud jste nalezli tuto helpful.😉

Některé více volitelných věci

Vytvořil jsem krátký Powershell skriptu, který vás dostane svou IP adresu, kdykoliv budete potřebovat:

$env:getIp = ipconfig
if ($env:getIp -match '(IPv4[\sa-zA-Z.]+:\s[0-9.]+)') {
    if ($matches[1] -match '([^a-z\s][\d]+[.\d]+)'){
        $ipv4 = $matches[1]
    }
}
echo $ipv4

Uložit jej do souboru s .ps1 extenstion (pro PowerShell), a spusťte jej před zahájením aplikace. Můžete jej uložit do složky projektu a spusťte jej jako:

.\getIP.ps1; flask run -h $ipv4

Poznámka: Zachránil jsem výše uvedený kód shell v getIP.ps1.

Cool.👌

Odpovězeno 04/06/2019 v 09:52
zdroj uživatelem

hlasů
0

přejít na projekt nastavena cesta FLASK_APP = ABC.py SET FLASK_ENV = vývoj

Baňka run -h [yourIP] -p 8080 bude následující o / p o CMD: - * Servírovací Flask aplikaci "expirement.py" (líná nakládací) * prostředí: vývoj * režim ladění: o * Opětovné se stat * Ladicí je aktivní ! * Ladicí PIN: 199-519-700 * Běh na http: // [yourIP]: 8080 / (Stisknutím CTRL + C pro ukončení)

Odpovězeno 26/06/2019 v 13:21
zdroj uživatelem

hlasů
0

Přejděte do svého projektu cestu na CMD (příkazového řádku) a spusťte následující příkaz: -

set FLASK_APP = ABC.py

SET FLASK_ENV = vývoj

Baňka run -h [yourIP] -p 8080

dostanete následující O / P na CMD: -

  • Podávat Baňka app "expirement.py" (lazy loading)
    • Životní prostředí: Vývoj
    • Režim ladění: on
    • Restart se stat
    • Ladicí je aktivní!
    • Ladicí PIN: 199-519-700
    • Běh na http: // [yourIP]: 8080 / (Stisknutím CTRL + C pro ukončení)

Nyní můžete přistupovat ke svému baňky aplikaci na jiném zařízení pomocí http: // [yourIP]: 8080 / url

Odpovězeno 26/06/2019 v 13:27
zdroj uživatelem

hlasů
0

Pokud máte problémy s přístupem ke svému Flask server nasazeny pomocí PyCharm , vzít v úvahu následující:

PyCharm nespustí své hlavní .py soubor přímo, takže jakýkoli kód if __name__ == '__main__':nebudou provedeny, a veškeré změny (jako app.run(host='0.0.0.0', port=5000)) se neprojeví.

Místo toho byste měli nastavit server baňky za užití Run konfigurací, zejména umístěním --host 0.0.0.0 --port 5000do další volby pole.

Provozovány cofigurations baňky serveru PyCharm

Více informací o konfiguraci serveru Flask v PyCharm

Odpovězeno 14/08/2019 v 17:58
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more