Full Bash history:
https://gist.github.com/ShilGen/4736422b1b3fdb657652510dc8b53528
Создаём файл настроек /etc/systemd/system/gunicorn.service
[Unit]
Description=Gunicorn instance
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/app
ExecStart=/usr/bin/python3 /usr/local/bin/gunicorn --workers 4 -b 0.0.0.0:5001 --threads 100 app:app
ExecReload=/bin/kill -s HUP $MAINPID
[Install]
WantedBy=multi-user.target
Проверка файла gunicorn.service на наличие ошибок
systemd-analyze verify gunicorn.service
Запуск службы gunicorn
systemctl enable gunicorn
systemctl start gunicorn
При изменении файлов настроек службы, перезапускайте демона
systemctl daemon-reload
При изменении любых данных в HTML-шаблонах, перезапускайте сервис gunicorn
service gunicorn restart
Статус запущенной службы
systemctl status gunicorn
Установка сервера Apache2
sudo apt-get install apache2 libapache2-mod-wsgi-py3
systemctl enable apache2
Сохранение оригинального файла настроек сервера
cd /etc/apache2/sites-available/
cp 000-default.conf 000-default-copy.conf
/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerName 194.226.49.31
ServerAdmin [email protected]
DocumentRoot /app
WSGIDaemonProcess app threads=5
WSGIScriptAlias / /app/server.wsgi process-group=app
<Directory /app>
WSGIProcessGroup app
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
# WebSocket proxy
ProxyPass /ws ws://194.226.49.31:5001/ws
ProxyPassReverse /ws ws://194.226.49.31:5001/ws
ErrorLog /app/log/error.log
CustomLog /app/log/access.log combined
</VirtualHost>
Активация домена, перенаправления веб-сокетов
a2enmod proxy_http
a2ensite default000
Запуск, перезапуск сервера
systemctl start apache2
systemctl restart apache2
Установка зависимостей
pip install flask flask-sock
Проверка установленной версии пакета Flask
import importlib
importlib.metadata.version("flask")