مشروع أداة آخر للدبلوم
قبل البدء ، حاول اختبار الوظائف الأساسية. من بين جميع الوحدات ، الأجزاء النموذجية للاختبار هي تطبيقات الخادم/الوكيل الثلاثة:
$ cd /path/to/project/root/directory
$ PYTHONPATH=. python3 server/static_file.py > log/static.log
$ PYTHONPATH=. python3 server/fastcgi_proxy.py > log/fastcgi.log
$ PYTHONPATH=. python3 server/http_proxy.py > log/http.log نظرًا لسرعة الاتصال البطيئة لـ httpbin.org ، قد تحتاج إلى استخدام ProxyChain لتسريع اختبارات HTTPProxy ، وربما خطأ مثل proxychains can't load process إذا كانت المحطة الخاصة بك تستخدم dash كقشرة افتراضية ، في هذه الحالة فقط حدد القشرة مع bash -c "python3 file.py" .
$ PYTHONPATH=. proxychains4 python3 server/http_proxy.py > log/http.log
$ PYTHONPATH=. proxychains4 bash -c " python3 server/http_proxy.py > log/http.log " أخيرًا ، يمكنك تغيير التكوينات في config/config.yaml ، ثم ابدأ الخادم الرئيسي وزيارة الموقع لمعرفة ما إذا كان كل شيء يعمل بشكل جيد:
$ PYTHONPATH=. python3 main.py لاحظ أن هذا host:port Pair بشكل افتراضي هو localhost:80 ، وللرقص هذا النوع من المنافذ "المتميزة" (1-1023) مع مستخدم غير الجذر ، ستحتاج إلى تعيين capability Python Binary ، say /usr/bin/python3 :
$ sudo setcap ' cap_net_bind_service=+ep ' /usr/bin/python3 تحقق من السجلات ضمن log/ إذا كنت ترغب في ذلك ، سيقوم main.log بتسجيل العملية الكاملة لجميع الطلبات والاستجابات ، بينما (static|fastcgi|http).log هي نتائج الاختبارات المذكورة سابقًا.
تتم الآن كتابة جميع الاختبارات المذكورة أعلاه بما في ذلك اختبارات الوحدات النمطية الأخرى كنصي مساعد في modtests.sh ، والتي يمكنك تشغيلها مباشرة ورؤية النتائج. يمكنك استخدام tee لتكرار المخرجات إلى ملف السجل والتحقق منها لاحقًا:
$ ./modtests.sh 2>&1 | tee modtests.log تتصل وحدة FastCgiproxy من Project مع FastCGI باستخدام cgi-fcgi ، والتي يمكن تثبيتها بواسطة apt-get install libfcgi0ldbl على سلسلة Debian أو yum --enablerepo=epel install fcgi على CentOS.
إذا كنت تستخدم application كمشروع تجريبي ، فستتطلب تبعيات PHP التالية:
php-mysql لاتصال قاعدة البياناتphp-gd لتوليد صور Captchaphp-fpm للتشغيل مع fastcgi كمقبس UNIX من المفترض أن يكون حجم readbuf.first كبيرًا بما يكفي لقراءة جزء رأس HTTP بأكمله ، لأن البرنامج يستخدم قيمة الرأس لتحديد ما إذا كان لا يزال هناك جزء يسار لتلقيه ، وإذا كان صحيحًا ، اقرأ بقيةها باستخدام Buffer Size readbuf.left .
المعلمة fastcgi.upstream يمكن تكوينها إلى host:port أو ملف مقبس مجال UNIX ، ومع ذلك ، هناك مشكلة غير معروفة باستخدام cgi-fcgi مع مقبس مجال UNIX على نظام WSL على منصة WSL: لا تزال العملية مع مدخلات كبيرة من stdin بواسطة أنابيب تنتهي مع رمز الخروج 11 ، ولا يوجد محتوى ، في حين أن حجم المدخلات أكبر من 65536. لذا ، إذا كانت هناك أي حاجة لتحميل ملفات كبيرة ونشر المشروع على WSL ، فاستخدم TCP بدلاً من مقبس Domain UNIX كما FastCGI في المنبع.
بالإضافة إلى ذلك ، هناك وحدة توقيت ووحدة العمال التي يجب تجربتها ، والتي تتم كتابتها لغرض التعلم ، وتذكيرها ، فإن الأخير ليس مستقرًا.
توجد ملفات وحدة المؤقتة جميعها ضمن timer الدليل ، والتي يتم تنفيذها باستخدام K-ary Chep أو Tree Red Black كهيكل بيانات. وحدة Code of Worker موجودة في دليل worker ، والتصميم مستوحى من الحكم في Gunicorn ولا يضمن التنفيذ العمل كما هو متوقع إذا أرسلت إشارات سريعة جدًا ، وفي هذه الحالة يجب أن تكون على دراية بعمليات الزومبي المتبقية.
انظر الإصدارات