Redbean 2.0 on platvorm veebirakendustele, mis on pakitud universaalsesse käivitatavasse ZIP-arhiivi

Esitletakse Redbean 2.0 projekti väljalaset, mis pakub veebiserverit, mis võimaldab edastada veebirakendusi universaalse käivitatava faili kujul, mida saab käivitada Linuxis, Windowsis, MacOS-is, FreeBSD-s, NetBSD-s ja OpenBSD-s. Kõik veebirakenduse ja serveriga seotud ressursid koondatakse ühte täitmisfaili, mis ühildub ZIP-arhiivivorminguga ja võimaldab kasutada zip-utiliiti täiendavate failide lisamiseks. Võimalus käitada ühte faili erinevates OS-ides ja seda ZIP-arhiivina tunnustada saavutatakse käivitatavate failide päistega manipuleerimise ja mitme platvormi standardse C raamatukoguga Cosmopolitani linkimise teel. Projekti koodi levitatakse ISC litsentsi all.

Projekti idee on varustada üks käivitatav fail “redbean.com” koos sisseehitatud veebiserveriga. Veebirakenduse arendaja saab kasutada zip-utiliiti, et lisada sellele failile HTML- ja Lua-faile ning hankida iseseisev veebirakendus, mis töötab kõigis populaarsetes operatsioonisüsteemides ja ei vaja süsteemis töötamiseks eraldi veebiserverit.

Pärast tulemuseks oleva käivitatava faili käivitamist kasutatakse faili salvestatud veebirakendusele juurdepääsuks sisseehitatud veebiserverit. Vaikimisi on töötleja seotud localhostiga, kuid serverit saab kasutada ka tavalise avaliku veebiserverina (näiteks see server teenindab projekti veebisaiti). Sisseehitatud veebiserver toetab HTTPS-i juurdepääsu ja seda saab käivitada liivakastiisolatsiooni abil, mis võimaldab teil kontrollida, millistele süsteemiliidestele juurde pääsete. Serveri töö juhtimiseks selle täitmise ajal on ette nähtud interaktiivne REPL-liides (põhineb Lua REPL-il ja bestline'i teegil, GNU Readline'i analoogil), mis võimaldab protsessi olekut interaktiivselt muuta.

Väidetavalt on veebiserver võimeline töötlema tavalises arvutis rohkem kui miljonit päringut sekundis, pakkudes gzip-tihendatud sisu. Toimivusele aitab kaasa see, et zip ja gzip kasutavad ühist vormingut, nii et andmeid edastatakse ilma, et neid ZIP-failis juba tihendatud aladelt uuesti pakendataks. Lisaks, kuna käivitatav fail luuakse staatilise linkimise abil ja see on väikese suurusega, tekitab sellel helistamine vähe või üldse mitte.

Lisaks staatilise veebisisu töötlemisele ja brauseris JavaScripti käivitamisele saab veebirakenduse loogikat laiendada Lua skriptide, Fullmoon veebiraamistiku ja SQLite DBMS-i abil. Täiendavad funktsioonid hõlmavad argon2 parooliräsimisskeemi tuge, võimalust määrata IP-piirkond MaxMindi andmebaasi abil ja juurdepääs Cosmopolitani teegi Unixi API-le. Põhipinu, mis sisaldab veebiserverit, MbedTLS-i, Cosmopolitani, Lua ja SQLite'i, on vaid 1.9 MB.

Universaalne täitmisfail moodustatakse erinevate operatsioonisüsteemide (PE, ELF, MACHO, OPENBSD, ZIP) segmentide ja päiste kombineerimisel ühte faili. Tagamaks, et Windowsi ja Unixi süsteemides töötaks üks käivitatav fail, on nipp kodeerida Windows PE-failid kestaskriptina, kasutades ära asjaolu, et Thompson Shell ei kasuta skriptimarkerit “#!”. Tulemuseks on käivitatav fail, mis ühendab mitu erinevat vormingut, mida kasutatakse Linuxis, BSD-s, Windowsis ja macOS-is. $ 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) kuula http://127.0.0.1:8080 >: ootan käsku… $ curl https://127.0.0.1:8080/tere .html tere $ printf 'HANGI /hello.lua\n\n' | nc 127.0.0.1 8080 tere



Allikas: opennet.ru

Lisa kommentaar