Redbean 2.0 je platforma za web aplikacije zapakirane u univerzalnu izvršnu ZIP arhivu

Predstavljeno je izdanje projekta Redbean 2.0 koji nudi web poslužitelj koji vam omogućuje isporuku web aplikacija u obliku univerzalne izvršne datoteke koja se može izvršiti na Linuxu, Windowsu, MacOS-u, FreeBSD-u, NetBSD-u i OpenBSD-u. Svi resursi povezani s web aplikacijom i poslužiteljem kompilirani su u jednu izvršnu datoteku, koja je kompatibilna s formatom ZIP arhive i omogućuje vam korištenje uslužnog programa zip za dodavanje dodatnih datoteka. Mogućnost pokretanja jedne datoteke na različitim operativnim sustavima i njezinog prepoznavanja kao ZIP arhive postiže se manipuliranjem zaglavlja izvršnih datoteka i povezivanjem s višeplatformskom standardnom C bibliotekom Cosmopolitan. Kod projekta se distribuira pod ISC licencom.

Ideja projekta je opskrbiti jednu izvršnu datoteku “redbean.com” s ugrađenim web poslužiteljem. Razvojni programer web aplikacije može koristiti uslužni program zip za dodavanje HTML i Lua datoteka ovoj datoteci i dobiti samostalnu web aplikaciju koja radi na svim popularnim operativnim sustavima i ne zahtijeva poseban web poslužitelj za pokretanje na sustavu.

Nakon pokretanja rezultirajuće izvršne datoteke, ugrađeni web poslužitelj koristi se za pristup web aplikaciji spremljenoj u datoteci. Prema zadanim postavkama, rukovatelj je priključen na localhost, ali poslužitelj se također može koristiti kao obični javni web poslužitelj (na primjer, ovaj poslužitelj služi web stranici projekta). Ugrađeni web-poslužitelj podržava HTTPS pristup i može se izvršiti pomoću izolacije sandboxa, što vam omogućuje kontrolu kojim se sučeljima sustava pristupa. Za kontrolu rada poslužitelja tijekom njegovog izvođenja predviđeno je interaktivno REPL sučelje (temeljeno na Lua REPL i bestline biblioteci, analognoj GNU Readline), koje omogućuje interaktivnu promjenu stanja procesa.

Tvrdi se da je web poslužitelj sposoban obraditi više od milijun zahtjeva u sekundi na običnom osobnom računalu, služeći gzip-komprimiranim sadržajem. Ono što pomaže performansama je to što zip i gzip koriste zajednički format, tako da se podaci poslužuju bez ponovnog pakiranja iz već komprimiranih područja u zip datoteci. Osim toga, budući da je izvršna datoteka stvorena korištenjem statičkog povezivanja i male je veličine, pozivanje fork-a na njoj uvodi malo ili nimalo opterećenja memorije.

Osim obrade statičkog web sadržaja i izvršavanja JavaScripta u pregledniku, logika web aplikacije može se proširiti korištenjem skripti u Lua, web okviru Fullmoon i SQLite DBMS. Dodatne značajke uključuju podršku za shemu raspršivanja lozinki argon2, mogućnost određivanja IP regije korištenjem MaxMind baze podataka i pristup Unix API-ju Cosmopolitan knjižnice. Veličina osnovnog stoga, koji uključuje web poslužitelj, MbedTLS, Cosmopolitan, Lua i SQLite, iznosi samo 1.9 MB.

Univerzalna izvršna datoteka formira se kombiniranjem segmenata i zaglavlja specifičnih za različite operativne sustave (PE, ELF, MACHO, OPENBSD, ZIP) u jednoj datoteci. Kako bi se osiguralo da se jedna izvršna datoteka izvodi na Windows i Unix sustavima, trik je kodirati Windows PE datoteke kao skriptu ljuske, koristeći prednost činjenice da Thompson Shell ne koristi oznaku skripte "#!". Rezultat je izvršna datoteka koja kombinira nekoliko različitih formata koji se koriste u Linuxu, BSD-u, Windowsima i macOS-u. $ 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) slušaj http://127.0.0.1:8080 >: čekam naredbu… $ curl https://127.0.0.1:8080/hello .html hello $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 pozdrav



Izvor: opennet.ru

Dodajte komentar