Redbean 2.0 je platforma za spletne aplikacije, zapakirane v univerzalni izvedljivi arhiv ZIP

Predstavljena je izdaja projekta Redbean 2.0, ki ponuja spletni strežnik, ki omogoča dostavo spletnih aplikacij v obliki univerzalne izvršljive datoteke, ki jo je mogoče izvajati v sistemih Linux, Windows, MacOS, FreeBSD, NetBSD in OpenBSD. Vsi viri, povezani s spletno aplikacijo in strežnikom, so zbrani v eno samo izvedljivo datoteko, ki je združljiva z arhivsko obliko ZIP in omogoča uporabo pripomočka zip za dodajanje dodatnih datotek. Zmožnost zagona ene datoteke v različnih operacijskih sistemih in njene prepoznave kot arhiva ZIP je dosežena z manipulacijo glav izvršljivih datotek in povezovanjem s standardno knjižnico C Cosmopolitan za več platform. Koda projekta se distribuira pod licenco ISC.

Ideja projekta je zagotoviti eno izvedljivo datoteko "redbean.com" z vgrajenim spletnim strežnikom. Razvijalec spletne aplikacije lahko uporabi pripomoček zip za dodajanje datotek HTML in Lua tej datoteki in pridobi samostojno spletno aplikacijo, ki deluje v vseh priljubljenih operacijskih sistemih in ne potrebuje ločenega spletnega strežnika za delovanje v sistemu.

Po zagonu nastale izvršljive datoteke se vgrajeni spletni strežnik uporablja za dostop do spletne aplikacije, shranjene v datoteki. Privzeto je upravljavec pritrjen na localhost, vendar se strežnik lahko uporablja tudi kot običajen javni spletni strežnik (ta strežnik na primer služi spletnemu mestu projekta). Vgrajeni spletni strežnik podpira dostop HTTPS in se lahko izvaja z izolacijo peskovnika, ki vam omogoča nadzor nad tem, do katerih sistemskih vmesnikov se dostopa. Za nadzor delovanja strežnika med njegovim izvajanjem je na voljo interaktivni vmesnik REPL (temelji na Lua REPL in knjižnici bestline, analogni GNU Readline), ki omogoča interaktivno spreminjanje stanja procesa.

Trdi se, da je spletni strežnik sposoben obdelati več kot milijon zahtev na sekundo na navadnem osebnem računalniku, ki streže vsebino, stisnjeno z gzip. Zmogljivost pripomore k temu, da zip in gzip uporabljata skupno obliko, tako da se podatki strežejo brez prepakiranja iz že stisnjenih območij v datoteki zip. Poleg tega, ker je izvršljiva datoteka ustvarjena s statičnim povezovanjem in je majhna, klicna razcepitev na njej povzroči malo ali nič dodatnih stroškov pomnilnika.

Poleg obdelave statične spletne vsebine in izvajanja JavaScripta v brskalniku je mogoče logiko spletne aplikacije razširiti s skripti v Lua, spletnem ogrodju Fullmoon in SQLite DBMS. Dodatne funkcije vključujejo podporo za shemo zgoščevanja gesel argon2, možnost določanja regije IP z uporabo baze podatkov MaxMind in dostop do API-ja Unix knjižnice Cosmopolitan. Velikost osnovnega sklada, ki vključuje spletni strežnik, MbedTLS, Cosmopolitan, Lua in SQLite, je le 1.9 MB.

Univerzalna izvršljiva datoteka je oblikovana z združevanjem segmentov in glav, značilnih za različne operacijske sisteme (PE, ELF, MACHO, OPENBSD, ZIP) v eni datoteki. Da bi zagotovili, da se ena izvršljiva datoteka izvaja v sistemih Windows in Unix, je trik v tem, da kodirate datoteke Windows PE kot lupinski skript, pri čemer izkoristite dejstvo, da Thompson Shell ne uporablja oznake skripta »#!«. Rezultat je izvršljiva datoteka, ki združuje več različnih formatov, ki se uporabljajo v sistemih Linux, BSD, Windows in 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) poslušaj http://127.0.0.1:8080 >: čakanje na ukaz… $ curl https://127.0.0.1:8080/hello .html zdravo $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 pozdravljeni



Vir: opennet.ru

Dodaj komentar