Как запустить программу с сервера на локальном компьютере

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

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

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

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

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

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

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

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

Как установить программу на сервер? Круглосуточная работа программ на серверах vds/vps.

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

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

Запуск программ, использующих сокеты, на локальном компьютере

zapusk programm ispolzujushhih sokety na lokalnom kompjutere

Сетевые сценарии

А теперь заставим эти сценарии поработать. Есть два способа запустить их — на одном и том же компьютере или на разных. Чтобы запустить клиент и сервер на одном компьютере, откройте две консоли командной строки, запустите в одной программу сервера, а в другой несколько раз запустите клиента. Сервер работает постоянно и отвечает на запросы, которые происходят при каждом запуске сценария клиента в другом окне.

Читайте также:
Отмена каких либо действий и или выхода из программы подменю

Например, ниже приводится текст, который появляется в окне консоли MS — DOS , где я запустил сценарий сервера:

C: … PP4EInternetSockets> python echo-server.py

Server connected by (‘127.0.0.1’, 57666)

Server connected by (‘127.0.0.1’, 57667)

Server connected by (‘127.0.0.1’, 57668)

В выводе указан адрес ( IP -имя компьютера и номер порта) каждого соединившегося клиента. Как и большинство серверов, этот сервер выполняется вечно, ожидая запросов на соединение от клиентов. Здесь он получил три запроса, но чтобы понять их значение, нужно показать текст в окне клиента:

Веб-сервер. Локальный сервер Open Server. Настройка домена

C: … PP4EInternetSockets> python echo-client.py

Client received: b’Echo=>Hello network world’

C: … PP4EInternetSockets> python echo-client.py localhost spam Spam SPAM Client received: b’Echo=>spam’

Client received: b’Echo=>Spam’ Client received: b’Echo=>SPAM’

C: … PP4EInternetSockets> python echo-client.py localhost Shrubbery Client received: b’Echo=>Shrubbery’

Важно отметить, что клиенты и сервер выполняются здесь на одном и том же компьютере (в Windows ). Сервер и клиент используют один и тот же номер порта, но разные имена компьютеров — » и localhost , соответственно, при ссылке на компьютер, на котором они выполняются. В действительности здесь нет никакого соединения через Интернет. Это всего лишь механизм IPC , вроде тех, с которыми мы встречались в главе 5: сокеты прекрасно справляются с ролью средства связи между программами, выполняющимися на одном компьютере.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Источник: mvblog.ru

Деплой nodejs приложения на Ubuntu сервер

В данной статье рассмотрим настройку сервера Ubuntu с нуля и развертыванию nodejs приложения с диспетчером процессов PM2 и Nginx. Для примера будем использовать виртуальный сервер на beget, но можно использовать другого облачного провайдера, свою собственную машину или виртуальную машину. Установка и настройка будет идентична.

Подготовка сервера

Первым делом создаём новый vps сервер через панель управления, в примере используется beget.

SSH ключи

Есть несколько способов войти на сервер. Можно входить на сервер используя пароли, но для более безопасного входа лучше настроить ключи SSH, а затем отключить пароли. Таким образом, можно войти на свой сервер только с ПК, на котором настроены правильные ключи.

Читайте также:
Какие бывают расширения программ

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

Необходимо сгенерировать ключ SSH на локальном компьютере для удаленного входа на сервер, для этого открываем терминал и вводим

ssh-keygen

По умолчанию открытый и закрытый ключ создаются в каталоге .ssh на локальном компьютере и имеют названия id_rsa и id_rsa.pub. Можно изменить имена ключей, для этого во время вопроса имени ключа нужно указать полный путь к ключу, а также имя файла. Для примера введём id_rsa_beget

Можно использовать команду cat , а затем скопировать ключ

cat ~/.ssh/id_rsa_beget.pub

После этого нужно скопировать открытый ключ на удаленный сервер, для этого используется команда ssh-copy-id , в ней указывается путь до ключа, а затем имя пользователя и хост, на который нужно скопировать открытый ключ. Введем команду, заменив имя пользователя и хост на нужные

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

Подключение через root

Подключаемся к созданному, заменив ip адрес на тот что был получен после создания vps.

Если используется авторизация без ssh ключа, то будет предложено ввести пароль root.

Предлагаю сразу обновиться и обновить пакеты

sudo apt update sudo apt upgrade -y

Создание нового пользователя

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

Можно узнать текущего пользователя с помощью команды:

whoami

В данный момент должно показываться root.

Добавим нового пользователя. Для примера назовём его moon

adduser moon

Нажимаем Enter отвечая на все вопросы. Также потребуется ввести пароль для данного пользователя.

Читайте также:
Как пользоваться программой активити лаунчер

Используем следующую команду, чтобы просмотреть информацию о пользователе, включая группы, к которым он принадлежит.

id moon

Теперь добавим этого пользователя в группу sudo , что даст ему привилегии root.

usermod -aG sudo moon

Запустив следующую команду, увидим sudo

id moon

Добавить ключи SSH для новой учетной записи

Если вы используете SSH, вам нужно настроить SSH ключи для новой учетной записи.

В локальном терминале вводим команду как вводили ранее для пользователя root, только теперь указав пользователя moon

Теперь можем подключиться к серверу без ввода пароля через пользователя moon

Отключение входа через пароль

Этот шаг проходим только при условии, что подключаемся к серверу через ssh ключ

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

Откройте следующий файл на вашем сервере

sudo nano /etc/ssh/sshd_config

Ищем где написано

PasswordAuthentication Yes

Удаляем #, если он есть, и измените Yes на No .

Если вы хотите полностью отключить вход в систему root, вы также можете изменить permitRootLogin на no . Обязательно удалите знак # , потому что он комментирует строку.

Сохраните файл, выйдя (ctrl+x) и нажав Y для сохранения.

Теперь вам нужно сбросить службу sshd

sudo systemctl restart sshd

Теперь вы можете выйти из системы, просто набрав logout

Попробуйте снова войти под своим пользователем (используйте свое имя пользователя и IP-адрес сервера)

Если вы получили сообщение «Public key denied» или что-то в этом роде, выполните следующие команды:

eval `ssh-agent -s` ssh-add ~/.ssh/id_rsa_beget # замените это тем, как назвали свой файл с ключом

Попробуйте снова войти в систему, и вы должны увидеть приветственное сообщение, без необходимости ввода пароля.

Конфигурация сервера для Node.js

Предварительно установим утилиты, которые необходимы для дальнейшей работы (если вдруг они в вашей редакции системы небыли установлены по умолчанию)

sudo apt install curl git

Установка Node.js

После подготовки сервера пришло время приступить к настройке среды нашего приложения. Начнем с установки Node.js

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru