Первоисточники
Как запустить Python скрипт в фоновом режиме
Запуск Python скрипта в виде службы
Исходная команда не найдена в оболочке sh
Как изменить оболочку
Getting 502 Bad Gateway with nginx, uwsgi python-flask
Настройка Nginx для использования в качестве веб-сервера и обратного прокси-сервера
Установка
apt-get update
apt-get install python3-pip
Проверяем
python3 --version
pip3 --version
Далее устанавливаем flask
pip3 install flask
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Запускаем приложение Python
python3 main.py
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
Ура! Работает! Но!!!…
Нетрудно догадаться, легко понять по слову WARNING что мы таким образом достигли быстрого и небезопасного результата.
Делать надо используя виртуальную среду python3-venv.
Для этого:
1. Устанавливаем web-сервер Nginx - по этой инструкции "Шаг 1 – 3"
2. Настраиваем безопасный запуск приложения Python - по этой инструкции "Шаг 1 – 5" до слов Теперь мы запустим созданную службу uWSGI и активируем ее запуск при загрузке системы:
sudo systemctl daemon-reload
sudo systemctl enable myproject.service
sudo systemctl start myproject
sudo systemctl status myproject
3. Настраиваем Nginx как обратный прокси
sudo mcedit /etc/nginx/sites-available/myproject
/etc/nginx/sites-available/myproject:
server {
listen 80;
server_name foobar.net www.foobar.net test.io www.test.io;
location / {
proxy_pass http://your_server_ip:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl restart nginx
sudo ufw delete allow 5000
Теперь у вас должна быть возможность открыть доменное имя вашего сервера в браузере:
http://your_domain
502 Bad Gateway
sammy - пользователь который является владельцем всех файлов
usermod -aG sammy www-data
systemctl restart nginx
Запретить пользователю возможность залогиниться
usermod -s /usr/sbin/nologin имя_пользователя
вернуть
chsh -s /bin/bash имя_пользователя
