Django установка · 12 min read · Oct 14, 2025
Как установить фреймворк Django на Python на Ubuntu 22.04

Django — это фреймворк на Python, используемый для разработки динамических веб-сайтов и приложений. Он следует архитектуре MVC (Model-View-Controller). Использование Django ускоряет процесс разработки, так как большинство подлежащих задач обрабатываются им.
Этот учебник научит вас, как установить фреймворк Django на сервер Ubuntu 22.04. Вы также создадите демонстрационный проект и протестируете его.
Предварительные требования
- Сервер с установленной Ubuntu 22.04.
- Пользователь с правами sudo, не являющийся root.
- Убедитесь, что все обновлено.
$ sudo apt update $ sudo apt upgrade
Установка Django
Существует несколько способов установки Django. Какой из них лучше всего подходит для вас, зависит от того, как вы хотите настроить свою среду разработки и ваших потребностей. Каждый метод имеет свои плюсы и минусы. Давайте рассмотрим все эти методы.
Установка из репозиториев Ubuntu
Самый простой способ установить Django — использовать репозитории Ubuntu. Ubuntu 22.04 поставляется с Python 3.10. Вы можете проверить это с помощью следующей команды.
$ python3 -V
Python 3.10.4Установите Django с помощью следующей команды.
$ sudo apt install python3-djangoЗапустите следующую команду, чтобы проверить успешную установку.
$ django-admin --version
3.2.12Версия Django, поставляемая с Ubuntu, является текущей LTS-версией, которая поддерживается до 2024 года. Однако это не текущая версия. Если вы хотите установить недавний релиз, этот метод не для вас.
Установка с помощью pip
Это самый распространенный способ установки Django. Рекомендуемый способ — создать виртуальную среду Python. Это позволяет устанавливать пакеты Python, не затрагивая систему.
Установите pip и модуль venv. venv используется для создания виртуальных сред Python, а pip — для установки пакетов Python.
$ sudo apt install python3-pip python3-venvДавайте создадим каталог для демонстрационного проекта.
$ mkdir ~/sampleproject
$ cd ~/sampleprojectСоздайте виртуальную среду с помощью следующей команды. Замените sample_env на имя, которое вы хотите дать своей виртуальной среде.
$ python3 -m venv sample_envЭто установит портативную версию Python, pip в вашем каталоге проекта. Чтобы установить любые пакеты в проект, вы должны активировать среду с помощью следующей команды.
$ source sample_env/bin/activateВаш приглашение командной строки изменится, чтобы отразить виртуальную среду.
(sample_env) navjot@django:~/sampleproject$Теперь, когда виртуальная среда активирована, используйте pip для установки Django. Запустите следующую команду для установки Django.
(sample_env) $ pip install djangoПроверьте установку.
(sample_env) $ django-admin --version
4.0.5В зависимости от требований вашего проекта вы можете установить другую версию Django следующим образом.
(sample_env) $ pip install django==3.2.1Проверьте установку.
(sample_env) $ django-admin --version
3.2.1Как вы можете видеть, этот метод устанавливает более новую версию Django, чем версия, полученная из репозитория Ubuntu.
Чтобы выйти из виртуальной среды, выполните следующую команду.
(sample_env) $ deactivateУстановка версии разработки
Вы также можете использовать pip для установки версии разработки Django. Для этого мы получим версию разработки из репозитория Django на Github.
Клонируйте репозиторий в каталог ~/django-dev с помощью следующей команды.
$ git clone https://github.com/django/django ~/django-devПерейдите в вновь созданный каталог.
$ cd ~/django-devСоздайте виртуальную среду.
$ python3 -m venv dev_django_envАктивируйте среду.
$ source dev_django_env/bin/activateУстановите Django с помощью pip. Флаг -e устанавливает его в редактируемом режиме, что необходимо, если вы устанавливаете из системы управления версиями.
(dev_django_dev) $ pip install -e ~/django-devПроверьте установку.
(dev_django_dev) $ django-admin --version
4.2.dev20220628195651Как вы можете видеть, версия здесь является последней версией разработки. Версия разработки Django не полезна для производственных сред.
Создание образца проекта
Давайте создадим образец проекта Django. Создайте каталог для образца проекта.
$ mkdir ~/dj-sample
$ cd ~/dj-sampleСоздайте виртуальную среду Python.
$ python3 -m venv sample_projАктивируйте среду.
$ source sample_proj/bin/activateУстановите Django.
(sample_proj) $ pip install djangoЧтобы создать проект, нам нужно использовать команду startproject. Эта команда создает другой каталог, который включает:
- Скрипт управления,
manage.py, используемый для администрирования задач, специфичных для Django. - Каталог с тем же именем, что и проект, который включает код проекта.
Мы создадим каталог проекта в нашем текущем рабочем каталоге. Для этого используйте символ точки (.) в конце следующей команды.
(sample_proj) $ django-admin startproject demoproject .Далее нам нужно выполнить миграцию базы данных с помощью команды migrate. Миграции в Django переносят изменения, которые вы вносите в свои модели, в схему базы данных. По умолчанию Python использует базу данных SQLite.
(sample_proj) $ 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
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OKДалее создайте административного пользователя для доступа к административному интерфейсу Django.
(sample_proj) $ python manage.py createsuperuserВас попросят ввести имя пользователя, адрес электронной почты и пароль.
Username (leave blank to use 'navjot'):
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.Тестирование сервера разработки
Пришло время протестировать приложение. Для этого вам нужно изменить директиву ALLOWED_HOSTS в настройках Django. Эта директива определяет список IP-адресов и доменных имен, которым предоставлен доступ к приложению Django.
Откройте файл настроек с помощью следующей команды.
(sample_proj) $ nano demoproject/settings.pyНайдите следующую запись.
ALLOWED_HOSTS = []Введите IP-адрес вашего сервера в квадратные скобки. Каждая запись должна быть заключена в кавычки, а несколько записей нужно разделять запятыми. Ввод www.example.com будет совпадать точно. Однако .example.com будет совпадать с example.com и www.example.com, а также с любым другим поддоменом example.com. Поэтому рекомендуется использовать точку перед именем домена, чтобы совпадать с ним и его поддоменами.
ALLOWED_HOSTS = [''] Мы использовали IP-адрес для совпадения с нашим сервером. Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Перед тем как протестировать сервер разработки, вам нужно настроить брандмауэр, чтобы разрешить работу Django. Django по умолчанию использует порт 8000. Откройте порт с помощью Uncomplicated Firewall (UFW).
(sample_proj) $ sudo ufw allow 8000Запустите сервер разработки.
(sample_proj) $ python manage.py runserver 0.0.0.0:8000Запустите URL http:// в вашем браузере, и вы получите следующий экран.

