Масонит это невероятная основа для разработчиков для разработки современных веб -приложений с Python. С большим количеством функциональности коробки с чрезвычайно расширяемой архитектурой. По моему собственному опыту, это очень поможет вам создать ваши приложения с помощью красивого кода.
Это приносит вам полезную утилиту под названием ремесло
Команда, которая делает намного проще и быстрее для создания ваших классов моделей/контроллеров/аутентификации/Middlewares и так далее.
Команда Craft внедряет встроенный веб -сервер, предназначенный для запуска в среде разработки вашего веб -приложения. Хотя это делает разработку комфортной, этот веб -сервер не предназначен для развертывания на производстве.
В этом руководстве я постараюсь объяснить, как настроить и развернуть ваше приложение Masonite на виртуальном частном сервере, таком как AWS или DigitaloCean.
Требования, используемые для этого руководства
- Debian Buster
- Масонит 2.2
- Python 3.7
- Nginx
- Стрелобь
Установка вашего веб -приложения
Для начала я сделаю новый проект масонита. Я собираюсь пропустить шаг установки, потому что не является целью этого руководства, но вы можете использовать этот очень хорошо объясненный учебник для процесса установки.
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”