مستوحاة من محرك البحث في Facebook. الإصدار المفتوح حاليًا على Github قديم جدًا وكان لديه بعض التبعيات القديمة ، لذلك اعتقدت أنه سيكون من الأسهل كتابة عملية أكثر حداثة. هذا واحد لا يزال أساسيًا ، وعلى الأرجح لديه ثقوب أمنية سأواجهها لاحقًا. أردت فقط الحصول على شيء من الأرض وسأضيف المزيد من الميزات وقت السماح.
تفضل بزيارة الرابط إلى الإعداد باستخدام هذا الإصدار الذي أستضيفه.
قائمة الأوامر المدعومة حاليا
g [insert query] البحث عن Googlep [insert class number] قم بإجراء بحث بيازا ، نوعًا ما لمجرد جاك لولfb [insert query] البحث على Facebook. الإعدادات الافتراضية على الصفحة الرئيسية FBcpp [insert query] يبحث عن مصطلحات CPP النحوية على cppreference.comw [insert query] يبحث عن ويكيبيديا ، الافتراضيات على صفحة ويكيبيديا الإنجليزيةyt [insert query] قم بإجراء بحث على YouTube. إذا لم يتم تمرير الاستعلام ، فإن التخلف عن السداد في صفحة YouTube الرئيسيةgm [insert number from 0-n where n = number of gmail accounts - 1] يفتح Gmail. إذا لم تكن هناك حجة محددة ، تفتح الحساب الأول. يمكن فتح حسابات بديلة مع الحججhelp في إرجاع قائمة الأوامر القابلة للاستخدام أعتقد أن توسيع هذا أمر بديهي للغاية في الوقت الحالي. فقط أضف أساليب جديدة إلى فئة الأوامر. قد يكون الأمر مربكًا بعض الشيء لأن كل شيء يحدث في ملف jack_bunny.py ، وربما سأقوم بتخصيص هذا لاحقًا عندما يكون لدي الوقت.
لقد استضافت هذا على خادم Amazon EC2 ، تم تكوينه باستخدام Nginx و Gunicorn ، لذا سأمر عبر الخطوات التي مررت بها.
الخطوة الأولى هي استنساخ هذا الريبو على الخادم الذي تريد تشغيله على جميع التبعيات. يجب أن تكون كل هذه في ملف requirements.txt ، لذا يجب أن يعمل شيء مثل pip3 install -r /path/to/requirements.txt . إذا واجهت أي مشكلات ، فإن مكتبات Python الوحيدة التي تستخدمها حقًا هي flask و wikipedia لذا يجب أن يحل تنزيل تلك المشكلات.
هناك حزم إضافية تحتاجها لاستضافة هذا. الأول هو nginx . لتثبيت هذا ، يمكنك ببساطة استخدام sudo apt-get install nginx . سنحتاج أيضًا إلى تثبيت gunicorn والقيام بذلك يمكنك استخدام pip3 install gunicorn .
الفكرة وراء ذلك هي أننا سنستخدم gunicorn لتشغيل هذا على المضيف المحلي على ميناء غير مستخدم. سنستخدم nginx بعد ذلك الوكيل العكسي بحيث يتم تسليم الطلب الذي تلقاه إلى gunicorn ، ثم سيخدم gunicorn ذلك على nginx الذي سيتم إعطاؤه للمستخدم.
فكيف نفعل هذا؟
أولا نريد الحصول على gunicorn الجري. أمر التشغيل هو gunicorn jack_bunny:app -p jack_bunny.pid -D . في هذا الأمر ، يمثل jack_bunny اسم الملف بدون .py ويمثل app تطبيق Flask. نضيف علامة -D حتى يتم تشغيل هذا في الخلفية ، حتى عندما نغلق. يحفظ -p jack_bunny.pid العملية _id لهذا الملف ، لذا إذا كنت تريد قتل هذه العملية ، فيمكنك فقط قتل -9.
الآن علينا فقط إعداد nginx لأن هذا لا يزال يعمل محليًا فقط.
لقد قمت أولاً بإنشاء ملف التكوين الجديد هذا على /etc/nginx/sites-available/jack_bunny
# /etc/nginx/sites-available/jack_bunny
# Redirect www.[insert server name].com to [insert server name].com
server {
server_name www.[insert server name].com;
rewrite ^ http://[insert server name].com/ permanent;
}
# Handle requests to [insert server name].com on port 80
server {
listen 80;
server_name [insert server name].com;
# Handle all locations
location / {
# Pass the request to Gunicorn
proxy_pass http://127.0.0.1:8000;
# Set some HTTP headers so that our app knows where the
# request really came from
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ثم قمت بإنشاء Symlink هنا.
$ sudo ln -s
/etc/nginx/sites-available/jack_bunny
/etc/nginx/sites-enabled/jack_bunny
بعد إعادة تشغيل nginx يجب أن تكون على ما يرام!
إذا واجهت بعض مشكلات تكوين nginx ، فتحقق من سجلات الخطأ لمعرفة ما قد يحدث. شيء واحد واجهته هو أن اسم الخادم الخاص بي كان طويلًا جدًا ، وقد أعطاني هذا خطأ في اسم تجزئة الخادم. لقد قمت بحل هذا عن طريق إضافة خط server_names_hash_bucket_size 128; إلى ملف التكوين nginx الخاص بي هنا /etc/nginx/nginx.conf .
هناك مجموعة من الطرق لنشر تطبيق Flask على خادم حتى لا تضطر OYOU إلى القيام بذلك. لقد وجدت أن هذا هو أسرع طريقة. للإشارة ، هذا هو الدليل الذي تابعته ، إنه مفصل إلى حد ما.