Python

Первоисточники


Как запустить 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 имя_пользователя