Рубрики
Без рубрики

Развертывание проекта Masonite 2 с NGINX и стрельцом

Deploy Masonite 2 проект с Nginx и стрелком. Помечено масонитом, стрелком, Nginx, Python.

Масонит это невероятная основа для разработчиков для разработки современных веб -приложений с Python. С большим количеством функциональности коробки с чрезвычайно расширяемой архитектурой. По моему собственному опыту, это очень поможет вам создать ваши приложения с помощью красивого кода.

Это приносит вам полезную утилиту под названием ремесло Команда, которая делает намного проще и быстрее для создания ваших классов моделей/контроллеров/аутентификации/Middlewares и так далее.

Команда Craft внедряет встроенный веб -сервер, предназначенный для запуска в среде разработки вашего веб -приложения. Хотя это делает разработку комфортной, этот веб -сервер не предназначен для развертывания на производстве.

В этом руководстве я постараюсь объяснить, как настроить и развернуть ваше приложение Masonite на виртуальном частном сервере, таком как AWS или DigitaloCean.

Требования, используемые для этого руководства

Установка вашего веб -приложения

Для начала я сделаю новый проект масонита. Я собираюсь пропустить шаг установки, потому что не является целью этого руководства, но вы можете использовать этот очень хорошо объясненный учебник для процесса установки.

craft new demoapp
cd demoapp

# Create the virtual env with python3
python3 -m venv venv
source venv/bin/activate
craft install

Это сделает новый Демоапп Папка с изготовленным приложением, затем создаст виртуальную ENV и активирует ее и для завершения ее установит требования, описанные в Требования.txt файл.

На этом последнем шаге (на моей машине с использованием Debian SID) он печатает некоторые ошибки с установленной версией Debian версии Python Wheels:

Failed building wheel for masonite
Failed building wheel for masonite-validation
Failed building wheel for masonite-dot
Failed building wheel for pyyaml

Но Craft Command создает ключ приложения, и все работает без проблем, но если это делает вас шумом, мой предлагаемый обходной путь – установить в виртуальную Env The Wheels с PIP:

# activate virtualenv if is deactivated
source venv/bin/activate
pip install wheel
craft install

Установите Nginx и стрело

В Debian вы можете использовать APT, APT-Get или Aptitude для установки пакетов. Нам нужно будет установить веб -сервер NGINX и настроить его, чтобы сделать прокси -реверс реконструкции стрелка.

# We need nginx and gunicorn3 for python3
sudo aptitude install nginx gunicorn3

Горничный завод – это сервер Python WSGI HTTP для UNIX. Рекомендуется использовать надзорный залив за прокси -сервером HTTP (как nginx в этом случае).

Масонит выводит из коробки a wsgi.py Файл, который вы можете использовать для выполнения нашего приложения:

gunicorn3 wsgi:application

Настройки по умолчанию по умолчанию Если вы хотите получить доступ с другого устройства, вы можете использовать -b вариант.

После установки NGINX мы настроим одушевленного оборудования для работы в качестве услуги в SystemD, поэтому это позволит нам контролировать с SystemCtl командовать и запустить после перезагрузки системы.

Это будет /etc/nginx/sites-valailable/default Файл, путь к проекту – /home/admin/webApps/demoApp

server {
    server_name demoapp.io;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /public/ {
        root /home/admin/webapps/demoapp/storage;
    }
    location /static/ {
        root /home/admin/webapps/demoapp/storage;
    }
    location /uploads/ {
        root /home/admin/webapps/demoapp/storage;
    }
    location /compiled/ {
        root /home/admin/webapps/demoapp/storage;
    }

    access_log /var/log/nginx/access.log;

    location / {
        include proxy_params;
        proxy_set_header Host $host;
        proxy_pass http://unix:/run/gunicorn.socket;
    }
}

Теперь файл конфигурации Nginx отредактирован, нам нужно проверить синтаксис в порядке:

sudo nginx -t

# Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Создать службу надзора: /etc/systemd/system/gunicorn.service

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
PIDFile=/run/gunicorn/pid
User=admin
Group=www-data
RuntimeDirectory=gunicorn
WorkingDirectory=/home/admin/webapps/demoapp
ExecStart=/usr/bin/gunicorn3 --pid /run/gunicorn/pid\
          --workers 3\
          --bind unix:/run/gunicorn.socket wsgi\
          --error-logfile /home/admin/logs/error.log\
          --access-logfile /home/admin/logs/access.log\
          --log-level debug\
          --timeout 320
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Этот файл службы выполняет Онминистратор 3 Команда с использованием PID-файла (на /run/unericorn/pid ) и сделайте соединение, которое мыслить файл сокета, расположенный на /run/gunicorn.socket , это сохраняет журналы на /home/admin/logs/ каталог, чтобы это потребовалось разрешения:

mkdir ~/logs/
sudo chown admin.www-data ~/logs/

Создать /etc/systemd/system/gunicorn.socket файл:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.socket

[Install]
WantedBy=sockets.target

Теперь почти все на месте, нам нужно перезагрузить наши услуги:

sudo systemctl daemon-reload

# start gunicorn
sudo systemctl start gunicorn

Чтобы проверить, работает ли служба овиновника:

sudo systemctl status gunicorn

# Output
● gunicorn.service - gunicorn daemon
   Loaded: loaded (/etc/systemd/system/gunicorn.service; disabled)
   Active: active (running) since Wed 2019-07-29 21:05:07 UTC; 49s ago
 Main PID: 10154 (gunicorn)
   CGroup: /system.slice/gunicorn.service
           ├─10154 /home/admin/webapps/demoapp/venv/bin/python3 /home/admin/webapps/demoapp/venv/bin/gunicorn --workers 3 --bind unix:/run/gunicorn.socket wsgi:application
           ├─10157 /home/admin/webapps/demoapp/venv/bin/python3 /home/admin/webapps/demoapp/venv/bin/gunicorn --workers 3 --bind unix:/run/gunicorn.socket wsgi:application
           ├─10158 /home/admin/webapps/demoapp/venv/bin/python3 /home/admin/webapps/demoapp/venv/bin/gunicorn --workers 3 --bind unix:/run/gunicorn.socket wsgi:application
           └─10159 /home/admin/webapps/demoapp/venv/bin/python3 /home/admin/webapps/demoapp/venv/bin/gunicorn --workers 3 --bind unix:/run/gunicorn.socket wsgi:application

Dec 21 21:05:07 debian-512mb-nyc3-01 systemd[1]: Started gunicorn daemon.

Наконец -то перезапустите Nginx для работы с нашим развернутым приложением

sudo systemctl restart nginx

И Та-да!

Выводы

Если вам нравится красивый код, попробуйте масонит.

Оригинал: “https://dev.to/holiccl/deploying-masonite-2-project-with-nginx-and-gunicorn-3pnj”