Вы можете получить доступ к административному интерфейсу, перейдя по URL http://, и вы увидите следующий экран входа.

Введите учетные данные, созданные ранее, чтобы войти в административную панель, показанную ниже.

После завершения демонстрационного проекта вы можете закрыть сервер, нажав Ctrl + C в вашем терминале.
Установка и тестирование Gunicorn
Запуск постоянного сервера Django с помощью nohup
До сих пор служба Django не является постоянной. Чтобы сделать службу постоянной, есть два метода. Первый метод включает использование утилиты nohup. nohup — это команда POSIX, что означает no hang up. Она используется для выполнения команд таким образом, чтобы они не останавливались даже при выходе пользователя.
Убедитесь, что вы вышли из сервера в терминале, нажав Ctrl + C.
Запустите следующую команду, чтобы запустить сервер разработки Django.
(sample_proj) $ nohup python manage.py runserver 0.0.0.0:8000 &Теперь ваш сервер Django будет продолжать работать, пока вы не убьете его вручную. Команда даст вам идентификатор процесса и выведет другую команду.
[1] 42595
(sample_proj) $ nohup: ignoring input and appending output to 'nohup.out'
^CНажмите Ctrl + C, чтобы выйти. Оригинальный сервер Django продолжит работать. Вы можете проверить, открыв URL в вашем браузере.
Когда вы закончите, вам нужно убить процесс. Команда nohup дает вам один идентификатор процесса. Но на самом деле выполняются два процесса. Чтобы найти идентификаторы обоих процессов, выполните следующую команду.
(sample_proj) $ ps aux | grep manage.py
navjot 42650 3.6 1.8 47792 38168 pts/0 S 02:28 0:00 python manage.py runserver 0.0.0.0.:8000
navjot 42651 7.9 2.0 344904 41708 pts/0 Sl 02:28 0:00 /home/navjot/dj-sample/sample_proj/bin/python manage.py runserver 0.0.0.0:8000
navjot 42657 0.0 0.1 6612 2172 pts/0 S+ 02:28 0:00 grep --color=auto manage.pyКак вы можете видеть, выполняются два процесса, один с идентификатором 42650 и другой с идентификатором 42651.
Запустите следующую команду, чтобы остановить сервер, используя идентификаторы процессов, которые вы получили выше.
(sample_proj) $ sudo kill -9 42650 42651Установка Gunicorn
Второй метод для запуска постоянного сервера Django требует установки веб-серверов Gunicorn и Nginx. Gunicorn — это HTTP-сервер WSGI на Python. Он будет взаимодействовать с приложением Django, а затем Nginx будет действовать как обратный прокси для Gunicorn. Этот метод имеет дополнительное преимущество в виде обеспечения безопасности и производительности, которые предоставляет использование Nginx.
Установите Gunicorn.
(sample_proj) $ pip install gunicornПеред тем как продолжить, нам нужно протестировать способность Gunicorn обслуживать проект. Запустите следующую команду, чтобы запустить Gunicorn.
(sample_proj) $ gunicorn --bind 0.0.0.0:8000 demoproject.wsgiЭто запустит Gunicorn на том же интерфейсе, на котором работал Django. Чтобы проверить, откройте URL http:// в вашем браузере, и вы получите ту же главную страницу Django. Это означает, что Gunicorn работает идеально.
Когда вы закончите тестирование, нажмите Ctrl + C в терминале, чтобы выйти из Gunicorn.
Деактивируйте виртуальную среду, чтобы вернуться к вашей обычной оболочке.
(sample_proj) $ deactivateСоздание сокета и файла службы для Gunicorn
Первый шаг — создать файл сокета Gunicorn. Сокет Gunicorn будет создан при загрузке и слушать подключения. Когда происходит подключение, systems автоматически запустит процесс Gunicorn для его обработки.
Создайте и откройте файл сокета Gunicorn для редактирования.
$ sudo nano /etc/systemd/system/gunicorn.socketВставьте следующий код в него.
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.targetСохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Далее создайте и откройте файл службы Gunicorn для редактирования.
$ sudo nano /etc/systemd/system/gunicorn.serviceВставьте следующий код в него.
[Unit]
Description=django gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=navjot
Group=nginx
WorkingDirectory=/home/navjot/dj-sample
ExecStart=/home/navjot/dj-sample/sample_proj/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
demoproject.wsgi:application
[Install]
WantedBy=multi-user.targetСохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Замените navjot на ваше имя пользователя в системе. Группа nginx позволит серверу Nginx взаимодействовать с Django.
Перезагрузите системный демон, чтобы обновить файлы systemd.
$ sudo systemctl daemon-reloadВключите и запустите файл сокета Gunicorn.
$ sudo systemctl start gunicorn.socket
$ sudo systemctl enable gunicorn.socketПроверьте статус сокета Gunicorn.
$ sudo systemctl status gunicorn.socketВы получите аналогичный вывод.
? gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; disabled; vendor preset: enabled)
Active: active (listening) since Thu 2022-06-30 01:43:24 UTC; 20s ago
Triggers: ? gunicorn.service
Listen: /run/gunicorn.sock (Stream)
CGroup: /system.slice/gunicorn.socket
Jun 30 01:43:24 django systemd[1]: Listening on gunicorn socket.Служба Gunicorn все еще не работает, как вы можете проверить.
$ sudo systemctl status gunicorn.service
? gunicorn.service - django gunicorn daemon
Loaded: loaded (/etc/systemd/system/gunicorn.service; disabled; vendor preset: enabled)
Active: inactive (dead)
TriggeredBy: ? gunicorn.socketЧтобы протестировать механизм активации сокета, выполните следующую команду.
$ curl --unix-socket /run/gunicorn.sock localhostВы получите HTML-вывод главной страницы Django в вашем терминале. Это также запускает Gunicorn для обслуживания приложения. Проверьте статус службы снова, и вы увидите, что она теперь работает.
$ sudo systemctl status gunicorn.service
? gunicorn.service - django gunicorn daemon
Loaded: loaded (/etc/systemd/system/gunicorn.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2022-06-30 01:45:09 UTC; 12s ago
TriggeredBy: ? gunicorn.socket
Main PID: 42365 (gunicorn)
Tasks: 4 (limit: 2241)
Memory: 91.7M
CPU: 1.128s
CGroup: /system.slice/gunicorn.service
??42365 /home/navjot/dj-sample/sample_proj/bin/python3 /home/navjot/dj-sample/sample_proj/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock demoproject.wsgi:application
??42366 /home/navjot/dj-sample/sample_proj/bin/python3 /home/navjot/dj-sample/sample_proj/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock demoproject.wsgi:application
??42367 /home/navjot/dj-sample/sample_proj/bin/python3 /home/navjot/dj-sample/sample_proj/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock demoproject.wsgi:application
??42368 /home/navjot/dj-sample/sample_proj/bin/python3 /home/navjot/dj-sample/sample_proj/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock demoproject.wsgi:application
Jun 30 01:45:09 django systemd[1]: Started django gunicorn daemon.
Jun 30 01:45:09 django gunicorn[42365]: [2022-06-30 01:45:09 +0000] [42365] [INFO] Starting gunicorn 20.1.0
Jun 30 01:45:09 django gunicorn[42365]: [2022-06-30 01:45:09 +0000] [42365] [INFO] Listening at: unix:/run/gunicorn.sock (42365)
Jun 30 01:45:09 django gunicorn[42365]: [2022-06-30 01:45:09 +0000] [42365] [INFO] Using worker: sync
Jun 30 01:45:09 django gunicorn[42366]: [2022-06-30 01:45:09 +0000] [42366] [INFO] Booting worker with pid: 42366
.......Установка Nginx
Последний шаг — установить и настроить Nginx. Ubuntu 22.04 поставляется со старой версией Nginx. Вам нужно загрузить официальный репозиторий Nginx, чтобы установить последнюю версию.
Импортируйте ключ подписи Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/nullДобавьте репозиторий для стабильной версии Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.listОбновите системные репозитории.
$ sudo apt updateУстановите Nginx.
$ sudo apt install nginxПроверьте установку.
$ nginx -v
nginx version: nginx/1.22.0Настройка Nginx
Создайте и откройте файл /etc/nginx/conf.d/django-gunicorn.conf для редактирования.
$ sudo nano /etc/nginx/conf.d/django-gunicorn.confВставьте следующий код в него.
server {
listen 80;
server_name server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/navjot/dj-sample;
}
location / {
proxy_set_header Host $http_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;
proxy_pass http://unix:/run/gunicorn.sock;
}
}Замените корневое местоположение в приведенном выше файле на каталог на вашем сервере.
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Откройте файл /etc/nginx/nginx.conf для редактирования.
$ sudo nano /etc/nginx/nginx.confДобавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Проверьте вашу конфигурацию Nginx.
$ sudo nginx -tЕсли вы не видите ошибок, значит, вы готовы к работе.
Вам также нужно будет добавить имя домена в директиву ALLOWED_HOSTS. Откройте файл settings.py.
$ nano ~/dj-sample/demoproject/settings.pyИзмените значение переменной ALLOWED_HOSTS.
ALLOWED_HOSTS = ['','django.example.com'] Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Перезапустите сокет и службу Gunicorn.
$ sudo systemctl restart gunicorn.socket
$ sudo systemctl restart gunicorn.serviceЗапустите сервер Nginx.
$ sudo systemctl start nginxОткройте HTTP-порт. Вы также можете удалить порт 8000, если больше не собираетесь его использовать.
$ sudo ufw delete allow 8000
$ sudo ufw allow httpПроверьте, открыв URL http://django.example.com, и главная страница Django загрузится.
Установка SSL
До сих пор ваше приложение Django обслуживается через незашифрованное HTTP-соединение. Настоятельно рекомендуется защитить его с помощью SSL-сертификата. Для этого используйте инструмент Certbot с помощью инструмента Snapd. Он уже установлен в системе Ubuntu 22.04.
Установите основной репозиторий Snapd.
$ sudo snap install coreУстановите Certbot.
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbotСгенерируйте сертификат. Следующая команда также автоматически настроит Nginx.
$ sudo certbot --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d django.example.comСначала откройте порт HTTPS.
$ sudo ufw allow httpsПосетите URL https://django.example.com в вашем браузере, чтобы подтвердить.
Заключение
На этом наш учебник завершен, в котором вы узнали, как установить Django, Gunicorn и Nginx на сервер Ubuntu 22.04. Вы также установили SSL-сертификат для повышения безопасности вашего проекта Django. Если у вас есть вопросы, оставляйте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.