سعيد يوسف نشر 16 أكتوبر 2021 أرسل تقرير نشر 16 أكتوبر 2021 لدي مشروع عبارة عن موقع الكتروني مبني بلغة python بايثون وإطار عمل دجانغو، أريد شرح خطوات رفعه على الاستضافة وتشغيله 2 اقتباس
0 شرف الدين حفني نشر 16 أكتوبر 2021 أرسل تقرير نشر 16 أكتوبر 2021 من الممكن القيام بمثل ذلك عبر منصة heroku , نبدأ أولاً بتثبيت heroku command line عبر الأمر التالي لمستخدمين ليونكس sudo snap install --classic heroku وعبر الرابط التالي لمستخدمي ويندوز https://cli-assets.heroku.com/heroku-x86.exe بعد ذلك نقوم بتسجيل الدخول الى حساب heroku الخاص بك عبر نافذة الأوامر بالشكل التالي heroku login Enter your Heroku credentials: Email: your_email.com Password: ********* قم بإنشاء ملف runtime.txt في مجلد المشروع وقم بتحديد اصدار البايثون فيه, على سبيل المثال python-2.7.12 نقوم بانشاء ملف الprocfile في مجلد المشروع لتحديد الأوامر المراد تنفيذها عند بدأ تشغيل المشروع على heroku touch Procfile ومن ثم نقوم بإضافة الأمر التالى في الملف والذي يحدد خادم الويب الذي سيُستخدم في تشغيل المشروع web: gunicorn djangoherokuapp.wsgi --log-file - ومن ثم نقوم بتعديل ملف الsettings.py ووضع الdependencies التالية بالشكل التالي INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'herokuapp', ] ومن ثم نقوم بتثبيت تلك الإعتماديات من أجل عمل المشروع بشكل صحيح على المنصة pip install gunicorn dj-database-url whitenoise psycopg2 ولنجعل heroku يعلم أن المشروع المُراد تثبيته هو مشروع python نقوم بإنشاء ملف requirements.txt pip freeze > requirements.txt ونقوم بتحديد الdependencies وإصداراتها في الملف dj-database-url==0.4.2 Django==1.11.7 gunicorn==19.7.1 psycopg2==2.7.3.2 pytz==2017.3 whitenoise==3.3.1 إن كان المشروع يحتوي على ملفات ثابتة(static files) مثل الhtml, css, javascript, images فإن للأسف heroku ﻻ يقوم بدعم التعامل مع تلك الملفات بشكل إفتراضي لذا سنقوم بإستخدام الwhitenoise الذي قمنا بتثبيته مسبقاً وكتابة الأوامر التالية في ملف الsettings.py PROJECT_ROOT = os.path.join(os.path.abspath(__file__)) STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles') STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, 'static'), ) STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' ومن ثم نقوم بإضافة الخدمات الوسيطة(middle ware ) في ملف الsettings.py MIDDLEWARE = [ 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] نقوم بعد ذلك بإنشاء المشروع على heroku عبر الأمر التالي heroku create herokudjangoapp نقوم بعد ذلك بتهيئة مستودع git عبر الأمر التالي git init ومن ثم نحتاج لربط ذلك المشروع بالمشروع الذي لدينا على الحاسب heroku git:remote -a herokudjangoapp ومن ثم نقوم بتنفيذ الأوامر التالية من أجل رفع المشروع على heroku git add . git commit -m "first commit" git push heroku master سيستغرق ذلك بعضاً من الوقت ومن ثم ستجد المشروع قد تم رفعه بنجاح 2 اقتباس
1 سامح أشرف نشر 17 أكتوبر 2021 أرسل تقرير نشر 17 أكتوبر 2021 يُمكن إستخدام منصة Heroku كما وضح شرف الدين سابقًا أو يمكن حتى إستخدام أي سيرفر إفتراضي VPS من البداية من خلال الخطوات التالية: المتطلبات في البداية نحتاج إلى إنشاء الخادم وضبطه في السحابة من خلال أحد خدمات شركات الإستضافة مثل DigitalOcean أو CloudNode، يمكنك أن تشتري أي خادم ويب للتجربة، وسيتم محاسبتك بالساعة (حسب وقت إستعمالك للخادم منذ وقت الشراء)، وقد تتبع شركات إستضافة خطط أخرى غير المحاسبة بالساعة. ضبط بيئة Virtualenv جديدة نحتاج الآن إلى إعداد بيئة وهميّة virtualenv حيث سيتم تخزين ملفات المشروع وحزم Python أيضًا. إذا كنت لا تستخدم virtualenv ، فقم ببساطة بإنشاء المجلد الذي سيتم تخزين ملفات مشروع Django فيه وانتقل إلى الخطوة التالية. يمكنك تثبيت وإعداد Vitualenv من خلال الأوامر التالية: sudo apt-get install python-virtualenv virtualenv /opt/myproject الآن بعد تثبيت وإعداد بيئة وهميّة Vitualenv للمشروع نحتاج إلى تفعيلها لكي نتمكن من تثبيت المكتبات والحزم المستخدمة في المشروع، يوجد ملف باسم activate في مجلد bin في البيئة الوهميّة التي تم إنشائها سابقًا: source /opt/myproject/bin/activate يمكن الإطلاع على المزيد حول البيئة الوهمية Vitualenv من خلال هذه المقالة: كل المتبقي في هذه الخطوة هو تثبيت Django من خلال الأمر التالي: pip install django ملاحظة: يجب تنفيذ الأمر السابق بعد تفعيل البيئة الوهميّة مباشرة وليس في أي نافذة Terminal أخرى، لكي يتم تثبيت Django في البيئة الوهمية وليس بشكل عام على النظام. إنشاء قاعدة بيانات المشروع في الغالب يتم إستخدم PostgreSQL كخادم قاعدة بيانات. لإنشاء قاعدة بيانات باستخدام PostgreSQL، قم بتنفيذ الأمر التالي: sudo su - postgres الآن يمكن تنفيذ الأمر التالي لإنشاء قاعدة بيانات جديدة (يمكن إختيار أي اسم في هذه الخطوة): createdb mydb ولضمان حماية أكبر على قاعدة البيانات سوف نقوم بإنشاء مستخدم جديد وإعطائه صلاحيات التحكم في قاعدة البيانات التي قمنا بإنشائها: createuser -P psql GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser; في الأمر الأول سوف يتم السؤال عن اسم المستخدم الجديد وكلمة السر الخاصة به وبعض المعلومات الأخرى، ثم سيتم إعطائه الصلاحيات اللازمة من خلال جملة SQL الأخيرة. إذا لم يكن المشروع يستخدم PostgreSQL كخادم قاعدة بيانات، فستحتاج إلى التحقق من الوثائق حول كيفية إنشاء قاعدة بيانات لخادم قاعدة البيانات الذي تختاره. ضبط خادم Nginx نحتاج إلى ضبط خادم Nginx لكي يتمكن من عرض موقعنا. وذلك عبر تشغيل الأمر التالي لإنشاء ملف configuration : sudo nano /etc/nginx/sites-available/myproject الأمر السابق سوف يقوم بإنشاء ملف جديد والبدء في تحريره عبر برنامج nano. الآن يجب كتابة التالي لكي يتمكن خادم Nginx من التعرف على مكان المشروع وكيفية تشغيله: server { server_name yourdomainorip.com; access_log off; location /static/ { alias /opt/myenv/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; } } يمكن الآن حفظ الملف عبر الضغط على Ctrl + O ثم إغلاق الملف عبر الضغط على Ctrl + X لكي يتعرف Nginx على الملف السابق الذي قمنا بإنشائه يجب تنفيذ الأوامر التالية: cd /etc/nginx/sites-enabled sudo ln -s ../sites-available/myproject sudo service nginx restart إن ظهر خطأ كالتالي: server_names_hash, you should increase server_names_hash_bucket_size: 32 لحل المشكلة يجب تعديل الملف /etc/nginx/nginx.conf وإلغاء التعليق عن السطر التالي: server_names_hash_bucket_size 64; حتى الآن تم إعداد الخادم بشكل سليم ويتبقى أن نرفع ملفات مشروع Django نفسه إلى الخادم، ويمكن إستخدام أي بروتوكول لنقل أو إدارة الإصدارات مثل FTP, SFTP, SCP, Git, SVN، ويفضل إستخدام Git نظرًا لأنه الأسرع والأسهل في التثبيت والإعداد والأسرع في نقل الملفات أيضًا، لذلك يجب رفع المشروع على مستودع في أحد المواقع مثل GitHub أو GitLab .. إلخ، والحصول على رابط المستودع حيث سنقوم بإستخدامه في الخطوة التالي: إذا لم يكن لديك Git مثبت مسبقًا، فيمكن تثبيته عبر الأمر التالي: sudo apt-get install git نحتاج الآن إلى إنشاء مجلد للمشروع في البيئة الوهمية التي قمنا بإنشائها في الخطوات الأولى وتحميل نسخة من ملفات المشروع إليه: cd /opt/myproject mkdir myproject cd myproject git clone https://github.com/path/to/repo . ملاحظة: يحتوي الأمر الأخير على نقطة . وهي تشير إلى المجلد الحالي الذي سيتم تنزيل الملفات إليه. تثبيت وإعداد خادم التطبيقات App Server نحتاج الآن إلى إستخدام اداة مثل gunicorn لكي تعمل كخادم HTTP وتدير الزيارات إلى المشروع، لذلك سجب تثبيتها وجعل هذا الخادم يستمع إلى الزيارات من المنفذ 8001 الذي قمنا بإعداده في خطوة إعداد Nginx السابقة: source /opt/myproject/bin/activate pip install gunicorn gunicorn_django --bind yourdomainorip.com:8001 يمكنك الآن الضغط على Ctrl + z ثم كتابة "bg" لكي يعمل المشروع في الخلفية. ضبط إعدادات المشروع الخطوة الأخيرة هي إعداد المشروع نفسه وتغير بعض الإعدادات الخاصة به لكي يتعمل بشكل سليم وبدون مشاكل. في البداية سوف نقوم بتعديل ملف settings.py من خلال الأمر التالي: sudo nano /opt/myproject/myproject/settings.py ويجب تعديل وضع التطوير Development Mode عبر تغير قيمة المتغير DEBUG إلى False: DEBUG = False أيضًا يجب إعداد قاعدة البيانات من خلال تعديل DATABASES: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.psycopg2', 'NAME': 'mydb', # database name. # The following settings are not used with sqlite3: 'USER': 'myuser', 'PASSWORD': 'password', 'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 'PORT': '', # Set to empty string for default. } } كما يجب تعديل مسارات الملفات الثابتة Static Files من خلال تعديل المتغير STATIC_ROOT و STATIC_URL، كالتالي: STATIC_ROOT = '/opt/myproject/static/' STATIC_URL = '/static/' الآن يمكن حفظ المشروع والتوجه إلى المجلد الذي يحتوي الملف manage.py ثم تنفيذ الأمر التالي: python manage.py collectstatic سيجمع هذا الأمر جميع الملفات الثابتة Static Files في المجلد الذي قمنا بتعيينه في ملف settings.py أعلاه. هذا كل شيء، يمكن الآن زيارة الموقع عبر IP الخادم VPS أو ربطه بنطاق/مجال Domain معين. وفي هذه الحالة ستحتاج إلى شراء نطاق Domain لكي تتمكن من تشغيل مشروعك عبر الإنترنت، حيث أن شركات الإستضافة تمنحك الخادم فقط في أغلب الأحيان، لذلك يجب أن تقوم بشراء نطاق لموقعك بنفسك من خلال أحد شركات الإستضافة مثل namechape أو GoDaddy ..إلخ ، لذلك يجب أن يكون لديك مجال يشير إلى خادم الويب الذي تم إنشاؤه حديثًا. 2 اقتباس
0 Mohamed Slimane نشر 27 يونيو أرسل تقرير نشر 27 يونيو في حال اشتريت سيرفر يمكن اعتماد لوحة دي بانل اقتباس
السؤال
سعيد يوسف
لدي مشروع عبارة عن موقع الكتروني مبني بلغة python بايثون وإطار عمل دجانغو، أريد شرح خطوات رفعه على الاستضافة وتشغيله
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.