Спестете 15% от всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код: Skills За начало
Заглавия
Linux Администрация

Как да инсталирате Django на хостинг сървър: Пълно ръководство стъпка по стъпка

Django е високо-нивелирана Python уеб рамка, предназначена да насърчава бързото разработване и чистия, прагматичен дизайн. Остава един от най-популярните избори за изграждане на мащабируеми, защитени и поддържаеми уеб приложения — от прости блогове до сложни корпоративни платформи. В този всеобхватен наръчник ще ви преведем през всяка стъпка, необходима за инсталиране на Django на хостинг сървър, от подготовката на вашата Linux среда до стартиране на вашия първи проект и подготовката му за производство.

Защо да изберете Django за вашето уеб приложение?

Преди да се потопите в процеса на инсталация, струва си да разберете защо Django продължава да доминира в пейзажа на Python уеб разработката:

  • Всичко включено: Django идва с вградена аутентификация, админ панел, ORM, обработка на форми и функции за сигурност от кутията.
  • Мащабируемост: Django захранва високотрафични платформи като Instagram и Pinterest.
  • Дизайн с приоритет на сигурността: Django защитава срещу често срещани уязвимости, включително SQL injection, XSS, CSRF и clickjacking по подразбиране.
  • Бърза разработка: Философията му за конвенция вместо конфигурация позволява на разработчиците да доставят функции по-бързо.
  • Огромна екосистема: Хиляди преизползваеми пакети и голямо общество означават, че решения на почти всеки проблем вече съществуват.

За да получите максимума от Django, ще ви трябва надежда среда на сървър. План за VPS Hosting ви дава root достъп, посветени ресурси и гъвкавост, които приложенията на Django изискват.

Предварителни изисквания

Преди да започнете процеса на инсталация, уверете се, че имате следното:

  • Хостинг сервър, работещ с Linux дистрибуция (препоръчват се Ubuntu 20.04/22.04 или Debian)
  • SSH достъп до сървъра с sudo привилегии
  • Python 3.8 или по-висока версия (препоръчва се Python 3.10+)
  • pip (Python пакетния мениджър) инсталиран
  • Основно познаване на Linux командния ред

> Полезен съвет: Ако работите с production Django приложение, избягвайте shared hosting среди. VPS Hosting план или Dedicated Server ще ви дадат контрола и производителността, която вашето приложение нуждае.

Стъпка 1: Свързване към вашия сервър чрез SSH

Отворете вашия терминал и установете SSH връзка към вашия хостинг сервър:

ssh username@server_ip

Заменете username с вашето действително системно потребителско име и server_ip с публичния IP адрес на вашия сервър. Ако използвате персонализиран SSH порт или файл за удостоверяване на базата на ключ, коригирайте командата съответно:

ssh -i /path/to/your/key.pem username@server_ip

След свързването ще имате командния интерфейс на вашия сервър, където можете да започнете процеса на настройка.

Стъпка 2: Актуализирайте вашата система и инсталирайте Python и pip

Поддържането на пакетите на вашата система актуални е критична първа стъпка както за сигурност, така и за съвместимост.

Актуализирайте индекса на пакетите

sudo apt update && sudo apt upgrade -y

Инсталирайте Python 3 и pip

Повечето съвременни Ubuntu и Debian дистрибуции идват с предварително инсталиран Python 3. Първо проверете вашата версия на Python:

python3 --version

Ако Python 3 не е инсталиран или имате нужда от pip, инсталирайте ги с:

sudo apt install python3 python3-pip -y

Проверете инсталациите:

python3 --version
pip3 --version

Трябва да видите номера на версиите, потвърждаващи, че и двата инструмента са налични.

Стъпка 3: Настройка на Python Virtual Environment

Използването на виртуално окружение не е просто препоръчано — то се счита за най-добра практика за всеки Python проект. Виртуалните окружения изолират зависимостите на вашия проект от системната инсталация на Python и от други проекти на същия сървър, предотвратявайки конфликти на версиите и поддържайки вашето окружение чисто.

Инсталирайте virtualenv

sudo pip3 install virtualenv

Алтернативно, можете да използвате вградения модул на Python venv (достъпен в Python 3.3+):

sudo apt install python3-venv -y

Създайте вашата директория на проекта и виртуално окружение

Навигирайте до директорията, където искате да хостирате вашия проект, или създайте нова:

mkdir myproject
cd myproject

