Redbean 2.0-ը վեբ հավելվածների հարթակ է, որը փաթեթավորված է ունիվերսալ գործարկվող ZIP արխիվում

Ներկայացված է Redbean 2.0 նախագծի թողարկումը, որն առաջարկում է վեբ սերվեր, որը թույլ է տալիս վեբ հավելվածներ մատուցել ունիվերսալ գործարկվող ֆայլի տեսքով, որը կարող է իրականացվել Linux, Windows, MacOS, FreeBSD, NetBSD և OpenBSD համակարգերում: Վեբ հավելվածի և սերվերի հետ կապված բոլոր ռեսուրսները հավաքվում են մեկ գործարկվող ֆայլի մեջ, որը համատեղելի է ZIP արխիվի ձևաչափի հետ և թույլ է տալիս օգտագործել zip ծրագիրը՝ լրացուցիչ ֆայլեր ավելացնելու համար: Տարբեր ՕՀ-ներում մեկ ֆայլ գործարկելու և այն որպես ZIP արխիվ ճանաչելու հնարավորությունը ձեռք է բերվում գործարկվող ֆայլերի վերնագրերը շահարկելու և C Cosmopolitan ստանդարտ C գրադարանի բազմահարթակի հետ կապվելու միջոցով: Ծրագրի կոդը բաշխվում է ISC լիցենզիայի ներքո:

Նախագծի գաղափարը մեկ գործարկվող ֆայլ «redbean.com» մատակարարելն է ներկառուցված վեբ սերվերով: Վեբ հավելվածի մշակողը կարող է օգտագործել zip ծրագիրը՝ այս ֆայլին HTML և Lua ֆայլեր ավելացնելու համար և ստանալ ինքնուրույն վեբ հավելված, որն աշխատում է բոլոր հայտնի օպերացիոն համակարգերում և չի պահանջում առանձին վեբ սերվեր՝ համակարգում աշխատելու համար:

Ստացված գործարկվող ֆայլը գործարկելուց հետո ներկառուցված վեբ սերվերն օգտագործվում է ֆայլում պահված վեբ հավելված մուտք գործելու համար: Լռելյայնորեն, կարգավորիչը կցված է localhost-ին, սակայն սերվերը կարող է օգտագործվել նաև որպես սովորական հանրային վեբ սերվեր (օրինակ, այս սերվերը սպասարկում է նախագծի կայքը): Ներկառուցված վեբ սերվերն աջակցում է HTTPS մուտքին և կարող է իրականացվել՝ օգտագործելով sandbox մեկուսացումը, որը թույլ է տալիս վերահսկել, թե որ համակարգի միջերեսները հասանելի են: Սերվերի աշխատանքը դրա կատարման ընթացքում վերահսկելու համար տրամադրվում է ինտերակտիվ REPL ինտերֆեյս (հիմնված Lua REPL-ի և bestline գրադարանի՝ GNU Readline-ի անալոգի վրա), ինչը հնարավորություն է տալիս ինտերակտիվ կերպով փոխել գործընթացի վիճակը:

Պնդվում է, որ վեբ սերվերն ի վիճակի է մեկ վայրկյանում ավելի քան մեկ միլիոն հարցում մշակել սովորական համակարգչի վրա՝ սպասարկելով gzip սեղմված բովանդակություն: Այն, ինչն օգնում է կատարմանը, այն է, որ zip-ը և gzip-ն օգտագործում են ընդհանուր ձևաչափ, այնպես որ տվյալները սպասարկվում են առանց վերափաթեթավորվելու zip ֆայլի արդեն սեղմված տարածքներից: Բացի այդ, քանի որ գործարկվողը ստեղծվում է ստատիկ կապակցման միջոցով և ունի փոքր չափսեր, դրա վրա պատառաքաղ կանչելը քիչ է կամ ընդհանրապես չի բերում հիշողություն:

Ի լրումն ստատիկ վեբ բովանդակության մշակման և զննարկիչում JavaScript-ի գործարկման, վեբ հավելվածի տրամաբանությունը կարող է ընդլայնվել՝ օգտագործելով սկրիպտները Lua-ում, Fullmoon վեբ շրջանակը և SQLite DBMS-ը: Լրացուցիչ առանձնահատկությունները ներառում են աջակցություն argon2 գաղտնաբառի հեշավորման սխեմային, IP տարածքը որոշելու հնարավորությունը՝ օգտագործելով MaxMind տվյալների բազան և մուտք դեպի Cosmopolitan գրադարանի Unix API: Հիմնական փաթեթի չափը, որը ներառում է վեբ սերվեր, MbedTLS, Cosmopolitan, Lua և SQLite, ընդամենը 1.9 ՄԲ է:

Համընդհանուր գործարկվող ֆայլը ձևավորվում է տարբեր օպերացիոն համակարգերին (PE, ELF, MACHO, OPENBSD, ZIP) հատուկ հատվածներ և վերնագրեր միավորելով մեկ ֆայլում։ Ապահովելու համար, որ մեկ գործարկվող ֆայլը աշխատում է Windows և Unix համակարգերում, հնարք է Windows PE ֆայլերը կոդավորել որպես shell script՝ օգտվելով այն փաստից, որ Thompson Shell-ը չի օգտագործում «#!» սցենարի նշիչը: Արդյունքը գործարկվող ֆայլ է, որը միավորում է մի քանի տարբեր ձևաչափեր, որոնք օգտագործվում են Linux-ում, BSD-ում, Windows-ում և 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) լսել http://127.0.0.1:8080 >: սպասում է հրամանին… $ curl https://127.0.0.1:8080/բարև .html բարև $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 բարև



Source: opennet.ru

Добавить комментарий