لقد قمت مؤخرًا بنشر تطبيق Django الخاص بي في الإنتاج. يُطلق على موقع الويب اسم videiro.com وقد تم تطويره باستخدام لغة Django HTML/CSS/JS Tailwind.
أنا أستخدم خادم debian 12 والذي سيكشف تطبيقي عبر أنفاق cloudflare. يتم تقديم جميع الملفات الثابتة عبر nginx ويتم تشغيل مشروع Django بواسطة gunicorn.
سأوضح لك في هذا الدليل كيفية إعداد هذا الأمر.
أول شيء عليك فعله هو فتح settings.py وتغيير ما يلي
Debug = False ALLOWED_HOSTS = ['yourdomain.tld'] CSRF_COOKIE_SECURE = True CSRF_TRUSTED_ORIGINS = [ 'yourdomain.tld', ]
يجب عليك أيضًا تغيير SECRET_KEY إلى سلسلة عشوائية طويلة، والتي لا يجب مشاركتها مع أي شخص أبدًا.
بعد ذلك أنشئ ملفًا جديدًا باسم .gitignore والصق ما يلي:
db.sqlite3 *.pyc
سيؤدي هذا إلى التأكد من عدم تحميل قاعدة البيانات على خادمنا وعدم وجود ملفات pyc أيضًا.
يمكنك الآن تحميل مشروعك إلى مستودع جيثب جديد (أو مستودع جيتيا). إذا كنت لا تريد أن يتمكن الجميع من الوصول إلى كود المصدر الخاص بك، فتأكد من تعيين المستودع على أنه خاص.
إذا كنت تريد التأكد من أن كود المصدر الخاص بك يظل خاصًا، فإنني أوصيك بإعداد مثيل gitea مستضاف ذاتيًا، وقراءة Selfhost مثيل gitea الخاص بك - بديل github خفيف الوزن ومستضاف ذاتيًا، لمعرفة كيفية القيام بذلك.
git init git branch -M main git add . git commit -m "initial commit" git remote add origin https://... git push -u origin main
الآن بعد أن انتهينا من ذلك، يجب عليك تسجيل الدخول إلى الخادم الخاص بك
قبل تكوين أي شيء، تأكد من عدم السماح بأي عمليات تسجيل دخول عبر SSH باستخدام كلمة مرور. اتبع تأمين ssh باستخدام المصادقة المستندة إلى المفتاح لتأمين الخادم الخاص بك من هذه الأنواع من الهجمات.
تسجيل الدخول إلى الخادم الخاص بك
ssh [email protected]
تأكد من أن حزمك محدثة للبيانات
sudo apt update && sudo apt upgrade
الآن قم بتثبيت python وpip وgit وnginx
sudo apt install python3 python3-pip git nginx
الآن قم باستنساخ مشروعك في الدليل الرئيسي الخاص بك.
git clone https://... cd my-project
بمجرد التثبيت، قم بتثبيت ما يلي:
pip install django django-crispy-forms whitenoise
الآن حاول تشغيل المشروع:
python3 manage.py runserver
إذا ظهر لك خطأ بأن هناك حزمة مفقودة، قم بتثبيتها ثم أعد تشغيلها.
الآن سنقوم بإعداد الجونيكورن
تثبيته أولاً
pip install gunicorn
الآن قم بإنشاء ملف جديد يسمى gunicorn.service باستخدام محرر النصوص المفضل لديك:
sudo vim /etc/systemd/system/gunicorn.service
والصق ما يلي:
[Unit] Description=gunicorn daemon After=network.target [Service] User=YOURUSER Group=www-data WorkingDirectory=/home/YOURUSER/PROJECT ExecStart=/path/to/gunicorn --access-logfile - --workers 3 --bind 127.0.0.1:8000 PROJECTNAME.wsgi:application [Install] WantedBy=multi-user.target
قم بتغيير المستخدم الخاص بك إلى المستخدم الخاص بك.
للعثور على المسار إلى تشغيل gunicorn:
which gunicorn
واسم مشروعك هو اسم المجلد الموجود داخل مشروعك والذي يحتوي على ملف settings.py.
الآن قم بتشغيل الأوامر التالية لبدء وتمكين gunicorn (البدء عند التمهيد)
sudo systemctl daemon-reload sudo systemctl start gunicorn.service sudo systemctl enable gunicorn.service
الآن إذا توجهت إلى 127.0.0.1:8000، فمن المفترض أن ترى مشروعك قيد التشغيل.
ولكن لم تنتهي بعد
نحن الآن بحاجة إلى خدمة المحتوى الثابت الخاص بنا عبر nginx.
قم أولاً بإنشاء ملف تكوين nginx جديد باستخدام محرر النصوص المفضل لديك:
sudo vim /etc/nginx/sites-available/PROJECT
تغيير المشروع إلى ما تريد
الآن قم بلصق المحتوى التالي:
server { listen 80; server_name YOURDOMAIN; location /static/ { alias /var/www/staticfiles/; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
فقط قم بتغيير النطاق الخاص بك إلى النطاق الذي سيتم استضافة هذا عليه.
إنشاء رابط رمزي لتمكين موقع الويب الخاص بك:
sudo ln -s /etc/nginx/sites-available/PROJECT /etc/nginx/sites-enabled/
بدء وتمكين nginx:
sudo systemctl start nginx sudo systemctl enable nginx
أول شيء عليك القيام به هو قرص مضغوط في مشروع (Django) الخاص بك
cd project
الآن قم بتشغيل الأمر التالي:
python3 manage.py collectstatic
سيؤدي هذا إلى إنشاء مجلد جديد يسمى staticfiles
الآن لإعداد الملفات الثابتة لدينا خياران:
سأقوم بالخيار الثاني:
قم أولاً بإنشاء ملف جديد يسمى staticfiles في /var/www
sudo mkdir -p /var/www/staticfiles
الآن انسخ جميع الملفات الثابتة من مشروعك هناك:
sudo cp staticfiles/* /var/www/staticfiles
الآن قم بتحويل القرص المضغوط إلى /var/www
cd /var/www
تغيير ملكية كافة الملفات
sudo chown www-data:www-data staticfiles sudo chown www-data:www-data staticfiles/*
أعد تشغيل خدمة nginx:
sudo systemctl restart nginx
الآن إذا توجهت إلى:
127.0.0.1
يجب أن تشاهد موقع الويب الخاص بك يعمل مع جميع الملفات الثابتة التي يتم تقديمها!
الآن لجعل موقع الويب الخاص بك متاحًا للجمهور.
للقيام بذلك سوف تحتاج إلى حساب cloudflare ومجال يشير إلى cloudflare.
توجه أولاً إلى لوحة تحكم Zero Trust
ضمن الشبكات، انقر على الأنفاق ثم قم بإنشاء نفق
بمجرد إنشائه، يجب عليك تثبيت الموصل وتشغيله، واتباع الإرشادات الموجودة على الصفحة لإعدادك المحدد.
بعد تشغيل الموصل، يجب النقر فوق علامة التبويب اسم المضيف العام وإضافة اسم مضيف عام.
الآن يجب أن ترى شيئًا مثل هذا:
املأ المعلومات كما لدي. يجب أن يكون نوع الخدمة HTTP ويجب أن يكون عنوان URL 127.0.0.1:80 أو localhost:80
الآن، إذا توجهت إلى النطاق الذي حددته، فيجب أن ترى تطبيقك قيد التشغيل.
تهانينا!
إذا استمتعت بهذا المنشور وترغب في دعم عملي (غير مدفوع الأجر في الغالب)، فيمكنك التبرع هنا.
انضم هنا
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3