Redbean 2.0 je platforma pro webové aplikace zabalená v univerzálním spustitelném ZIP archivu

Představuje se vydání projektu Redbean 2.0, který nabízí webový server, který vám umožňuje dodávat webové aplikace ve formě univerzálního spustitelného souboru, který lze spustit na systémech Linux, Windows, MacOS, FreeBSD, NetBSD a OpenBSD. Všechny prostředky spojené s webovou aplikací a serverem jsou zkompilovány do jediného spustitelného souboru, který je kompatibilní s formátem archivu ZIP a umožňuje vám pomocí nástroje zip přidávat další soubory. Schopnosti spustit jeden soubor na různých OS a nechat jej rozpoznat jako ZIP archiv je dosaženo manipulací se záhlavími spustitelných souborů a propojením s multiplatformní standardní C knihovnou Cosmopolitan. Kód projektu je distribuován pod licencí ISC.

Myšlenkou projektu je dodat jeden spustitelný soubor „redbean.com“ s vestavěným webovým serverem. Vývojář webových aplikací může použít utilitu zip k přidání souborů HTML a Lua do tohoto souboru a získat samostatnou webovou aplikaci, která běží na všech populárních operačních systémech a nevyžaduje samostatný webový server ke spuštění v systému.

Po spuštění výsledného spustitelného souboru je vestavěný webový server použit pro přístup k webové aplikaci uložené v souboru. Standardně je handler připojen k localhost, ale server lze použít i jako běžný veřejný webový server (tento server například obsluhuje web projektu). Vestavěný webový server podporuje přístup HTTPS a lze jej spustit pomocí izolace karantény, která vám umožňuje řídit, ke kterým systémovým rozhraním se přistupuje. Pro řízení provozu serveru během jeho provádění je k dispozici interaktivní rozhraní REPL (založené na Lua REPL a knihovně bestline, analogu GNU Readline), které umožňuje interaktivně měnit stav procesu.

Tvrdí se, že webový server je schopen zpracovat více než milion požadavků za sekundu na běžném počítači a obsluhuje obsah komprimovaný gzip. Výkonu pomáhá to, že zip a gzip používají společný formát, takže data jsou poskytována, aniž by byla znovu komprimována z již komprimovaných oblastí v souboru zip. Navíc, protože spustitelný soubor je vytvořen pomocí statického linkování a má malou velikost, volání fork na něm představuje malou nebo žádnou režii paměti.

Kromě zpracování statického webového obsahu a spouštění JavaScriptu v prohlížeči lze logiku webové aplikace rozšířit pomocí skriptů v Lua, webového rámce Fullmoon a SQLite DBMS. Mezi další funkce patří podpora schématu hashování hesel argon2, schopnost určit oblast IP pomocí databáze MaxMind a přístup k Unix API knihovny Cosmopolitan. Velikost základního zásobníku, který zahrnuje webový server, MbedTLS, Cosmopolitan, Lua a SQLite, je pouze 1.9 MB.

Univerzální spustitelný soubor je tvořen kombinací segmentů a hlaviček specifických pro různé operační systémy (PE, ELF, MACHO, OPENBSD, ZIP) do jednoho souboru. Aby bylo zajištěno, že jeden spustitelný soubor běží na systémech Windows a Unix, je trikem zakódovat soubory Windows PE jako skript shellu s využitím skutečnosti, že Thompson Shell nepoužívá značku skriptu „#!“. Výsledkem je spustitelný soubor, který kombinuje několik různých formátů používaných v Linuxu, BSD, Windows a macOS. $ curl https://redbean.dev/redbean-demo-2.0.7.com >redbean.com $ chmod +x redbean.com $ zip redbean.com hello.html $ zip redbean.com hello.lua $ ./redbean .com -vv I2022-06-23T08:27:14+000767:redbean] (srvr) poslouchejte http://127.0.0.1:8080 >: čekání na příkaz… $ curl https://127.0.0.1:8080/hello .html ahoj $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 ahoj



Zdroj: opennet.ru

Přidat komentář