Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Управление бэкендом с клиента (https://javascript.ru/forum/node-js-io-js/75350-upravlenie-behkendom-s-klienta.html)

Teamur 27.09.2018 07:20

Управление бэкендом с клиента
 
Как можно реализовать такой процесс:

На сервере я запускаю приложение
node server_1.js

На клиенте в input ввожу команду:
server_1.js stop, server_2.js start

На сервере:
server_1.js приняв команду запускает server_2.js, а сам закрывается

SuperZen 27.09.2018 11:06

А что должно произойти с подключенным клиентом?

Надо наверное какой-нибудь агент, к которому подключается клиент, и агент управляет созданием/удалением процессов.

https://nodejs.org/api/child_process.html

https://medium.freecodecamp.org/node...w-e69498fe970a

Teamur 27.09.2018 11:28

Сейчас у меня на сервере стоит nodemon, а серверный скрипт я правлю через winscp с открытием в sublimeText.

Я хочу избавится от установки на ПК любого софта кроме браузера.
Цель:
Я хочу зайдя на свою страницу администратора, ввести в input команду скажем get server.js
сервер возвращает его код, я в редакторе на самой странице правлю скрипт, нажимаю сохранить.
И server.js перезапускается.

То есть на клиенте я ввожу команду на получения ресурсов сервера для редактирования и последующего сохранения на сервере с перезапуском.

Это вроде CMS называется.

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

Вроде как онлайн-редактор бэкенда моего сайта со страницы администратора.

SuperZen 27.09.2018 13:35

Раз есть страница администратора, тогда не понятно зачем вводить какие-то команды.

Банальный fileexplorer в браузере, ходи по папкам и выбирай файл, поправил файл, нажал кнопку перезапустить. Даже редактор кода можно вставить.

буквально 1 минута на поиск)
https://www.npmjs.com/package/node-file-manager
https://codemirror.net/
http://pm2.keymetrics.io/

Маэстро 12.02.2019 22:57

Хочу поднять эту тему. У меня тоже есть аналогичная потребность.

Цитата:

Сообщение от SuperZen (Сообщение 495476)
Раз есть страница администратора, тогда не понятно зачем вводить какие-то команды.

Если я правильно понял, нет никакой страницы администратора. Нечто очень простое типа такой страницы админа и надо сделать. Для простоты понимания уберем редактор кода, авторизацию на странице тоже не рамссматриваем. На сервере работает myserver.js, который как-то там запущен на Node.js

Что необходимо: чтобы я на смартфоне (на своей веб-странице "mypage") ввел какой-то параметр (пусть в простой input), нажал кнопку "OK" и после этого myserver.js должен перезапуститься с учетом нового параметра.

То есть, сервер, слушающий на каком-то порту XXXXX, должен получить такую вот "команду" с параметром и сам себя полностью перезапустить, да еще и работать в режиме daemon. Как такое сделать?

Нюанс в том, что с новым параметром myserver.js может запуститься, но свалиться по ошибке. Тогда вообще уже mypage станет бесполезной (она просто не откроется).

Рассмотрю любые идеи. На сервере Centos 7 стоит Apache и PHP 7. Может страницу mypage открывать на PHP и с помощью PHP как-то запускать/перезапускать myserver.js? Это как бы независимый от Node.js канал работы с сервером. Например что-то вроде такого:
exec('node myserver.js');

j0hnik 13.02.2019 07:19

Цитата:

Сообщение от Маэстро
Нюанс в том, что с новым параметром myserver.js может запуститься, но свалиться по ошибке. Тогда вообще уже mypage станет бесполезной (она просто не откроется).

Чтобы ничего не свалилось нужно наверное проверить на сервере "команду" с параметром, и если они валидные, перезапускать или что-то еще делать.

Маэстро 13.02.2019 11:12

Цитата:

Сообщение от j0hnik (Сообщение 503564)
Чтобы ничего не свалилось нужно наверное проверить на сервере "команду" с параметром, и если они валидные, перезапускать или что-то еще делать.

Конечно да, всё надо проверять. Но с точки зрения валидатора "команда" - это может быть просто цифра из диапазона 1-10 и она валидная. А сервер может свалиться по другим причинам. Не акцентируйте внимание на "команде". Отправка команды в инпуте - это я упрощенно сформулировал задачу. Данные для работы сервера могут быть переданы и другим способом, например, это может быть файл "mama.txt", предварительно положенный на сервер по FTP.

Для понимания задачи давайте упраздним и это. Задача сводится к тому, чтобы иметь свою страницу https://mysite.com/mypage.html с тремя кнопками "Рестарт", "Стоп" и "Пуск". Понятное дело, что если остановить сервер, генерирующий, страницу mypage.html, то дальше мрак. Но хотя бы вариант с одной кнопкой "Рестарт" можно сделать?
Как это реализовать через браузер?

j0hnik 13.02.2019 12:20

Маэстро,
Какой в этом смысл? если нужно перегружать при изменении файлов поставьте nodemon
если просто так от скуки то reload подойдет

Маэстро 13.02.2019 12:42

Цитата:

Сообщение от j0hnik (Сообщение 503582)
Какой в этом смысл?

Профессор, по этикету я не вправе делать Вам замечание, но зачем отвечать вопросом на вопрос? Если человек спрашивает, значит ему это зачем-то нужно. Вот один из смыслов:
Я нахожусь в одной стране, предприятие с локальной сетью в другой, вебсервер физически в третьей. Умные дяденьки (сисадмины) настроили следующую цепочку доступа к серверу:
Сначал я должен с помощью удаленного доступа (Microsoft) войти в локальную сеть предприятия (логин/пароль раз), подключиться к моей виртуальной рабочей станции в сети. Только из локальной сети я могу запустить программу winscp (логин/пароль два), чтобы подключиться к серверу и что-то на него скопировать. Чтобы выполнить какие-то команды на сервере или перезапустить Node.js-сервер я еще должен запустить Путти, зайти под SSH (логин/пароль три). Кроме всего этого виртуальная станция настроена таким образом, что через 5 минут (?!) бездействия она лочится и логин/пароль приходится вводить заново (N раз).
Я уважаю информационную безопасность, но для частной задачи хотелось бы не проходить крым/рым/медные трубы.

Неужели никому больше не требуется удаленно перезапускать Node-сервер?

Маэстро 13.02.2019 12:47

Цитата:

Сообщение от j0hnik (Сообщение 503582)
если нужно перегружать при изменении файлов поставьте nodemon если просто так от скуки то reload подойдет

этот текст был добавлен (отредатирован) уже после моего сообщения, поэтому дополню своё.
Спасибо за совет. Но можете подробнее? Как оперируя только одной вебстраницей сделать reload сервера?


Часовой пояс GMT +3, время: 05:19.