Содержание страницы
- Шаг 1: Установка необходимых компонентов
- Шаг 2: Настройка базы данных (по желанию)
- Шаг 3: Клонирование приложения из репозитория Git
- Шаг 4: Создание виртуальной среды и установка зависимостей
- Шаг 5: Настройка приложения
- Шаг 6: Создание миграций и миграция базы данных
- Шаг 7: Сборка статических файлов
- Шаг 8: Настройка веб-сервера
- Шаг 9: Запуск приложения
- Шаг 10: Проверка
Если вы разрабатываете веб-приложение на 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.