Deploying to Elastic Beanstalk


#1

ممكن حدى يشرح طريقة رفع المشروع يلي كنا بنشتغل عليه على الاستضافة المجانية من امازون Elastic Beanstalk

مشروع Django


Deploy application on internet
#2

بالتأكيد… هذه هي الخطوات للقيام بالأمر على مشروعك
قمت بعمل fork على مشروعك, لكي أقوم بالأمور بشكل مريح.

  • مالذي قمت به بالضبط ؟

بداية قمت بعمل بيئة وهمية باستعمال الأمر:

virtualenv venv

سيقوم بإنشاء مجلد اسمه venv.

ثم بتحديث جانقو إلى آخر إصدار, بهذا الشكل:

https://github.com/dummy-tests/clasico-live/commit/cc22eda7c724b63fa36cef9feb06da303fa619f3

ثم تفعيل البيئة الوهمية لتنصيب الـ requirements عليها:

call venv\scripts\activate
pip install -r requirements.txt
  • إلى الآن الذي قمت به لا دخل له بالـ Elastic Beanstalk, كيف أقوم برفع الموقع ؟

الموضوع كله في اربع أوامر:

Install eb and git.
eb init, if you already has an environment, just use that one.
eb create
eb deploy
  • كيفية تنصيب eb ؟

ببساطة هي مجرد أداة تأتي من awsebcli, باستعمال الأمر:

pip install awsebcli
  • كيفية بناء تطبيق application على أمازون ؟

تحتاج أن تقوم بعمل يوزر IAMUser لمتابعة هذه الخطوة, بإمكانك القيام بها من صفحة Security Credentials:

image

ثم تقوم بكتابة eb init لإنشاء التطبيق.

التطبيق سيتم انشاءه في امازون, حسب الخيارات التي سيساعدك eb فيها.

  • كيفية بناء البيئة التي ستعمل عليها environment ؟

الأمر التالي هو من سيقوم بهذا eb create, حيث كل تطبيق ممكن يحتوي على أكثر من environment, كل واحد ممكن يكون فيها أكثر من برنامج يعمل, مثلاً تريد تشغيل أربع برمجيات, كل واحدة تتكلم مع الأخرى, يتم هذا في environment .

  • كيفية اطلاق المشروع deploy ؟

فقط تقوم بعمل commit لكل ما قمت به (إذا نسيتها, سيتم ارفاق نسخة قديمة من المشروع).

ثم تكتب eb deploy, وسيقوم بارسال النسخة الحديثة.

  • حدثت مشكلة عند الإطلاق, ماهي ؟

بالتأكيد, لم نحدد نوع المشروع (الفريمورك جانقو أو شيء آخر) وأين مساره, يتم هذا في مجلد .ebextensions, نكتب الملف django.config داخله:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: footBall/wsgi.py

هنا نخبر أمازون أن المشروع يحتوي على wsgi موجودة في footBall/wsgi.py

  • بقيت مشكلة static files لا تظهر, مالعمل ؟

يجب القيام بالعملية اما يدوياً:

python manage.py collectstatics

كما هو مشروح هنا: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html

أو إضافة أمر للقيام بالعملية بشكل تلقائي, كما مشروح هنا: https://gearheart.io/blog/how-to-deploy-django-app-with-aws-elastic-beanstalk/

  • ماذا عن القيام بالـ git push تواجهني مشكلة 403 - غير مرخص للقيام بهذا ؟

الأمر سهل, eb يقوم ببناء git repo في خدمة من امازون اسمها codecommit

تحتاج فقط أن تأخذ الـ credentials الخاصة بك من security credentials

ثم تضيفها على git kraken, حينما تقوم بعمل push على البرنامج, لا تنسى حذف البيانات القديمة:

المصادر:

https://stackoverflow.com/a/30335659/4565520

https://www.youtube.com/watch?v=YJoOnKiSYws

https://app.pluralsight.com/library/courses/elastic-beanstalk-building-applications/table-of-contents


#3

سأنجز الموضوع حالاً
شكررررررررررررررررراً
و جزاك الله كل خير :heart:


#4

عند تنفيذ هذا الامر

يظهر هذا الخطأ


#5

هل الخطأ لدي في البيئة ؟؟


#6

نعم, تأكد أيضاً من ملف requirements هل هو مطابق للذي انا حدثته ؟


#7

نعم اخذته كوبي بيست


#8

هل يجب ان اخرج من الطرفية (venv) ؟؟؟


#9

لا… يجب أن تكون داخل venv, وايضاً تستعمل بايثون النسخة 3.6


#10

اظن انني عرفت المشكلة
نفذت الامر ولم يعطيني اي خطأ
سأكمل لأرى


#11

المشكلة في هذه
psycopg2-binary==2.7.4


#12

بايثون لدي 3.7 هل يؤثر


#13

لا مشكلة مع نسخ أحدث من البايثون… بالنسبة لـ psycopg2 يفضل استعمال psycopg2-binary مع بايثون 3

هنا السبب: https://github.com/psycopg/psycopg2/issues/674


#14

افكر في بناء مشروع جديد وتجريب رفعه من الصفر
هذا ارهقني

هل قمت برفعه على الاستضافة وجربته !؟


#15

لا أبداً… لديك مشروع جاهز, وأنا بالفعل رفعته واشتغل معي, ثم حذفته مباشرة لأنه يستعمل أكثر من خدمة وسيكلفني إذا ابقيته :smile:


#16

يعني لو انا ابقيته رح يكلفني على نفس هي الاستضافة !؟
الاستضافة ليست مجانية !!


#17

الاستضافه ليست مجانية, تسمح لك بسيرفر واحد لمدة 750 ساعة في الشهر مجاناً (لمدة سنة), وأنا لدي اثنين سيرفرات, والتطبيق يعمل على سيرفر ثالث


#18

يعني بالنسبة الي تعتبر مجانية

يا ليت مستقبلا يكون في شرح وافي على نوعية الاستضافات وايهم الافضل وكيفية الاستعمال


#19

قمت بحساب 750 ساعة على 30 يوم يعني 25 ساعة في اليوم !


#20

نعم وفي حالة لديك اثنان سيرفرات, يكون المجموع أكثر من 750 ويبدأ بتخطي المجاني