Сега създайте виртуалното окружение в директорията на вашия проект:

virtualenv venv

Или, използвайки вградения модул venv:

python3 -m venv venv

Активирайте виртуалното окружение

source venv/bin/activate

След активиране, вашата команден ред ще се промени, за да покаже името на виртуалното окружение, например:

(venv) username@server:~/myproject$

Всички команди pip install изпълнени докато виртуалното окружение е активно ще инсталират пакети само в това изолирано окружение. За да го деактивирате по всяко време, просто изпълнете:

deactivate

Стъпка 4: Инсталиране на Django

С активирана виртуална среда инсталирайте Django с помощта на pip:

pip install django

За инсталиране на конкретна версия на Django (препоръчва се за production, за да се гарантира съвместимост):

pip install django==4.2

Проверете инсталацията:

django-admin --version

Трябва да видите номера на инсталираната версия на Django отпечатан в терминала.

Стъпка 5: Създайте нов Django проект

Използвайте вградения инструмент на Django django-admin за командния ред, за да създадете нов проект:

django-admin startproject myproject .

> Забележка: Точката в края (.) казва на Django да създаде файловете на проекта в текущата директория, вместо да създаде вложена поддиректория. Това е по-чиста структура за повечето разгръщания.

Вашата директория на проекта сега ще съдържа следната структура:

myproject/
├── manage.py
└── myproject/
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
  • manage.py — Инструмент за командния ред за взаимодействие с вашия Django проект.
  • settings.py — Централният конфигурационен файл на вашия проект.
  • urls.py — Конфигурацията на маршрутизирането на URL адреси.
  • wsgi.py / asgi.py — Точки на входа за WSGI и ASGI съвместими уеб сървъри.

Стъпка 6: Конфигуриране на настройките на базата данни

Отворете файла settings.py за конфигуриране на вашата връзка с базата данни:

nano myproject/settings.py

По подразбиране: SQLite (само за разработка)

По подразбиране Django е конфигуриран да използва SQLite, което е подходящо за разработка и тестване, но не се препоръчва за production:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

Опция за Production: PostgreSQL

PostgreSQL е най-често препоръчваната база данни за Django в production. Първо инсталирайте необходимите пакети:

sudo apt install postgresql postgresql-contrib libpq-dev -y
pip install psycopg2-binary

След това актуализирайте настройката DATABASES в settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

Опция за Production: MySQL / MariaDB

Ако предпочитате MySQL или MariaDB, инсталирайте необходимия адаптер:

sudo apt install default-libmysqlclient-dev -y
pip install mysqlclient

След това конфигурирайте настройката DATABASES:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

Конфигуриране на ALLOWED_HOSTS

Докато сте в settings.py, също актуализирайте настройката ALLOWED_HOSTS да включва IP адреса или доменното име на вашия сървър. Това е необходимо за Django да обслужва заявки в режим без отладка:

ALLOWED_HOSTS = ['your_server_ip', 'yourdomain.com', 'www.yourdomain.com']

Стъпка 7: Прилагане на миграции на база данни

Django използва система за миграции, за да управлява промените в схемата на базата данни. Изпълнете началните миграции, за да създадете всички необходими таблици на базата данни:

python manage.py migrate

Ще видите изход, който изброява всяка прилагана миграция. Успешна миграция изглежда така:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  ...

Създаване на суперпотребител (Опционално, но препоръчително)

Създайте администраторски акаунт, за да получите достъп до вградения администраторски интерфейс на Django:

python manage.py createsuperuser

Ще бъдете подканени да въведете потребителско име, имейл адрес и пароля.

Стъпка 8: Стартиране на Django Development Server

Сега можете да стартирате вградения development server на Django, за да проверите инсталацията:

python manage.py runserver 0.0.0.0:8000

Тази команда свързва development server към всички налични мрежови интерфейси на порт 8000. Отворете вашия уеб браузър и отидете на:

http://your_server_ip:8000

Трябва да видите приветствената страница на Django — ракета с съобщението „The install worked successfully! Congratulations!”

За достъп до админ панела, отидете на:

http://your_server_ip:8000/admin

> Важно: Вградения development server на Django не е подходящ за production. Той е еднопоточен, не е оптимизиран за производителност и липсват му мерки за сигурност. Винаги използвайте production-grade уеб сървър за live развертывания.

Стъпка 9: Подготовка на Django за Production (Препоръчано)

