Redbean 2.0 عبارة عن منصة لتطبيقات الويب المجمعة في أرشيف ZIP عالمي قابل للتنفيذ

تم تقديم إصدار مشروع Redbean 2.0، الذي يقدم خادم ويب يسمح لك بتقديم تطبيقات الويب في شكل ملف عالمي قابل للتنفيذ يمكن تنفيذه على Linux وWindows وMacOS وFreeBSD وNetBSD وOpenBSD. يتم تجميع جميع الموارد المرتبطة بتطبيق الويب والخادم في ملف واحد قابل للتنفيذ، وهو متوافق مع تنسيق أرشيف ZIP ويسمح لك باستخدام الأداة المساعدة zip لإضافة ملفات إضافية. يتم تحقيق القدرة على تشغيل ملف واحد على أنظمة تشغيل مختلفة والتعرف عليه كأرشيف ZIP من خلال معالجة رؤوس الملفات القابلة للتنفيذ والربط مع مكتبة C القياسية متعددة المنصات Cosmopolitan. يتم توزيع رمز المشروع بموجب ترخيص ISC.

فكرة المشروع هي تزويد ملف واحد قابل للتنفيذ “redbean.com” مع خادم ويب مدمج. يمكن لمطور تطبيقات الويب استخدام الأداة المساعدة zip لإضافة ملفات HTML وLua إلى هذا الملف والحصول على تطبيق ويب قائم بذاته يعمل على جميع أنظمة التشغيل الشائعة ولا يتطلب خادم ويب منفصلاً للتشغيل على النظام.

بعد تشغيل الملف القابل للتنفيذ الناتج، يتم استخدام خادم الويب المدمج للوصول إلى تطبيق الويب المحفوظ في الملف. بشكل افتراضي، يتم إرفاق المعالج بالمضيف المحلي، ولكن يمكن أيضًا استخدام الخادم كخادم ويب عام عادي (على سبيل المثال، يخدم هذا الخادم موقع المشروع على الويب). يدعم خادم الويب المدمج الوصول إلى HTTPS ويمكن تنفيذه باستخدام عزل وضع الحماية، مما يسمح لك بالتحكم في واجهات النظام التي يتم الوصول إليها. للتحكم في تشغيل الخادم أثناء تنفيذه، يتم توفير واجهة REPL التفاعلية (استنادًا إلى Lua REPL ومكتبة bestline، وهي نظير لـ GNU Readline)، مما يجعل من الممكن تغيير حالة العملية بشكل تفاعلي.

ويُزعم أن خادم الويب قادر على معالجة أكثر من مليون طلب في الثانية على جهاز كمبيوتر عادي، ويقدم محتوى مضغوطًا بصيغة gzip. ما يساعد على الأداء هو أن zip وgzip يستخدمان تنسيقًا شائعًا، بحيث يتم تقديم البيانات دون إعادة تجميعها من مناطق مضغوطة بالفعل في الملف المضغوط. بالإضافة إلى ذلك، نظرًا لأن الملف القابل للتنفيذ يتم إنشاؤه باستخدام ارتباط ثابت وصغير الحجم، فإن استدعاء الشوكة عليه يقدم القليل من الذاكرة أو لا يؤدي إلى حملها على الإطلاق.

بالإضافة إلى معالجة محتوى الويب الثابت وتنفيذ JavaScript في المتصفح، يمكن توسيع منطق تطبيق الويب باستخدام البرامج النصية في Lua وFullmoon web Framework وSQLite DBMS. تشتمل الميزات الإضافية على دعم نظام تجزئة كلمة المرور argon2، والقدرة على تحديد منطقة IP باستخدام قاعدة بيانات MaxMind، والوصول إلى Unix API للمكتبة العالمية. يبلغ حجم الحزمة الأساسية، والتي تتضمن خادم الويب وMbedTLS وCosmopolitan وLua وSQLite، 1.9 ميغابايت فقط.

يتم تشكيل ملف عالمي قابل للتنفيذ من خلال الجمع بين المقاطع والرؤوس الخاصة بأنظمة التشغيل المختلفة (PE، ELF، MACHO، OPENBSD، ZIP) في ملف واحد. للتأكد من تشغيل ملف واحد قابل للتنفيذ على أنظمة Windows وUnix، تتمثل الحيلة في تشفير ملفات Windows PE كبرنامج نصي لـ Shell، مع الاستفادة من حقيقة أن Thompson Shell لا يستخدم علامة البرنامج النصي "#!". والنتيجة هي ملف قابل للتنفيذ يجمع بين العديد من التنسيقات المختلفة المستخدمة في Linux وBSD وWindows وmacOS. $ الضفيرة 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/hello .html hello $ printf 'GET /hello.lua\n\n' | نك 127.0.0.1 8080 مرحبا



المصدر: opennet.ru

إضافة تعليق