====== uWSGI ====== **uWSGI** je vysoce výkonný aplikační server a projekt zaměřený na budování plnohodnotného stacku pro síťové aplikace. Ačkoliv je nejznámější jako server pro aplikace v jazyce **Python** (přes rozhraní WSGI), jedná se o univerzální nástroj podporující mnoho jazyků a protokolů. Je napsán v čistém jazyce C, což mu zajišťuje minimální režii a extrémní stabilitu. ===== Klíčové funkce ===== uWSGI není jen jednoduchý server, ale komplexní nástroj pro správu procesů: * **Podpora více jazyků:** Kromě Pythonu podporuje také Ruby (Rack), PHP, Perl, Go nebo Lisp. * **Protokol uwsgi:** Implementuje vlastní binární protokol, který je mnohem rychlejší než standardní HTTP. Často se používá v kombinaci s webovým serverem (např. Nginx). * **Správa procesů (Preforking):** Dokáže efektivně spravovat pracovní procesy (workery), automaticky je restartovat při selhání nebo škálovat podle zátěže. * **Offloading:** Schopnost delegovat náročné úlohy (např. odesílání velkých souborů) na speciální vlákna, aby se uvolnili pracovníci pro další požadavky. ===== Typické zapojení v infrastruktuře ===== V produkčním prostředí se uWSGI málokdy používá samostatně. Obvykle stojí v řadě za reverzní proxy: `Uživatel (Browser) <--> Nginx (Reverzní proxy) <--> uWSGI <--> Webová aplikace (např. Django/Flask)` * **Nginx** se stará o SSL certifikáty a statické soubory. * **uWSGI** spouští kód aplikace a spravuje její běh. ===== Srovnání: WSGI vs. uwsgi vs. uWSGI ===== Často dochází k pletení těchto podobných názvů: ^ Pojem ^ Význam ^ | **WSGI** | Standard (protokol) pro komunikaci mezi Pythonem a webovým serverem. | | **uwsgi** | Rychlý binární protokol pro přenos dat mezi proxy a aplikačním serverem. | | **uWSGI** | Samotný software (server), který oba výše zmíněné pojmy implementuje. | ===== Příklad konfigurace (.ini) ===== uWSGI se často konfiguruje pomocí souborů INI: [uwsgi] module = myapp.wsgi:application master = true processes = 4 socket = /tmp/myapp.sock chmod-socket = 660 vacuum = true die-on-term = true --- //Související pojmy: [[https://it-slovnik.cz/pojem/python|Python]], [[https://it-slovnik.cz/pojem/server|Server]], [[https://it-slovnik.cz/pojem/http|HTTP]]//