За production deployments, трябва да конфигурирате правилен web server stack. Най-често използваната и препоръчана конфигурация е Nginx + Gunicorn.

Инсталиране на Gunicorn

С активирана виртуална среда:

pip install gunicorn

Тестирайте дали Gunicorn може да обслужва вашето приложение:

gunicorn --bind 0.0.0.0:8000 myproject.wsgi

Инсталиране и конфигуриране на Nginx

sudo apt install nginx -y

Създайте конфигурационен файл за Nginx server block:

sudo nano /etc/nginx/sites-available/myproject

Добавете следната конфигурация:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
        root /home/username/myproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

Активирайте конфигурацията и рестартирайте Nginx:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Събиране на статични файлове

Актуализирайте settings.py с директорията на статичните файлове:

STATIC_ROOT = BASE_DIR / 'staticfiles'

След това събрете всички статични файлове:

python manage.py collectstatic

Защитете вашето приложение със SSL

За всяко production Django приложение, HTTPS е задължително. SSL сертификат криптира данните при предаване между вашия сервър и вашите потребители, защитава чувствителната информация и е необходим за съвременните индикатори за доверие на браузъра. AlexHost предлага SSL сертификати, които се интегрират безпроблемно с вашата хостинг среда.

Допълнителни съображения за производство

Променливи на среда за чувствителни настройки

Никога не кодирайте твърдо чувствителни стойности като SECRET_KEY, пароли на база данни или API ключове в settings.py. Вместо това използвайте променливи на среда:

pip install python-decouple

В settings.py:

from decouple import config

SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)

Задайте DEBUG на False в производство

DEBUG = False

Работата с DEBUG = True в производство разкрива подробни страницы с грешки и чувствителна информация за конфигурацията на потенциални нападатели.

Конфигурирайте доменно име

Ако вече не сте регистрирали домен за вашия Django проект, Регистрация на домен чрез AlexHost улеснява насочването на вашия домен към вашия сървър бързо, с пълно управление на DNS включено.

Избор на правилния хостинг за вашето Django приложение

Средата за хостинг, която избирате, има значителен ефект върху производителността, надеждността и мащабируемостта на вашето Django приложение. Ето бързо ръководство:

Случай на употребаПрепоръчан хостинг
Разработка и тестванеСподелен уеб хостинг
Малки до средни production приложенияVPS хостинг
Приложения с висок трафик или интензивна употреба на ресурсиDedicated сървъри
Machine learning / AI-интегрирани Django приложенияGPU хостинг

За повечето Django проекти, които преминават в production, план за VPS хостинг предлага идеалния баланс между производителност, контрол и рентабилност. Получавате root достъп, възможност да инсталирате всеки софтуерен стек и посвещени ресурси, които споделеният хостинг не може да предостави.

Отстраняване на често срещани проблеми при инсталация на Django

pip: command not found

Инсталирайте pip ръчно: sudo apt install python3-pip -y

django-admin: command not found

Вашата виртуална среда може да не е активирана. Изпълнете source venv/bin/activate и опитайте отново.

Портът 8000 не е достъпен

Проверете правилата на защитната стена на вашия сървър. На Ubuntu с UFW:

sudo ufw allow 8000
sudo ufw reload

Отказ на свързване с база данни

Проверете дали услугата на вашата база данни работи:

sudo systemctl status postgresql
# or
sudo systemctl status mysql

ALLOWED_HOSTS Грешка

Уверете се, че IP адресът или доменното име на вашия сървър е включено в настройката ALLOWED_HOSTS в settings.py.

Заключение

Вече успешно инсталирахте Django на вашия хостинг сервър, конфигурирахте виртуална среда, настроихте вашата база данни и научихте как да подготвите вашето приложение за производство. Богатият набор от функции на Django, силните настройки за сигурност и масивната екосистема го правят отличен избор за проекти за разработка на уеб приложения от всякакъв мащаб.

За производствени внедрения винаги използвайте правилен стек на уеб сървър (Nginx + Gunicorn или Apache + uWSGI), задайте DEBUG = False, защитете вашето приложение с SSL Certificate, и изберете хостинг среда, която отговаря на изискванията за ресурси на вашето приложение. Независимо дали стартирате нов проект или мащабирате съществуващ, VPS Hosting и Dedicated Server планите на AlexHost предоставят производителност, надеждност и гъвкавост, които заслужава вашето Django приложение.