# تثبيت HTTP الأصلي ونشر الخدمة

[English](deployment.en.md) · [الدليل القابل للتشغيل](guide.ar.md) · [المرجع](reference.ar.md)

## تثبيت الأداة المختارة

الإصدار 0.5.0 معدّ محليا. لا تستخدم أرشيف 0.4.0 المنشور لهذه الأمثلة.
يجهز المساهمون الإصدار بأوامر `make native-http-release` و
`make distribution-current` و`make verify-distribution-current`.
يوثق [دليل الحزم](../http-native-packaging.md) بناء glibc 2.34 المضبوط.
انسخ الأرشيف والبصمة الثابتين إلى مجلد عمل:

```sh
mkdir -p build/http-install
cp build/distribution/0.5.0/aspl-0.5.0-x86_64-linux-gnu.tar.xz build/distribution/0.5.0/SHA256SUMS build/http-install/
cd build/http-install
sha256sum --check SHA256SUMS
tar -tvJf aspl-0.5.0-x86_64-linux-gnu.tar.xz
tar -xJf aspl-0.5.0-x86_64-linux-gnu.tar.xz
./aspl-0.5.0-x86_64-linux-gnu/aspl --version
```

اشترط نجاح البصمة وظهور `aspl 0.5.0`. تفحص SHA-256 سلامة المحتوى ولا تثبت
هوية الناشر. ثبت `aspl` المستخرج في مجلد أدوات المستخدم واختره عبر PATH:

```sh
install -d "$HOME/.local/bin"
install -m 0755 ./aspl-0.5.0-x86_64-linux-gnu/aspl "$HOME/.local/bin/aspl"
export PATH="$HOME/.local/bin:$PATH"
aspl --version
```

يحتوي الأرشيف الأداة و`DEPENDENCIES.json` ورخصتي ASPL والإشعارات الكاملة
للكود المضمن. يتضمن التثبيت النظيف التعريفات وقالبَي core وHTTP الجاهزين
والاعتماديات الأصلية الخاصة المرتبطة ساكنا. لا توجد حزمة HTTP أو خلفية
تحتاج إلى تثبيت منفصل. الهدف المدعوم Linux x86-64 الأساسي مع glibc 2.34
أو أحدث، والمحمّل `/lib64/ld-linux-x86-64.so.2` و`libc.so.6` و`libm.so.6`.

يعمل `check` و`build` دون اتصال، ولا يحمّلان مكتبات التطبيق الخارجية أو
يبدآن الشبكة أو يستدعيان مترجم C أو مجمّعا أو رابطا. يختار أي استيراد HTTP
في مخطط الوحدات قالب HTTP ولو لم يستخدم. يختار المخطط الآخر قالب core.
تنتظر تهيئة HTTP أول عملية فعلية. لا تحتاج الملفات التنفيذية المولدة إلى
ASPL أو الوحدات المصدرية بعد نقلها. تبقى الشهادات والمفاتيح وملفات CA
الخاصة ومكتبات C المشتركة المصرح بها مدخلات مستقلة. تُحل المسارات النسبية
بالنسبة إلى مجلد عمل العملية.

## الثقة وتوقيت الفشل

يكتشف وقت التشغيل الثقة الافتراضية عند أول استخدام HTTPS قبل الاتصال،
ويختار أول ملف موجود بهذا الترتيب:

1. `/etc/ssl/certs/ca-certificates.crt`
2. `/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem`
3. `/etc/ssl/cert.pem`
4. `/etc/pki/tls/certs/ca-bundle.crt`
5. `/etc/ssl/certs/ca-bundle.crt`

عند غياب الملفات الخمسة يفحص `/etc/ssl/certs/` بترتيب بايتات الأسماء.
يقرأ الملفات العادية والروابط إليها ويحذف تكرار أزواج الجهاز وinode بعد
حل المسار، ويتجاهل العناصر غير العادية. يفشل المخزن الموجود غير الصالح
بالرمز `http.ca_load_failed` دون الانتقال إلى مخزن آخر. لا تغيّر متغيرات
البيئة مثل `SSL_CERT_FILE` هذا الاختيار. يحل ملف PEM خاص مختار عبر
`استخدم_مرجع_خاص=صواب` محل البحث. تتطلب القيمة `خطأ` مسارا فارغا في
`ملف_مرجع`. تثبت الثقة المحللة الناجحة طوال التنفيذ، ويحتاج تغيير الملف
إلى تنفيذ جديد. لا يؤثر غياب الثقة على الفحص أو البناء أو البرامج غير
الشبكية أو HTTP العادي.

