Redbean 2.0 - en platform til webapplikationer, pakket i et universelt eksekverbart ZIP-arkiv.

Udgivelsen af Redbean 2.0 er blevet præsenteret, som tilbyder en webserver, der muliggør levering af webapplikationer i form af en universel kørbar fil, der kan udføres i Linux, Windows, MacOS, FreeBSD, NetBSD og OpenBSD. Alle ressourcer relateret til webapplikationen og serveren komprimeres i én kørbar fil, som samtidig er kompatibel med ZIP-arkivformatet og tillader brugen af zip-værktøjet til at tilføje yderligere filer. Muligheden for at køre én fil på forskellige operativsystemer og dens genkendelse som et ZIP-arkiv opnås gennem manipulation af headerne i de kørbare filer og binding til det multiplatforms standard C-bibliotek Cosmopolitan. Koden til projektet distribueres under ISC-licensen.

Projektidéen går ud på at levere én kørbar fil «redbean.com» med en indbygget webserver. Udvikleren af webapplikationen kan ved hjælp af zip-værktøjet tilføje HTML- og Lua-filer i denne fil og få en selvforsynende webapplikation, der kan køre på alle populære operativsystemer uden behov for at starte en separat webserver på systemet.

Når den resulterende kørbare fil startes, bruges den indbyggede webserver til at tilgå den gemte webapplikation i filen. Som standard er handleren knyttet til localhost, men serveren kan også anvendes som en almindelig offentlig webserver (for eksempel betjener denne server projektets hjemmeside). Den indbyggede webserver understøtter adgang via HTTPS og kan køre med sandbox-isolering, hvilket gør det muligt at kontrollere, hvilke systemgrænseflader der tilgås. For at styre serverens drift under udførelsen gives der et interaktivt REPL-interface (baseret på Lua REPL og biblioteket bestline, en pendant til GNU Readline), der giver mulighed for at ændre processtatus i interaktiv tilstand.

Det påstås, at webserveren kan behandle over en million anmodninger pr. sekund på en almindelig pc ved at returnere indhold, der er komprimeret med gzip-metoden. Den høje ydeevne skyldes, at zip og gzip bruger et fælles format, så dataene returneres uden at blive repakket fra allerede komprimerede områder i zip-filen. Desuden, da den eksekverbare fil er lavet ved hjælp af statisk binding og har en lille størrelse, medfører kald af funktionen fork næsten ingen overhead ved placering i hukommelsen.

Ud over at håndtere statisk webindhold og udføre JavaScript i browseren, kan logikken i webapplikationen udvides ved hjælp af scripts på Lua-sprog, web-rammen Fullmoon og SQLite-database. Blandt de ekstra funktioner bemærkes understøttelsen af hash-algoritmen argon2, muligheden for at bestemme IP-regionen ved hjælp af MaxMind-databasen og adgang til Unix API-biblioteket Cosmopolitan. Størrelsen på den grundlæggende stak, der inkluderer webserveren, MbedTLS, Cosmopolitan, Lua og SQLite, er kun 1,9 MB.

Den universelle eksekverbare fil dannes ved at kombinere segmentspecifikke for forskellige operativsystemer og overskrifter (PE, ELF, MACHO, OPENBSD, ZIP) i én fil. For at sikre, at en enkelt eksekverbar fil kan køre på Windows og Unix-systemer, anvendes et trick, hvor Windows PE-filer kodes som et shell-script, idet Thompson Shell ikke bruger scriptmarker «#!». Resultatet er en eksekverbar fil, der kombinerer flere forskellige formater, der anvendes i Linux, BSD, Windows og 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) listen http://127.0.0.1:8080 >: waiting for command… $ curl https://127.0.0.1:8080/hello.html hello $ printf ‘GET /hello.lua\n\n’ | nc 127.0.0.1 8080 hello



Kilde: opennet.ru
Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster