Как запустить python скрипт на Linux в виде demon

Admin Linux, Python

Описание процесса от создания БД и до запуска скрипта.

Соединяемся со своим сервером и дальше работаем через консоль.

Переносим локальный проект на сервер

Создаем директорию для нашего нового приложения:

cd /home/ploshadka/new-application
mkdir new-application

Клонируем свой git-проект на наш сервер:

git clone "git@github.com:nikname/name_repository.git" ./

Создаем виртуальное окружение python:

python3 -m venv venv

Активируем оболочку:

source venv/bin/activate

Устанавливаем зависимости:

pip install --upgrade pip
pip install -r requirements.txt

Создаем БД в PostgreSQL

Подключаемся к PostgreSQL:

sudo su - postgres

Создаем БД

CREATE DATABASE new-application TEMPLATE=template0 ENCODING 'UTF-8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8';

Назначаем привелегии новой таблице:

GRANT ALL PRIVILEGES ON DATABASE new-application TO ploshadka;

Импортируем БД:

pg_restore -U ploshadka -d new-application /home/ploshadka/new-application/bd.tar

Выходим из postgres окружения:

exit

В коде должно быть подключение к PostreSQL

Выдержка из примера подключения к PostreSQL вместе с логированием.

def create_connection(
        db_name='new-application',
        db_user='ploshadka',
        db_password='12345',
        db_host='localhost',
        db_port=5432
):
    connection = None
    try:
        connection = psycopg2.connect(
            database=db_name,
            user=db_user,
            password=db_password,
            host=db_host,
            port=db_port,
        )
        connection.autocommit = True
    except psycopg2.OperationalError as error:
        logger.info(f'Ошибка: {error}')
    return connection

Создаем демон для запуска нашего скрипта на python

Создаем службу:

sudo nano /etc/systemd/system/new-application.service

Внутри этого файла вставляем:

Description=New Application
After=network.target

[Service]
User=ploshadka
Group=www-data
WorkingDirectory=/home/ploshadka/new-application
Environment="PATH=/home/ploshadka/new-application/venv/bin"
ExecStart=/home/ploshadka/new-application/venv/bin/python bot.py --start
ExecStop=/home/ploshadka/new-application/venv/bin/python bot.py --stop
ExecReload=/home/ploshadka/new-application/venv/bin/python bot.py --restart
TimeoutSec=30
Restart=always

Команды для запуска, остановки, перезагрузки службы

sudo systemctl start new-application
sudo systemctl stop new-application
sudo systemctl start new-application
sudo systemctl reload new-application

Узнать статус работы:

sudo systemctl status new-application

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Как запустить python скрипт на Linux в виде demon"