Redbean 2.0 je platforma pre webové aplikácie zabalená v univerzálnom spustiteľnom ZIP archíve

Predstavuje sa vydanie projektu Redbean 2.0, ktorý ponúka webový server, ktorý vám umožňuje dodávať webové aplikácie vo forme univerzálneho spustiteľného súboru, ktorý je možné spustiť na systémoch Linux, Windows, MacOS, FreeBSD, NetBSD a OpenBSD. Všetky zdroje spojené s webovou aplikáciou a serverom sú skompilované do jedného spustiteľného súboru, ktorý je kompatibilný s formátom archívu ZIP a umožňuje vám použiť pomôcku zip na pridávanie ďalších súborov. Schopnosť spustiť jeden súbor na rôznych operačných systémoch a nechať ho rozpoznať ako ZIP archív je dosiahnutá manipuláciou s hlavičkami spustiteľných súborov a prepojením s multiplatformovou štandardnou C knižnicou Cosmopolitan. Kód projektu je distribuovaný pod licenciou ISC.

Myšlienkou projektu je dodať jeden spustiteľný súbor „redbean.com“ so vstavaným webovým serverom. Vývojár webových aplikácií môže použiť pomôcku zip na pridanie súborov HTML a Lua do tohto súboru a získať tak samostatnú webovú aplikáciu, ktorá beží na všetkých populárnych operačných systémoch a na spustenie v systéme nevyžaduje samostatný webový server.

Po spustení výsledného spustiteľného súboru sa vstavaný webový server používa na prístup k webovej aplikácii uloženej v súbore. V predvolenom nastavení je handler pripojený k localhost, ale server možno použiť aj ako bežný verejný webový server (tento server slúži napríklad na webovú stránku projektu). Zabudovaný webový server podporuje prístup HTTPS a možno ho spustiť pomocou izolácie sandboxu, ktorá vám umožňuje kontrolovať, ku ktorým systémovým rozhraniam sa pristupuje. Na riadenie prevádzky servera počas jeho vykonávania je k dispozícii interaktívne rozhranie REPL (založené na Lua REPL a knižnici bestline, analógu GNU Readline), ktoré umožňuje interaktívne meniť stav procesu.

Tvrdí sa, že webový server je schopný spracovať viac ako milión požiadaviek za sekundu na bežnom počítači a obsluhuje obsah komprimovaný gzip. Výkonu pomáha to, že zip a gzip používajú spoločný formát, takže údaje sa poskytujú bez toho, aby boli znova zabalené z už komprimovaných oblastí v súbore zip. Navyše, keďže spustiteľný súbor je vytvorený pomocou statického prepojenia a má malú veľkosť, volanie fork na ňom predstavuje malú alebo žiadnu réžiu pamäte.

Okrem spracovania statického webového obsahu a spúšťania JavaScriptu v prehliadači je možné logiku webovej aplikácie rozšíriť pomocou skriptov v Lua, webového rámca Fullmoon a SQLite DBMS. Medzi ďalšie funkcie patrí podpora schémy hashovania hesiel argon2, možnosť určiť oblasť IP pomocou databázy MaxMind a prístup k Unix API knižnice Cosmopolitan. Veľkosť základného zásobníka, ktorý zahŕňa webový server, MbedTLS, Cosmopolitan, Lua a SQLite, je len 1.9 MB.

Univerzálny spustiteľný súbor je tvorený spojením segmentov a hlavičiek špecifických pre rôzne operačné systémy (PE, ELF, MACHO, OPENBSD, ZIP) do jedného súboru. Aby sa zabezpečilo, že jeden spustiteľný súbor beží na systémoch Windows a Unix, trikom je zakódovať súbory Windows PE ako skript shellu, pričom sa využije skutočnosť, že Thompson Shell nepoužíva značku skriptu „#!“. Výsledkom je spustiteľný súbor, ktorý kombinuje niekoľko rôznych formátov používaných v systémoch Linux, 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) počúvaj http://127.0.0.1:8080 >: čaká na príkaz… $ curl https://127.0.0.1:8080/hello .html ahoj $ printf 'ZÍSKAJTE /hello.lua\n\n' | nc 127.0.0.1 8080 ahoj



Zdroj: opennet.ru

Pridať komentár