يتطلب HTTPS الإصدار TLS 1.2 أو 1.3 وفحص السلسلة والتواريخ ومطابقة SAN
للاسم أو عنوان IP. لا يثبت Common Name الهوية. يغطي wildcard تسمية واحدة
في أقصى اليسار، ويتطلب IP مطابقة SAN ثنائي للعنوان. أصلح توفر CA أو
التواريخ أو السلسلة أو اختلاف URL وSAN، ولا تعطل التحقق.
يوثق [مرجع TLS](reference.ar.md#مدخلات-tls) المفاتيح والحدود المدعومة.

## TLS مباشر

للتمرين المحلي، ولّد مفتاح RSA غير مشفر وشهادة ذاتية التوقيع قصيرة العمر
تحتوي SAN المحلي. شغل من جذر المستودع، وهو مجلد عمل الأمثلة:

```sh
openssl req -x509 -newkey rsa:2048 -nodes -days 2 \
  -subj /CN=localhost -addext 'subjectAltName=DNS:localhost,IP:127.0.0.1' \
  -keyout server.key -out server.pem
chmod 600 server.key
aspl check docs/examples/http/ar/direct-tls.لبات
aspl build -o build/http-guide/tls-service docs/examples/http/ar/direct-tls.لبات
./build/http-guide/tls-service
```

أنشئ `build/http-guide` أولا إن لم يوجد. يختار عميل الدليل هذه الشهادة
للثقة صراحة. في النشر استخدم سلسلة شهادات PEM ومفتاح التطبيق الخاص غير
المشفر المطابق لها. اجعل المفتاح مقروءا لحساب الخدمة فقط. يحمل ASPL الملفين
عند البدء ويفحص التطابق ولا يعيد تحميلهما. أعد التشغيل بالملفات المجددة.
لكل مستمع سلسلة ومفتاح واحدان. اختيار الشهادة بالاسم وشهادات العميل مؤجلان.

بدء المستمعين عملية واحدة. ينتج عن الملفات السيئة `http.tls_config_failed`،
وعن فشل حل الاسم أو الربط أو الاستماع رموزها المستقرة. يحرر وقت التشغيل
المستمعين والموارد السابقة قبل عودة `اخدم` بالفشل. أصلح الإعدادات وابدأ
تنفيذا جديدا. يثبت حتى البدء الفاشل إعدادات التنفيذ ويستهلك استدعاء الخدمة
الوحيد فيه. المنفذ صفر غير صالح. مستمع IPv6 خاص به؛ استخدم مستمعين منفصلين
لـIPv4 وIPv6 عند الحاجة لكليهما.

## HTTP عادي خلف وكيل عكسي

شغل الخدمة العادية محليا على 8080. اضبط الوكيل لينهي TLS بشهادته ومفتاحه
ويرسل HTTP/1.1 إلى `127.0.0.1:8080`. يمكن استخدام هذا الجزء في إعداد nginx
قائم:

```nginx
location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header Connection "";
}
```

اضبط مستمع TLS العام وشهاداته في الوكيل منفصلا. يرى ASPL اتصالا عاديا
من الوكيل. تبقى ترويسات العنوان والبروتوكول الممررة بيانات تطبيق ولا تغيّر
التوجيه أو الجهة أو معلومات TLS. حدد سياسة ثقة التطبيق بالوكيل قبل استعمال
هذه القيم في قرارات أمنية. المسار `/stop` للتمرين، فقيّد الوصول إليه عند
نشر تطبيق.

## الانتقال والأنماط غير المدعومة

يغيّر ASPL 0.5.0 المصدر وصيغة البايت كود الخاصة إلى الإصدار 5.
استبدل `==` بكلمة `يطابق` أو `تطابق`، و`!=` بتركيب `ليس يطابق`،
و`!` الأحادي بكلمة `لا` أو `ليس` أو `ليست`. الإنجليزية تقبل `matches`
أو `match` للمساواة و`not matches` أو `not match` للاختلاف و`not` للنفي.
أبقِ `و` / `and` و`أو` / `or`. تعطي الرموز السابقة والأسماء التي أصبحت
محجوزة تشخيصات مصدر. افحص كل وحدة وغيّر أسماء المستخدم المتعارضة وأعد
البناء من المصدر. يرفض بايت كود الإصدار 4 مع إرشاد لإعادة البناء، فالصيغة
خاصة. تحتفظ البرامج المولدة سابقا بوقت تشغيلها القديم ولا تكتسب HTTP بمجرد
تثبيت أداة جديدة.

يرفض المحرر في المتصفح وواجهة التضمين الخاصة استيراد HTTP قبل أي أثر،
ولو كان غير مستخدم، بالسبب `unsupported-supplied-library-profile`.
يرفض تحميل البايت كود المستقل أيضا كتالوج HTTP وأنواعه في هذين النمطين.
استخدم CLI الأصلي أو Console مع ملف ASPL 0.5.0 المختار. هذه المكتبة منفصلة
عن طلبات البيانات في تطبيقات APL.

## الأدلة وإعداد الإصدار

تغطي الأدلة الحالية [الملكية](../http-native-ownership.md) و
[حدود DNS وTLS وgzip](../http-native-bounds.md) و
[دورة حياة التنفيذ](../http-native-lifecycle.md) و
[التغليف المضبوط](../http-native-packaging.md). تتضمن نماذج OpenSSL
والمكونات التاريخية إخفاقات وعينات محدودة. لا تصف تنفيذ Mbed TLS الحالي
ولا تثبت الحدود لكل المسارات. قيمة 10 ms لاستقصاء الإلغاء والإيقاظ هدف
استجابة وليست ضمانا للزمن الحقيقي. مهلة تنظيف HTTP المشتركة 1000 ms
افتراضيا ولا تقبل قيمة أقل. العينات الناجحة ليست حدودا قصوى لكل المضيفين.

تبقى التذكرة 18 مسؤولة عن التحقق التجميعي النهائي قبل إعلان اكتمال التنفيذ.
جهز الموقع من مدخلات إصدار ثابتة وفق [دليل الموقع](../../projects/website/README.md).
احتفظ بمسارات اللغات والمحرر والتنزيلات وبايتات الإصدارات التاريخية.
لا ينشر عمل التوثيق هذا موقعا أو إصدارا ولا يغيّر الوسوم أو التوصية العامة.
