В самом скрипте указать хост и порт для удаленного доступа
app.run(host='0.0.0.0', port=1234)
- Если вы хотите, чтобы сервер был доступен извне, используйте
host='0.0.0.0'
(сервер будет слушать все интерфейсы).
1234 все порты
Чтобы скрипт работал постоянно (даже после перезагрузки системы или сбоя), можно использовать следующие методы:
1. Системный сервис через systemd
(рекомендуется для Debian)
Это стандартный способ управления демонами в Linux.
Шаги:
а. Создайте файл сервиса:
sudo nano /etc/systemd/system/my_script.service
б. Добавьте конфигурацию:
[Unit]
Description=My Python Script
After=network.target
[Service]
User=ваш_пользователь # Например, "ubuntu" или "root"
WorkingDirectory=/путь/к/директории_скрипта
ExecStart=/usr/bin/python3 /путь/к/скрипту.py
Restart=always # Автоматический перезапуск при сбое
RestartSec=5
[Install]
WantedBy=multi-user.target
в. Включите и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable my_script # Автозагрузка при старте системы
sudo systemctl start my_script # Запуск сейчас
г. Проверьте статус:
sudo systemctl status my_script
д. Логи:
journalctl -u my_script -f
2. Использование screen
/tmux
(для временных задач)
Запустите скрипт в виртуальном терминале, который можно отключить без остановки процесса.
Пример для tmux
:
tmux new -s my_session # Создать сессию
python3 /путь/к/скрипту.py # Запустить скрипт
# Нажмите Ctrl+B, затем D, чтобы выйти из сессии
Чтобы вернуться в сессию:
tmux attach -t my_session
3. nohup
(простой фоновый запуск)
Запустите скрипт в фоне, игнорируя сигналы разрыва соединения:
nohup python3 /путь/к/скрипту.py > output.log 2>&1 &
- Логи сохранятся в
output.log
.
- Недостаток: нет автоматического перезапуска при сбое.
4. Supervisor (альтернатива systemd)
Установите и настройте менеджер процессов Supervisor:
sudo apt install supervisor
а. Создайте конфиг:
sudo nano /etc/supervisor/conf.d/my_script.conf
б. Добавьте настройки:
[program:my_script]
command=python3 /путь/к/скрипту.py
directory=/путь/к/директории
autostart=true
autorestart=true
stderr_logfile=/var/log/my_script.err.log
stdout_logfile=/var/log/my_script.out.log
user=ваш_пользователь
в. Примените изменения:
sudo supervisorctl update
sudo supervisorctl start my_script
5. Cron (для периодического запуска)
Добавьте задание в cron для проверки и перезапуска скрипта:
crontab -e
Добавьте строку (например, каждые 5 минут):
*/5 * * * * pgrep -f "python3 /путь/к/скрипту.py" || python3 /путь/к/скрипту.py
Рекомендации
- Для production-среды используйте
systemd
или Supervisor
.
- Логирование — сохраняйте вывод скрипта в файлы для отладки.
- Права доступа — не запускайте скрипты от имени
root
, если это не необходимо.
- Мониторинг — настройте уведомления о сбоях (например, через
systemctl status
или Telegram-бота).
Если скрипт — веб-сервер (например, Flask), используйте WSGI-сервер (Gunicorn) вместе с Nginx/Apache для надежности. Пример для Gunicorn:
gunicorn --bind 0.0.0.0:5000 app:app --daemon