@stvoid

Как поставить на автозапуск python скрипт в linux?

sh - скрипт:
#!/bin/bash

cd /home/dev/myapp/ \
&& source venv/bin/activate \
&& gunicorn -c gunicorn_config.py run_app:app


Есть запускаю просто из под рута в консоле - всё срабатывает ок. Приложение запускается, всё отрабатывает ок.

Но не понимаю как это поставить на автозапуск (провайдер зачастил ребутать серверы).
Скрипт сервиса:
[Unit]
Description=My Script Service
After=default.target

[Service]
Type=simple
ExecStart=/root/runserver.sh
Restart=always
User=root

[Install]
WantedBy=multi-user.target


Лежит в /lib/systemd/system/runapp.service
Скрин статуса:
5d0bf623e0001703016171.png

Заодно подскажите куда как прописать правила iptables так же при старте :)
Что читаю и пытаюсь повторить - не работает :\
  • Вопрос задан
  • 4442 просмотра
Решения вопроса 2
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
1. Вам влом прочитать документацию на инструменты используемые вами
- docs.gunicorn.org/en/stable/deploy.html
2. Вам влом в гугле вбить запрос на поиск методов деплоя используемых вами инструментов
- https://bartsimons.me/gunicorn-as-a-systemd-service/
3. Вам влом изучать операционную систему и её инструменты
- https://habr.com/ru/company/southbridge/blog/255845/
4. Выкиньте нафиг свой скрипт, systemd супервизор и он не занимается запуском скриптиков, а если уж очень хочется то не забывайте про "переменные среды".

Но зато не влом прийти и написать много букав на тостере и при этом даже не удосужились указать операционную систему, конкретную а не общее Linux коих 100500 дистров и у многих свои приколы.
Ответ написан
@brar
[Unit]
Description=My Script Service

[Service]
WorkingDirectory=/home/dev/myapp
ExecStart=source venv/bin/activate && gunicorn -c gunicorn_config.py run_app:app
Restart=always
RestartSec=30 #перезагрузка сервиса, если вдруг упадет.
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=my-python-app
#Environment=NODE_ENV=production PORT=3080 (это для nodejs, но можете тоже поиграть, если надо).

[Install]
WantedBy=multi-user.target

Попробуйте разместить в /etc/systemd/

iptables на разных осях по разному. Создаете скрипт типа:
#! /bin/sh
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
iptables -t security -F
iptables -t security -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

В дебиане-like кидаете его /etc/network/if-up.d/
В redhat-like в /etc/sysconfig/iptables
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы