Перейти к содержимому

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

  • автор:

Запустить python скрипт на сервере

которая запускала скрипт и можно было закрывать терминал, уходить с сервера, а скрипт продолжал работать. Может кто напомнить?

Отслеживать
задан 8 июл 2014 в 12:26
435 2 2 золотых знака 6 6 серебряных знаков 16 16 бронзовых знаков

Может быть что-то типа: nohup python script.py > /var/log/myscript.log 2>&1 & nohup . — отвязывает ввод/вывод . > . — перенаправляет вывод в файл . 2>&1 — поток ошибок перенаправляет в поток вывода . & — запуск в фоне

8 июл 2014 в 12:29
@BOPOH, да, это оно. спасибо.
8 июл 2014 в 12:53

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

python script.py & 

запустит скрипт в фоновом режиме. Чтобы «вернуть» его, нужна команда

fg %1 

Но для сервера лучше использовать screen, чтобы была возможность подключиться к процессу при необходимости.

P.S. Если скрипт уже работает, то можно остановить его (не завершить, а «поставить на паузу» командой ctrl+z) и продолжить выполнение в фоне командой

bg %1 

Как запустить Python скрипт на хостинге/виртуальном сервере?

Написал небольшой скрипт, который парсит обьявления на ОЛХ по параметрам. Если появляется новое обьявление скрипт отправляет мне его данные в телеграмм. В пайтоне не силен, работаю на другом ЯП, сделал уведомлялку чтоб снять жилье. Суть вопроса в том, что скрипт работает только локально и это не совсем удобно, ведь ноутбук у меня не включен 24/7. Есть бесплатный хостинг beget, возможно ли на нем или на другом хостинге запустить скрипт чтоб он работал постоянно? Без cron и прочих планировщиков задач, в скрипте стоит while: True . sleep(120). то есть скрипт каждые две минуты проверяет не появилось ли новое обьявление.

  • Вопрос задан более двух лет назад
  • 10575 просмотров

Запускаем Python-скрипт на сервере, чтобы он работал всё время

В итоге мы остановились на том, что научились запускать скрипт на сервере, чтобы он работал после разрыва соединения. Но это половинчатое решение: если мы перезапустим сервер, то бот остановится. Иногда сервер перезагружается сам на стороне провайдера, например при плановых технических работах. И тогда наши скрипты умирают.

Сейчас нам нужно такое решение, чтобы бот автоматически перезапускался при любых обстоятельствах. Этим и займёмся.

Коротко — суть

Чтобы было понятно, что тут происходит, вот короткая версия:

  1. Настраиваем удалённый доступ к серверу.
  2. Создаём папку и заливаем в неё скрипт, который в итоге должен будет работать всё время.
  3. Создаём у себя на компьютере файл службы — он управляет настройками автозапуска скрипта.
  4. Отправляем файл службы на сервер.
  5. Обновляем на сервере данные обо всех службах и запускаем нашу.

Теперь подробно про каждый шаг.

Предварительная работа

Основное, что мы будем использовать, — это удалённый доступ к серверу по SSH. Для этого он должен быть включён на самом сервере, и там же можно сразу посмотреть параметры доступа. Например, для работы нашего учебного сервера мы пользуемся услугами SpaceWeb, где доступ по SSH включается из панели управления:

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Запускаем SSH и проверяем, что соединение устанавливается. Чтобы соединиться, нужно написать в терминале команду ssh имя_пользователя@адрес_сервера, после чего нажать Enter. Сервер спросит пароль, и, если мы его правильно ввели, нас пустят.

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Мы видим приветствие сервера, значит, всё прошло хорошо и мы можем управлять им со своего компьютера. Для этого нужно будет писать в терминал команды и реагировать на то, что тебе ответит сервер.

Отправляем скрипт на сервер

Чтобы не захламлять корневую папку на сервере, создадим новую папку bot. Вот эта команда:

После этого открываем новую командную строку на компьютере, а не на сервере. Для этого нужно запустить ещё одно окно терминала. Там пишем такое:

scp /Users/mihailpolanin/Downloads/bot.py mpolyanin@77.222.61.9:bot

Вот что это означает:

  • scp — копирование файла по SSH;
  • /Users/mihailpolanin/Downloads/bot.py — это путь к нашему скрипту на компьютере. Его замените на то, что будет у вас;
  • mpolyanin@77.222.61.9 — адрес сервера и логин пользователя. Это тоже замените на ваши данные;
  • : — отделяет сервер от папки;
  • bot — название папки, которую мы только что создали на сервере.

Лайфхак: чтобы не писать вручную пути до файлов на локальном компьютере, можно перед началом ввода пути просто перетащить файл в окно терминала. Терминал поймёт, что вы имели в виду «путь до этого файла», и подставит данные сам.

После запуска у нас попросят пароль от сервера — вводим его и видим статистику отправки файла:

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Переключаемся обратно в SSH-соединение и проверяем, что файл скопировался и лежит в папке. Для этого вводим две команды: первая перейдёт в эту папку, а вторая покажет её содержимое:

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Готовим файл для работы службы

Нам нужно, чтобы система сама следила за тем, чтобы скрипт работал всё время и запускался после перезагрузки. В Linux за это отвечают службы — одну из таких служб мы сейчас и сделаем.

Создаём на компьютере новый файл bot.service и вставляем туда такое:

