إن NGINX Unit عبارة عن خادم مفتوح المصدر خفيف الوزن ومتعدد الاستخدامات ويتمتع بقدرتين أساسيتين:
يخدم أصول الوسائط الثابتة،
يدير رمز التطبيق بثماني لغات.
تقوم الوحدة بضغط عدة طبقات من حزمة التطبيقات الحديثة في حل قوي ومتماسك مع التركيز على الأداء وزمن الوصول المنخفض وقابلية التوسع. تم تصميمه ليكون بمثابة لبنة بناء عالمية لأي بنية ويب بغض النظر عن مدى تعقيدها، بدءًا من عمليات النشر على مستوى المؤسسة وحتى الصفحة الرئيسية لحيوانك الأليف.
تعمل واجهة RESTful JSON API الأصلية على تمكين التحديثات الديناميكية بدون أي انقطاعات والتكوين المرن، بينما تتكيف الإنتاجية الجاهزة بشكل موثوق مع أعباء العمل على مستوى الإنتاج. نحن نحقق ذلك من خلال بنية معقدة وغير متزامنة ومتعددة الخيوط تشتمل على عمليات متعددة لضمان الأمان والقوة مع تحقيق أقصى استفادة من منصات الحوسبة الحالية.
قم بتشغيل الأمر التالي لتثبيت كل من unitd
(برنامج الوحدة) و unitctl
(أداة التحكم).
$ تثبيت nginx/unit/unit
للحصول على التفاصيل وحزم اللغات المتاحة، راجع المستندات.
وحدة سحب عامل الإرساء $:$ mkdir /tmp/unit-control # تخصيص حسب الحاجة. $ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount type=bind,src=.,dst=/www --network hostunit
للحصول على وصف لعلامات الصور، راجع المستندات.
تحذير: قد لا توفر علامة الصورة الأحدث دعمًا لوحدات لغة معينة، لذا تحقق من علامات الصورة المتوفرة من الرابط أعلاه قبل سحب صورتك.
سيتم الآن تثبيت دليل العمل الحالي على صورة الوحدة على /www
. يمكنك الوصول إلى المقبس الخاص به على /tmp/unit-control/control.unit.sock
على افتراض عدم إجراء أي تخصيصات أخرى.
يقوم هذا البرنامج النصي المساعد بتكوين مستودعات الحزم الصحيحة للنظام.
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit# ./setup-unit repo-config
مشتقات دبيان:
# وحدة التثبيت المناسبة
مشتقات فيدورا:
# وحدة تثبيت يم
للحصول على التفاصيل وحزم اللغات المتاحة، راجع المستندات.
unitctl
يعمل unitctl
على تبسيط إدارة عمليات وحدة NGINX من خلال واجهة سطر أوامر سهلة الاستخدام. للبدء مع unitctl
، قم بتنزيله من إصدارات GitHub الرسمية أو Homebrew.
ملحوظة
إذا قمت بتثبيت Unit with Homebrew، فيمكنك تخطي هذه الخطوة حيث يتم تضمين unitctl
افتراضيًا.
قم بتنزيل ملف unitctl
الثنائي المناسب لنظامك من إصدارات وحدة NGINX.
$ القطران xzvf Unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv Unitctl /usr/local/bin/
إذا كان لديك Docker مثبتًا على جهازك، فيمكنك بسهولة تدوير إحدى صور Docker الرسمية للوحدة إلى جانب تطبيقك.
نصيحة
تتوفر أدلة الإرشادات والتكوين على Unit.nginx.org لأطر تطبيقات الويب المبنية باستخدام Python وPHP وWebAssembly وNode.js وRuby والمزيد.
فيما يلي مثال باستخدام unit:python
Docker:
مثيلات $ Unitctl الجديدة 127.0.0.1:8001 /path/to/app 'unit:python'
سيتم تثبيت /path/to/app
على /www
في نظام ملفات Docker.
احفظ هذا في /path/to/app/wsgi.py
:
def application(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return (b"مرحبًا، Python on Unit!")
يمكنك بعد ذلك تحرير التكوين النشط حاليًا بشكل تفاعلي:
$ تحرير الوحدة
{ "listeners": { "*:8000": { // قم بتوجيه المستمع إلى التطبيق الجديد "pass": "applications/python" } }, // أضف تعريف التطبيق "applications": { "python": { "type ": "python"، "path": "/www/"، "module": "wsgi" } }}
سيتم تطبيق التكوينات الصالحة عند الحفظ والإغلاق.
$ حليقة المضيف المحلي: 8000 مرحبًا، Python on Unit!
يمكن العثور على المزيد من أمثلة تكوين Python في مستندات الوحدة.
تعمل الوحدة على تشغيل التطبيقات بمجموعة متنوعة من اللغات. دعنا نستكشف تكوين تطبيق PHP بسيط على Unit مع curl
.
لنفترض أنك قمت بحفظ برنامج PHP النصي باسم /www/helloworld/index.php
:
لتشغيله على الوحدة مع تثبيت الوحدة unit-php
، قم أولاً بإعداد كائن التطبيق. لنقم بتخزين مقتطف التكوين الأول في ملف يسمى config.json
:
{ "helloworld": { "النوع": "php"، "الجذر": "/www/helloworld/" } }
ليس من الضروري حفظه كملف، ولكنه قد يكون مفيدًا مع الكائنات الأكبر حجمًا.
الآن، PUT
في قسم /config/applications
في واجهة برمجة تطبيقات التحكم الخاصة بالوحدة، والتي تكون متاحة عادةً بشكل افتراضي عبر مقبس مجال Unix:
# الضفيرة -X PUT --data-binary @config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications
{"نجاح": "تم إعادة التكوين."}
بعد ذلك، قم بالإشارة إلى التطبيق من كائن مستمع في قسم /config/listeners
في واجهة برمجة التطبيقات. هذه المرة، نقوم بتمرير مقتطف التكوين مباشرة من سطر الأوامر:
# الضفيرة -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' --unix-socket /path/to/control.unit.sock http:// المضيف المحلي/التكوين/المستمعين
{ "النجاح": "تم إعادة التكوين."}
الآن تقبل الوحدة الطلبات على عنوان IP والمنفذ المحددين، وتمريرها إلى عملية التقديم. التطبيق الخاص بك يعمل!
$ الضفيرة 127.0.0.1:8080 مرحبًا، PHP على الوحدة!
وأخيرًا، استعلم عن قسم /config
بالكامل في واجهة برمجة تطبيقات التحكم:
# الضفيرة --unix-socket /path/to/control.unit.sock http://localhost/config/
يجب أن تحتوي مخرجات الوحدة على كلا المقتطفين، المنظمين بدقة:
{ "المستمعين": { "127.0.0.1:8080": { "pass": "التطبيقات/helloworld" } }, "applications": { "helloworld": { "type": "php", "root": "/www/helloworld/" } } }
تدعم الوحدة تشغيل WebAssembly Components (WASI 0.2). لمزيد من المعلومات، راجع مستندات تكوين الوحدة.
تهدف مواصفات OpenAPI الخاصة بنا إلى تبسيط تكوين ودمج عمليات نشر وحدة NGINX وتوفير مصدر موثوق للمعرفة حول واجهة برمجة تطبيقات التحكم.
المكان الأمثل لبدء طرح الأسئلة ومشاركة أفكارك هو مناقشات GitHub.
توفر صفحة مشكلات GitHub الخاصة بنا مساحة لمزيد من المناقشة الفنية بالسرعة التي تناسبك.
تلقي خريطة المشروع على GitHub بعض الضوء على عملنا الحالي وخططنا للمستقبل.
قد يقدم موقعنا الرسمي إجابات لا يمكن العثور عليها بسهولة بطريقة أخرى.
شارك في المشروع من خلال المساهمة! راجع دليل المساهمة للحصول على التفاصيل.
للوصول للفريق مباشرة اشترك في القائمة البريدية.
بالنسبة للمشكلات الأمنية، راسلنا عبر البريد الإلكتروني مع ذكر وحدة NGINX في الموضوع واتباع مواصفات CVSS v3.1.