Как установить Django Framework на Debian 11
Это руководство существует для этих версий ОС
- Debian 11 (Bullseye)
- Debian 10 (Buster)
На этой странице
- Предпосылки
- Начало работы
- Установите сервер базы данных PostgreSQL.
- Создание виртуальной среды Python
- Установка и настройка Django
- Запустите сервер разработки Django
- Проверьте Django с помощью Gunicorn
- Создание служебного файла Systemd для Gunicorn
- Настройка Nginx в качестве обратного прокси-сервера для Django
- Заключение
Django — это бесплатная среда веб-разработки с открытым исходным кодом, написанная на Python. Он используется для разработки сложных и управляемых базами данных приложений Python. Он поставляется с набором скриптов Python для создания проектов Python. Его можно запустить в любой операционной системе, поддерживающей Python, включая Windows, macOS, Linux/Unix и Solaris. Это помогает разработчикам писать меньше кода и создавать новый веб-сайт за короткое время.
В этом руководстве я объясню, как настроить Django в виртуальной среде Python с использованием базы данных PostgreSQL в Debian 11. Затем мы установим и настроим Nginx в качестве обратного прокси-сервера для Django.
Предпосылки
- Сервер под управлением Debian 11.
- Действительное доменное имя, указанное с IP-адресом вашего сервера.
- На сервере настроен пароль root.
Начиная
Перед запуском рекомендуется обновить системные пакеты до последней версии. Вы можете сделать это с помощью следующей команды:
apt-get update -y
После обновления всех пакетов установите другие инструменты Python и пакет Nginx с помощью следующей команды:
apt-get install python3-pip python3-dev libpq-dev curl nginx -y
После установки всех необходимых пакетов можно переходить к следующему шагу.
Установите сервер базы данных PostgreSQL
Здесь мы будем использовать PostgreSQL в качестве базы данных. Итак, давайте установим его с помощью следующей команды:
apt-get install postgresql postgresql-contrib -y
После установки PostgreSQL подключитесь к оболочке PostgreSQL с помощью следующей команды:
su - postgres
psql
Затем создайте базу данных и пользователя для Django с помощью следующей команды:
CREATE DATABASE django;
CREATE USER django WITH PASSWORD 'password';
Затем предоставьте некоторые необходимые роли с помощью следующей команды:
ALTER ROLE django SET client_encoding TO 'utf8';
ALTER ROLE django SET default_transaction_isolation TO 'read committed';
ALTER ROLE django SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE django TO django;
Затем выйдите из оболочки PostgreSQL, используя следующую команду:
\q
exit
На данный момент база данных PostgreSQL готова для Django. Теперь вы можете перейти к следующему шагу.
Создайте виртуальную среду Python
Далее вам нужно будет создать виртуальную среду Python для создания проекта Django.
Сначала обновите пакет PIP до последней версии, используя следующую команду:
pip3 install --upgrade pip
Затем проверьте версию PIP с помощью следующей команды:
pip --version
Пример вывода:
pip 21.2.4 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9)
Затем установите пакет виртуальной среды с помощью следующей команды:
pip3 install virtualenv
Затем создайте каталог для проекта Django и создайте виртуальную среду Django:
mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenv
Затем активируйте виртуальную среду Django с помощью команды ниже:
source djangoenv/bin/activate
Затем установите Django, Gunicorn и другие пакеты, используя следующую команду:
pip install django gunicorn psycopg2-binary
На данный момент Django установлен в виртуальной среде Python. Теперь вы можете перейти к следующему шагу.
Установить и настроить Джанго
Django предоставляет скрипт django-admin.py для создания проекта. Вы можете запустить следующую команду, чтобы создать проект Django:
django-admin.py startproject djangoapp ~/djangoapp
Далее вам нужно будет отредактировать settings.py и определить параметры вашей базы данных:
nano ~/djangoapp/djangoapp/settings.py
Измените следующую строку с вашим доменным именем:
ALLOWED_HOSTS = ['django.example.com', 'localhost']
Раскомментируйте серверную часть базы данных по умолчанию и добавьте параметры базы данных PostgreSQL:
#DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': BASE_DIR / 'db.sqlite3', # } #} DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'django', 'USER': 'django', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '', } }
Добавьте в конец файла следующие строки:
STATIC_URL = '/static/' import os STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Сохраните и закройте файл, затем перенесите исходную схему базы данных в базу данных PostgreSQL:
./manage.py makemigrations
./manage.py migrate
Пример выводаL:
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 с помощью следующей команды:
./manage.py createsuperuser
Установите имя пользователя и пароль администратора, как показано ниже:
Username (leave blank to use 'root'): dadmin Email address: Password: Password (again): Superuser created successfully.
Затем соберите весь статический контент в каталог:
./manage.py collectstatic
Запустите сервер разработки Django
На этом этапе Django установлен и настроен. Теперь вы можете запустить сервер разработки Django с помощью следующей команды:
./manage.py runserver 0.0.0.0:8000
Если все в порядке, вы должны получить следующий вывод:
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). August 27, 2021 - 10:02:05 Django version 3.2.6, using settings 'djangoapp.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C.
Теперь откройте веб-браузер и войдите в свой проект Django, используя URL-адрес http://django.example.com:8000/admin/. Вы будете перенаправлены на страницу входа в Django:
Укажите имя пользователя и пароль администратора и нажмите «Войти». Вы должны увидеть панель инструментов Django на следующей странице:
Теперь вернитесь к своему терминалу и нажмите CTRL + C, чтобы остановить сервер разработки Django.
Проверьте Django с помощью Gunicorn
Далее вам также нужно будет проверить, может ли Gunicorn служить Django или нет. Вы можете запустить Django с помощью сервера Gunicorn с помощью следующей команды:
gunicorn --bind 0.0.0.0:8000 djangoapp.wsgi
Если все в порядке, вы должны получить следующий вывод:
[2021-08-27 10:04:22 +0000] [47383] [INFO] Starting gunicorn 20.1.0 [2021-08-27 10:04:22 +0000] [47383] [INFO] Listening at: http://0.0.0.0:8000 (47383) [2021-08-27 10:04:22 +0000] [47383] [INFO] Using worker: sync [2021-08-27 10:04:22 +0000] [47384] [INFO] Booting worker with pid: 47384
Нажмите CTRL + C, чтобы остановить сервер Gunicorn.
Затем деактивируйте из виртуальной среды Python с помощью следующей команды:
deactivate
Создайте служебный файл Systemd для Gunicorn
Далее вам нужно будет создать служебный файл systemd, чтобы Gunicorn запускал и останавливал сервер приложений Django.
Вы можете создать Gunicorn с помощью следующей команды:
nano /etc/systemd/system/gunicorn.socket
Добавьте следующие строки:
[Unit] Description=gunicorn socket [Socket] ListenStream=/run/gunicorn.sock [Install] WantedBy=sockets.target
Сохраните и закройте файл, затем создайте служебный файл для Gunicorn:
nano /etc/systemd/system/gunicorn.service
Добавьте следующие строки, соответствующие пути вашего проекта Django:
[Unit] Description=gunicorn daemon Requires=gunicorn.socket After=network.target [Service] User=root Group=www-data WorkingDirectory=/root/djangoapp ExecStart=/root/djangoapp/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock djangoapp.wsgi:application [Install] WantedBy=multi-user.target
Сохраните и закройте файл, затем установите соответствующие права доступа к каталогу проекта Django:
chown -R www-data:root ~/djangoapp
Затем перезагрузите демон systemd с помощью следующей команды:
systemctl daemon-reload
Затем запустите службу Gunicorn и включите ее запуск при перезагрузке системы:
systemctl start gunicorn.socket
systemctl enable gunicorn.socket
Затем проверьте состояние Gunicorn, используя команду ниже:
systemctl status gunicorn.socket
Вы должны получить следующий результат:
? gunicorn.socket - gunicorn socket Loaded: loaded (/etc/systemd/system/gunicorn.socket; disabled; vendor preset: enabled) Active: active (listening) since Fri 2021-08-27 10:05:46 UTC; 6s ago Triggers: ? gunicorn.service Listen: /run/gunicorn.sock (Stream) CGroup: /system.slice/gunicorn.socket Aug 27 10:05:46 debian11 systemd[1]: Listening on gunicorn socket.
Настройте Nginx в качестве обратного прокси для Django
Далее вам нужно будет настроить Nginx в качестве обратного прокси-сервера для обслуживания Django.
Для этого создайте файл конфигурации Nginx:
nano /etc/nginx/conf.d/django.conf
Добавьте следующие строки:
server { listen 80; server_name django.example.com; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /root/djangoapp; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } }
Сохраните и закройте файл, затем проверьте Nginx на наличие ошибок конфигурации:
nginx -t
Output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Наконец, перезапустите службу Nginx, чтобы применить изменения:
systemctl restart nginx
Чтобы проверить статус Nginx, запустите:
systemctl status nginx
Пример вывода:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-08-27 10:06:59 UTC; 6s ago Docs: man:nginx(8) Process: 47494 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 47495 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 47496 (nginx) Tasks: 2 (limit: 2341) Memory: 2.5M CPU: 49ms CGroup: /system.slice/nginx.service ??47496 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??47497 nginx: worker process Aug 27 10:06:59 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Aug 27 10:06:59 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument Aug 27 10:06:59 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
Теперь вы можете получить доступ к приложению Django, используя URL-адрес http://django.example.com/admin. Вы также можете получить доступ к приложению Django, используя URL-адрес http://django.example.com/.
Заключение
Поздравляем! вы успешно установили приложение Django с Gunicorn и Nginx в качестве обратного прокси-сервера. Теперь вы можете приступить к развертыванию своего приложения Python с помощью платформы Django.