[Unit] Description=tg-bot After=multi-user.target [Service] User=root Group=root Type=simple Restart=always ExecStart=/usr/bin/python3 /bot/bot.py [Install] WantedBy=multi-user.target

Два самых важных параметра — это путь к нашему скрипту (/bot/bot.py) и название службы: tg-bot. Название может быть любым, а вот путь к скрипту нужно указать точно.

Теперь закидываем этот файл на сервер в папку /usr/lib/systemd/system. Для этого в командной строке компьютера пишем:

scp /Users/mihailpolanin/Downloads/bot.service mpolyanin@77.222.61.9:/usr/lib/systemd/system

Как и раньше, не забудьте заменить адрес до файла .service на вашем компьютере, а также имя пользователя и адрес сервера. Первый адрес можно не писать вручную, а перетащить файл в терминал сразу после набора команды scp.

Запуск службы

Теперь нам нужно перезагрузить все службы, чтобы наш файл тоже попал в общий список для запуска. Открываем SSH-консоль и выполняем там такую команду:

sudo systemctl daemon-reload

И сразу включим наш сервис, чтобы он не отключался при перезагрузке сервера:

sudo systemctl enable bot.service

Всё, можно запускать наш телеграм-бот как службу. Вот основные команды для этого:

  • sudo systemctl start bot.service — запустить службу;
  • sudo systemctl stop bot.service — остановить службу;
  • sudo systemctl status bot.service — посмотреть статус, работает или нет.

Что дальше

В следующий раз сделаем ещё круче — настроим систему мониторинга на сервере, чтобы нам на почту приходило сообщение, когда служба перезапускается или останавливается с ошибкой. Подпишитесь, чтобы не пропустить.

Любишь Python? Зарабатывай на нём!
Изучите самый модный язык программирования и станьте крутым бэкенд-разработчиком. Старт — бесплатно.

Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём!

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Как установить и запустить код Python на Linux VPS?

Если у вас есть Linux Cloud SSD с Hostwinds и вы хотите использовать Python, это руководство для вас.Чтобы начать, подключитесь к вашему облачному SSD HostWinds Cloud SSD через SSH.Если вы не уверены в том, как подключиться к SSH, HostWinds предлагает вам Руководство по подключению вашего VPS с SSH.

Вы также захотите рассмотреть возможность использования пользователя Sudo в любом Centos7 или Ubuntu следить за этим руководством:

Установка Python

Точные шаги установки различаются, но самый простой способ установить Python на Linux Cloud SSD — это использовать определенную часть программного обеспечения, называемую диспетчером пакетов. Чтобы уточнить, менеджеры пакетов автоматически загружают и настраивают программное обеспечение в вашей системе за вас.

В Ubuntu или Debian, Диспетчер пакетов под названием «APTitude» использует APT на командной строке.Чтобы установить Python на Ubuntu, просто запустите эту команду как root:

sudo apt install python3 

В CentOS, Red Hat и Fedora Имейте менеджер пакета под названием «RPM», лучше известный как «Менеджер пакета Red Hat Package».Кроме того, что-то называемое «yellowdog Updater,» или yum, серверы в качестве интерфейса командной строки.Чтобы установить Python, как root, используйте команду:

sudo yum install python3 

После выполнения этих команд Python будет установлен в вашей системе.

Использование команд Python

После того, как Python был установлен в вашей системе, вы можете попробовать его в командной строке. Введите команду Python3, и вы можете получить доступ к интерпретатору Python. Этот интерпретатор позволит вам запустить команды в Python и увидеть результаты в режиме реального времени.

Вот мнение Python в командной строке в Centos 7, используя PUTTY SSH-клиент:

Как только у вас появится приглашение >>> с правой стороны, вы можете ввести код Python. В качестве примера приведем небольшую однострочную программу, которую вы можете быстро запустить:

print("Hello World!") 

Вот как это выглядит после запуска в интерпретаторе:

Чтобы выйти из переводчика Python и обратно в вашу оболочку, введите EXIT (), чтобы вернуться в приглашение оболочки.

Запуск скриптов Python

Запуск команд от интерпретатора хороша, если вы хотите получить ощущение Python.Однако, если вы хотите запустить более полные скрипты, вы, скорее всего, захотите написать его в отдельный файл, называемый сценарием.

Сценарии Python в основном заканчиваются в расширении .py, чтобы вы могли сделать один запускать текстовый редактор под названием Nano, который создаст новый файл.

Запустите команду Nano Hello.py.Вы заметите, что это подтянут новый экран здесь, и он должен выглядеть что-то подобное:

Оказавшись там, вы можете начать вводить код Python. В приведенном ниже фрагменте кода запрашивается ваше имя, а затем передается привет:

#hello.py print("Hello, may I know your name?") greeting = input("Tell me your name here! > ") if greeting: print("Hello, " + greeting + "!") else: print("Hello!") 

Вот как это выглядит в замазке:

Теперь вам нужно сохранить этот файл.В Nano вы можете сделать это, удерживая клавишу управления и набрав «X» на клавиатуре.Затем Nano предложит вам сохранить файл, введите «y» для да, а затем ввести.Теперь вы должны вернуться в главной оболочке.

Как только файл сохраняется, вы можете запустить его с помощью Python3 Hello.py на главной странице оболочки. Вот что работает программа, как следует выглядеть:

python3 hello.py 

Предположим, вы сделали это далеко.Поздравляю!Вы взяли первые шаги в использовании Python!

Написано Hostwinds Team / Ноябрь 8, 2019

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *