DevOpsDjango

Deploy django приложение на ubuntu 18

Если вы разрабатываете веб-приложение на Django, то рано или поздно вы захотите задеплоить его на удаленный сервер. В этой статье мы рассмотрим, как задеплоить приложение Django на сервере Ubuntu 18.04.

Шаг 1: Установка необходимых компонентов

Первым шагом необходимо установить все необходимые компоненты на сервере. Воспользуемся менеджером пакетов apt для установки Python, pip, PostgreSQL (если вы планируете использовать его в качестве базы данных) и Git (для управления версиями приложения).

sudo apt update
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib git

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

sudo apt install python3-venv

Шаг 2: Настройка базы данных (по желанию)

Если вы планируете использовать PostgreSQL в качестве базы данных для вашего приложения, вам нужно создать базу данных, пользователя и пароль для подключения к ней. Вот пример команд для создания базы данных и пользователя:

sudo -u postgres psql
CREATE DATABASE mydatabase;
CREATE USER myuser WITH PASSWORD 'mypassword';
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;

Шаг 3: Клонирование приложения из репозитория Git

Перейдите в директорию, в которую вы хотите склонировать ваше приложение, и выполните команду git clone для клонирования приложения из вашего репозитория Git.

cd /var/www
sudo mkdir myproject
sudo chown user:user myproject
cd myproject
git clone https://github.com/yourusername/yourproject.git

Шаг 4: Создание виртуальной среды и установка зависимостей

Создайте виртуальную среду Python для вашего приложения и активируйте ее.

python3 -m venv myprojectenv
source myprojectenv/bin/activate

Перейдите в директорию, в которой находится файл requirements.txt вашего приложения, и установите зависимости.

cd yourproject
pip install -r requirements.txt

Шаг 5: Настройка приложения

Создайте файл settings_local.py и настройте его в соответствии с вашими настройками сервера. Не забудьте добавить этот файл в .gitignore, чтобы он не попал в ваш репозиторий.

# myproject/settings_local.py

DEBUG = False

ALLOWED_HOSTS = ['yourdomain.com']

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

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Здесь мы задаем следующие параметры:

  • DEBUG — значение False указывает Django не выводить сообщения об ошибках на экран в продакшн-окружении.
  • ALLOWED_HOSTS — список доменных имен, на которых может работать ваше приложение.
  • DATABASES — параметры подключения к базе данных PostgreSQL.
  • STATIC_ROOT — директория, в которой будут храниться статические файлы вашего приложения.

Шаг 6: Создание миграций и миграция базы данных

Создайте миграции Django для вашего приложения и выполните миграции базы данных.

python manage.py makemigrations
python manage.py migrate

Шаг 7: Сборка статических файлов

Соберите статические файлы вашего приложения.

python manage.py collectstatic

Шаг 8: Настройка веб-сервера

Установите и настройте веб-сервер Nginx для обслуживания вашего приложения.

sudo apt install nginx

Создайте файл конфигурации для вашего приложения в директории /etc/nginx/sites-available/.

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

Добавьте следующий код в файл конфигурации.

# /etc/nginx/sites-available/myproject

server {
    listen 80;
    server_name yourdomain.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /var/www/myproject/yourproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/var/www/myproject/myproject.sock;
    }
}

Создайте символическую ссылку на этот файл в директории /etc/nginx/sites-enabled/.

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/

Удалите конфигурацию по умолчанию из директории /etc/nginx/sites-enabled/.

sudo rm /etc/nginx/sites-enabled/default

Перезапустите Nginx.

sudo systemctl restart nginx

Шаг 9: Запуск приложения

Создайте файл myproject.service в директории /etc/systemd/system/.

sudo nano /etc/systemd/system/myproject.service

Добавьте следующий код в файл myproject.service.

# /etc/systemd/system/myproject.service

[Unit]
Description=Django project daemon
After=network.target

[Service]
User=youruser
Group=www-data
WorkingDirectory=/var/www/myproject
ExecStart=/var/www/myproject/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/var/www/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

Здесь мы задаем следующие параметры:

  • User — пользователь, от имени которого будет работать ваше приложение.
  • Group — группа, от имени которой будет работать ваше приложение.
  • WorkingDirectory — директория, в которой находятся файлы вашего приложения.
  • ExecStart — команда для запуска Gunicorn в режиме демона.

Активируйте службу myproject.

sudo systemctl enable myproject
sudo systemctl start myproject

Шаг 10: Проверка

Откройте ваш браузер и введите адрес вашего домена в адресную строку. Ваше приложение Django должно работать!

Если что-то пошло не так, проверьте логи Nginx и Gunicorn.

sudo tail -f /var/log/nginx/error.log
sudo journalctl -u myproject.service -f

В этой статье мы рассмотрели, как задеплоить приложение Django на Ubuntu 18. Мы настроили виртуальное окружение, настроили базу данных PostgreSQL, создали файл конфигурации Nginx, настроили службу systemd и запустили приложение. Если вы следуете этим инструкциям, вы сможете успешно задеплоить свое приложение Django на сервере Ubuntu 18.

2.5/5 - (2 голоса)

Добавить комментарий

Back to top button