مقدمه
در این آموزش، نحوه اجرای اپلیکیشن Python Django روی سرورهای Webhosting یا Managed Server از Hetzner را یاد خواهیم گرفت. Django یک فریمورک وب پایتون است. به طور پیشفرض این فریمورک روی WSGI (واسطه بین سرور وب و برنامه) اجرا میشود، اما mod_wsgi در سرور Apache مدیریتشده در دسترس نیست. با این حال، روشهای مختلفی برای تبدیل WSGI به واسطهای سازگار دیگر وجود دارد.
پیشنیازها
- Webhosting با پشتیبانی از SSH (نسخه ۹ یا بالاتر) یا Managed Server با دسترسی SSH فعال.
مرحله ۱ – نصب وابستگیها
مرحله ۱.۱ – نصب و فعالسازی virtualenv
pip3 install --break-system-packages virtualenv mkdir /usr/home/holu/virtualenvs python3 -m virtualenv /usr/home/holu/virtualenvs/example_com . /usr/home/holu/virtualenvs/example_com/bin/activate
مرحله ۱.۲ – نصب Django
pip install django
مرحله ۱.۳ – نصب Flup (اختیاری، برای FastCGI ضروری است)
pip install flup
مرحله ۲ – ایجاد و پیکربندی پروژه Django
مرحله ۲.۱ – شروع پروژه
mkdir /usr/home/holu/djangoprojects env -C "/usr/home/holu/djangoprojects" django-admin startproject example_com
مرحله ۲.۲ – پیکربندی پروژه
تمام دامنههای درخواست شده را به متغیر ALLOWED_HOSTS
اضافه کنید تا دسترسی امکانپذیر باشد.
vim /home/holu/djangoprojects/example_com/example_com/settings.py
با زدن i
به “حالت وارد کردن” بروید و تمام دامنههای درخواست شده را اضافه کنید:
ALLOWED_HOSTS = ['example.com']
با زدن esc
به “حالت فرمان” برگشته و :wq
را برای ذخیره و خروج وارد کنید.
مرحله ۳ – آمادهسازی ریشه سند سرور وب
یک دایرکتوری وبسایت خالی بسازید و ریشه سند را در konsoleH تغییر دهید.
mkdir -p /usr/home/holu/public_html/example_com
گزینه ۱ – FastCGI
ایجاد .htaccess
vim /usr/home/holu/public_html/example_com/.htaccess
با زدن i
به “حالت وارد کردن” بروید و محتوای زیر را وارد کنید:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ djangoapp.fcgi/$1 [QSA,L]
</IfModule>
با زدن esc
به “حالت فرمان” برگشته و :wq
را برای ذخیره و خروج وارد کنید.
ایجاد اسکریپت .fcgi
vim /usr/home/holu/public_html/example_com/djangoapp.fcgi
#!/usr/home/holu/virtualenvs/example_com/bin/python
import sys
import os
import django
from flup.server.fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
sys.path.append("/usr/home/holu/djangoprojects/example_com")
os.environ['DJANGO_SETTINGS_MODULE']="example_com.settings"
django.setup(set_prefix=False)
WSGIServer(WSGIHandler()).run()
مجوز اجرایی را برای مالک تنظیم کنید:
chmod 744 /usr/home/holu/public_html/example_com/djangoapp.fcgi
گزینه ۲ – CGI
ایجاد .htaccess
vim /usr/home/holu/public_html/example_com/.htaccess
با زدن i
به “حالت وارد کردن” بروید و محتوای زیر را وارد کنید:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ djangoapp.cgi/$1 [QSA,L]
</IfModule>
با زدن esc
به “حالت فرمان” برگشته و :wq
را برای ذخیره و خروج وارد کنید.
ایجاد اسکریپت .cgi
vim /usr/home/holu/public_html/example_com/djangoapp.cgi
#!/usr/home/holu/virtualenvs/example_com/bin/python
import sys
import os
import django
import wsgiref.handlers
from django.core.handlers.wsgi import WSGIHandler
sys.path.append("/usr/home/holu/djangoprojects/example_com")
os.environ['DJANGO_SETTINGS_MODULE']="example_com.settings"
django.setup(set_prefix=False)
wsgiref.handlers.CGIHandler().run(WSGIHandler())
مجوز اجرایی را برای مالک تنظیم کنید:
chmod 744 /usr/home/holu/public_html/example_com/djangoapp.cgi
مرحله ۴ – آزمایش
برای آزمایش، دامنه خود را بازدید کنید. شما باید چیزی شبیه به تصویر زیر ببینید:
نتیجه
حال شما میتوانید اپلیکیشنهای Django خود را روی سیستمعامل مدیریتشده مستقر کنید.