Как установить Django с MariaDB и настроить сервер Nginx с Gunicorn или OpenLiteSpeed на VPS с операционной системой Ubuntu 20.04?

Я провел целый день, работая с GPT, но сталкиваюсь с постоянными непредвиденными ошибками. Каждый раз, когда я решаю одну проблему, возникает новая. Может быть, кто-то может порекомендовать какие-либо готовые bash-скрипты или решения для этих ошибок?
  • 22 декабря 2024 г. 14:53
Ответы на вопрос 2
Для установки Django с MariaDB и настройки веб-сервера Nginx (с Gunicorn или OpenLiteSpeed) на VPS с Ubuntu 20.04, следуйте пошаговой инструкции ниже. Я также постараюсь предоставить некоторые советы и готовые команды, которые могут помочь избежать ошибок.

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

```bash
sudo apt update
sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv nginx mariadb-server libmariadb-dev -y
```

### Шаг 2: Настройка базы данных MariaDB

1. Запустите MySQL (MariaDB):
   ```bash
   sudo systemctl start mariadb
   ```

2. Настройте базу данных:
   ```bash
   sudo mysql_secure_installation
   ```

3. Создайте базу данных и пользователя для вашего проекта Django:
   ```bash
   sudo mysql -u root -p
   ```

   Затем введите следующие команды в MySQL:

   ```sql
   CREATE DATABASE myprojectdb;
   CREATE USER 'myprojectuser'@'localhost' IDENTIFIED BY 'password';
   GRANT ALL PRIVILEGES ON myprojectdb.* TO 'myprojectuser'@'localhost';
   FLUSH PRIVILEGES;
   EXIT;
   ```

### Шаг 3: Установка и настройка Django

1. Создайте виртуальное окружение и активируйте его:
   ```bash
   mkdir ~/myproject
   cd ~/myproject
   python3 -m venv venv
   source venv/bin/activate
   ```

2. Установите Django и другие необходимые пакеты:
   ```bash
   pip install django mysqlclient gunicorn
   ```

3. Создайте проект Django:
   ```bash
   django-admin startproject myproject .
   ```

4. Измените файл `settings.py`, чтобы подключиться к вашей базе данных:
   ```python
   DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.mysql',
           'NAME': 'myprojectdb',
           'USER': 'myprojectuser',
           'PASSWORD': 'password',
           'HOST': 'localhost',
           'PORT': '',
       }
   }
   ```

5. Примените миграции и создайте суперпользователя:
   ```bash
   python manage.py migrate
   python manage.py createsuperuser
   ```

### Шаг 4: Настройка Gunicorn

1. Запустите Gunicorn:
   ```bash
   gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application
   ```

### Шаг 5: Настройка Nginx

1. Создайте файл конфигурации для вашего проекта:
   ```bash
   sudo nano /etc/nginx/sites-available/myproject
   ```

   Вставьте следующую конфигурацию (обновите пути):
   ```
   server {
       listen 80;
       server_name your_domain_or_IP;

       location = /favicon.ico { access_log off; log_not_found off; }
       location /static/ {
           root /path/to/your/project;
       }

       location / {
           include proxy_params;
           proxy_pass http://unix:/path/to/your/project/myproject.sock;
       }
   }
   ```

2. Активируйте конфигурацию и перезапустите Nginx:
   ```bash
   sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
   sudo nginx -t
   sudo systemctl restart nginx
   ```

### Шаг 6: Настройка Gunicorn как службы

1. Создайте файл службы для Gunicorn:
   ```bash
   sudo nano /etc/systemd/system/gunicorn.service
   ```

   Вставьте следующее:
   ```
   [Unit]
   Description=gunicorn daemon
   After=network.target

   [Service]
   User=your_user
   Group=www-data
   WorkingDirectory=/path/to/your/project
   ExecStart=/path/to/your/project/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/path/to/your/project/myproject.sock myproject.wsgi:application

   [Install]
   WantedBy=multi-user.target
   ```

2. Запустите и активируйте службу:
   ```bash
   sudo systemctl start gunicorn
   sudo systemctl enable gunicorn
   ```

### Советы по устранению неполадок:
- Проверьте журналы ошибок Nginx и Gunicorn, если что-то не работает:
  ```bash
Смотрите в сторону docker
Похожие вопросы