Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/26: Рейтинг темы: голосов - 26, средняя оценка - 5.00
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527

Перестали передаваться данные по API на VPS сервере

29.12.2020, 16:34. Показов 5208. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.

Есть сайт psihotip.fincult.ru на VPS

Всё работало отлично, после прохождения теста и нажатия на кнопку пользователь через API добавлялся на платформу GetCourse, потом был сбой сервера и теперь перестало работать.

1. При выполнении команды node /root/phycho/server.js выдает следующее
2. Вывод команды netstat -tulpn | grep LISTEN
3. Где посмотреть логи ошибок не знаю, если честно и куда они сохраняются
4. Может быть, проблема связана с тем, что места свободного почти не осталось, вывод команды vmstat
Вывод команды df -h

Код файла server.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const
  express = require('express'),
  bodyParser = require('body-parser'),
  cors = require('cors'),
  mngs = require('mongoose'),
  work = require('./app/work'),
  validData = require('./app/validation'),
  sendCourse = require('./app/getcourse/send'),
  createExcel = require('./app/excel/create'),
  saveUser = require('./app/excel/seeder'),
  redirect = require('./app/redirect'),
  rmdb = require('./app/excel/remove'),
  hbs = require('hbs'),
  newStat = require('./app/statistics/create'),
  updateStat = require('./app/statistics/update'),
  createStat = require('./app/statistics/excel'),
 
  app = express(), server_port = 80
 
mngs.connect(require("./app/database"), { useMongoClient: true })
 
let order = 0
 
app.set('views', __dirname + '/public')
app.set('view engine', 'hbs')
 
hbs.registerHelper('check', (val1, val2, option) => val1 === val2 ? option.fn(this) : option.inverse(this))
 
app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(express.static(__dirname + '/public'))
app.use(express.static(__dirname + '/excel'))
 
app.get('/', (req, res) => {
  let qr = req.query, result = qr.result, sex
  if (result !== undefined) {
    sex = result[0] === 'm' ? 1 : 0
  } else sex = 0
 
  const utm = {
    source: qr['utm_source'],
    medium: qr['utm_medium'],
    campaign: qr['utm_campaign']
  }
 
  order = 1 - order
 
  const version = order + 1
 
  newStat({ done: false, version })
 
    .then(id => res.render('index', { result, sex, utm, version, id }))
 
})
 
app.get('/test', (req, res) => res.send(req.query.soc))
 
app.post('/work', (req, res) => {
  let data = req.body
 
  // fs.writeFile(__dirname + '/memem.log', 'body');
  if (validData(data)) {
 
    let phychotype = work(data)
 
    redirect(res, data.sex, phychotype.data.total)
    
    saveUser(data, phychotype)
    sendCourse(data, phychotype)
  } else res.status(501).send()
 
})
 
app.get('/create', (req, res) => createExcel(res))
 
app.get('/stats', (req, res) => createStat(res))
 
app.patch('/lxcrfsoft', (req, res) => rmdb(res))
 
app.listen(server_port, () => console.log(`Сервер запущен -p ${server_port}`))

P.S. Не судите строго, в серверах не силен, но изучаю.
Заранее спасибо за ответы!


Спасибо заранее
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2020, 16:34
Ответы с готовыми решениями:

Не хотят передаваться данные из textBox в другой класс
Здравствуйте, у меня такой вопрос. Есть форма, на которой я ввожу какой-то текст и передаю его в другой класс по нажатию кнопки. Но...

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

Python на VPS сервере
Мне провайдер почистил сервер. Я хочу попробовать работу приложений на питоне. Однако при отправке на сервер запроса с именем скрипта он не...

42
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 17:06
Цитата Сообщение от Geramaster Посмотреть сообщение
При выполнении команды node /root/phycho/server.js выдает следующее
Не запускайте сервера от имени рута и не храните их данные в домашней директории рута. создайте для этого отдельного пользователя.


Цитата Сообщение от Geramaster Посмотреть сообщение
Где посмотреть логи ошибок не знаю, если честно и куда они сохраняются
Как вы перед этим запускали сервер? Если так как в первом шаге, то по закрытию SSH терминала процесс ноды был бы убит, и ваш сервер бы не работал.

Цитата Сообщение от Geramaster Посмотреть сообщение
Может быть, проблема связана с тем, что места свободного почти не осталось, вывод команды vmstat
Видимо пропустили его когда делали пост, я не вижу ничего кроме кода app.js

Цитата Сообщение от Geramaster Посмотреть сообщение
API добавлялся на платформу GetCourse, потом был сбой сервера и теперь перестало работать.
Мало информации. Перестало работать что? Отправка запроса и его обработка на ваш сервер? Или API GetCourse?
2
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 17:29  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Не запускайте сервера от имени рута и не храните их данные в домашней директории рута. создайте для этого отдельного пользователя.
А как правильно это будет сделать, можете подсказать, если это не сложно?
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Как вы перед этим запускали сервер? Если так как в первом шаге, то по закрытию SSH терминала процесс ноды был бы убит, и ваш сервер бы не работал.
Хм, я даже не знаю как ответить на этот вопрос, поддержка сама нам сервер перенесла и он работал.
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Видимо пропустили его когда делали пост, я не вижу ничего кроме кода app.js
Ссылки почему-то удалились, попробую сейчас через форматирование их вставить.
1. При выполнении команды node /root/phycho/server.js выдает следующее
2. Вывод команды netstat -tulpn | grep LISTEN
3. Где посмотреть логи ошибок не знаю, если честно и куда они сохраняются
4. Может быть, проблема связана с тем, что места свободного почти не осталось, вывод команды vmstat
Вывод команды df -h
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Мало информации. Перестало работать что? Отправка запроса и его обработка на ваш сервер? Или API GetCourse?
Со стороны ГетКурса все работает, как и раньше, поддержка это подтвердила.
Скорее всего, просто файл js перестал запускаться вот этот sendCourse = require('./app/getcourse/send'), , который прописан в файле server.js? вот его содержимое
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let sendRequest = (data, phyhotype) => {
 
  let
    formatData = require('./format'),
    request = require('request')
 
  require('request-debug')(request)
 
  request.post({
    url:'https://fincult.getcourse.ru/pl/api/users',
    headers: {
      'Accept': 'application/json; q=1.0, */*; q=0.1'
    },
    form: formatData(data, phyhotype)
  }, () => {})//, (err, response, body) => err ? console.log('Ошибка ГетКурс') : console.log('getcourse успешно'))
 
}
 
module.exports = sendRequest
И в этом файле ещё вызывается скрипт format.js, поддержка ГетКурс проверила файлы эти и синтаксис и проблем нет, что-то со стороны сервера не работает, вот содержимое его
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
const formatData = (data, phychotype) => {
 
  const
    request = require('request'),
    base64 = require('base-64'),
    utf8 = require('utf8'),
    updateStat = require('../statistics/update')
 
  let
    dr = string => typeof string === 'string' ? string.replace(/\./gi, '_') : string, // dotReplace
    sr = string => typeof string === 'string' ? string.replace(/ /gi, '_') : string, // spaceReplace
    answers = data.answers
    
    //console.log(data)
  
  setTimeout(() => updateStat(data.stat.id, { done: true, version: data.stat.version }), 3000)
  
  let params = {
    user: {
      email: data.email.trim(),
      first_name: dr(data.name),
      group_name: [`Тест_${phychotype.data.total_code}_${sr(phychotype.data.total)}`],
      addfields: {
        "Тест_Пол": +data.sex ? 'Мужской' : 'Женский',
        "Тест_Возраст": dr(data.age),
        "Тест_ПСИХОТИП": dr(phychotype.data.total),
        "Тест_Чем_для_вас_являются_деньги": dr(answers[3].text),
        "Тест_Рискнули_бы_вы_инвестировать_на_заемные_или_кредитные_деньги": dr(answers[5].text),
        "Тест_Застрахованы_ли_ваша_жизнь_и_здоровье": dr(answers[7].text),
        "Тест_Как_вы_оцениваете_свои_перспективы_увеличения_доходов": dr(answers[9].text),
        "Тест_Обучаетесь_ли_вы_профессиональным_навыкам_и_личной_эффективности": dr(answers[12].text),
        "Тест_Считаете_ли_Вы_что_создание_личного_финансового_плана": dr(answers[15].text),
        "Тест_Каков_ваш_основной_источник_дохода": dr(answers[17].text),
        "Тест_Разбираетесь_ли_Вы_в_фондовом_рынке_знаете_ли_что_такое_индвидуальный_инвестиционный_счет_ИИС_акции_блигации": dr(answers[18].text),
        "Тест_Вы_решили_создать_дополнительный_источник_дохода_к_основной_деятельности_Что_вы_выберете": dr(answers[19].text),
        "Тест_Считаете_ли_вы_что_нужно_учиться_управлять_своими_деньгами": dr(answers[20].text),
        "Тест_Каков_ваш_уровень_ежемесячного_дохода_если_сравнивать_со_средней_зарплатой_в_вашем_регионе": dr(answers[6].text),
        "Тест_На_что_вам_хватает_денег": dr(answers[14].text),
        "Тест_Контролируете_ли_вы_расходы": dr(answers[1].text),
        "Тест_Есть_ли_у_Вас_долги_и_или_кредиты": dr(answers[2].text),
        "Тест_На_сколько_месяцев_Вам_хватило_бы_финансовой_подушки_если_бы_Вы_лишились_дохода_но_тратили_деньги_как_сейчас": dr(answers[4].text),
        "Тест_Смогли_бы_вы_в_ближайшие_2_3_года_купить_квартиру_или_хорошую_машину": dr(answers[8].text),
        "Тест_Сберегаете_ли_Вы_определенную_часть_своего_дохода": dr(answers[10].text),
        "Тест_Какая_часть_от_ежемесячного_дохода_уходит_на_выплаты_по_долгам_и_кредитам": dr(answers[11].text),
        "Тест_Во_что_вы_инвестируете_свободные_деньги": dr(answers[13].text),
        "Тест_Умеете_ли_Вы_копить_деньги_на_крупные_покупки": dr(answers[16].text),
        "Тест_utm_source": data.utm.source,
          "Тест_utm_medium": data.utm.medium,
        "Тест_utm_campaign": data.utm.campaign,
        "Тест_АБ_тест_шапки": data.stat.version
      }
    }
  }
 
  return {
    key: 'A*******************************************1',
    action: 'add',
    params: base64.encode(utf8.encode(JSON.stringify(params)))
  }
 
}
 
module.exports = formatData
=====

Понимаю, что очень много информации и бесплатно помогать вам нет смысла, но мне бы хотелось тоже попутно самому учиться\разбираться, поэтому заранее спасибо за помощь!
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 17:36
Цитата Сообщение от Geramaster Посмотреть сообщение
Ссылки почему-то удалились, попробую сейчас через форматирование их вставить.
1. При выполнении команды node /root/phycho/server.js выдает следующее
2. Вывод команды netstat -tulpn | grep LISTEN
3. Где посмотреть логи ошибок не знаю, если честно и куда они сохраняются
4. Может быть, проблема связана с тем, что места свободного почти не осталось, вывод команды vmstat
Вывод команды df -h
Все равно ссылок нет(

Цитата Сообщение от Geramaster Посмотреть сообщение
А как правильно это будет сделать, можете подсказать, если это не сложно?
Это вам так "поддержка" настроила или как? Обычно я например создаю пользователя отдельного, в его домашней директории создаю папку ~/app, туда клонирую мой гит репозиторий, устанавливаю зависимости через npm, и запускаю через какой-то инструмент по типу pm2, который в фоне запустит сервер, будет его перезапускать автоматически если он упадет, и записывает логи и мониторит его потребление ресурсов.

Вот что то наподобии этого: https://www.digitalocean.com/c... u-18-04-ru

Цитата Сообщение от Geramaster Посмотреть сообщение
Скорее всего, просто файл js перестал запускаться вот этот sendCourse = require('./app/getcourse/send'), , который прописан в файле server.js? вот его содержимое
У вас функции разбросаны модульно по файлам, тяжело так сказать, не видя всей картины. Можете загрузить сюда полный исходник сервера?

Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Отправка запроса и его обработка на ваш сервер? Или API GetCourse?
Этот вопрос самый важный по идее. У вас есть какой-то фронтенд который собственно и отправляет запрос на ваш сервер? Если он отправляет, надо смотреть какой ответ приходит. Может запросы вообще не доходят до вашего сервера.
1
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 18:04  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Все равно ссылок нет(
Странно, сейчас картинки тогда прикреплю
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Это вам так "поддержка" настроила или как? Обычно я например создаю пользователя отдельного, в его домашней директории создаю папку ~/app, туда клонирую мой гит репозиторий, устанавливаю зависимости через npm, и запускаю через какой-то инструмент по типу pm2, который в фоне запустит сервер, будет его перезапускать автоматически если он упадет, и записывает логи и мониторит его потребление ресурсов.
Вот что то наподобии этого: https://www.digitalocean.com/c... u-18-04-ru
Честно говоря, это было очень давно и даже не вспомню почему именно так все настроено.
За ссылку с инструкцией спасибо большое, но т.к. у нас уже все настроено, то могу "сбить" всё и будет хуже, поэтому даже не знаю как и с чего будет правильнее начать.
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
У вас функции разбросаны модульно по файлам, тяжело так сказать, не видя всей картины. Можете загрузить сюда полный исходник сервера?
Подскажите, пожалуйста, а что значит загрузить полный исходник сервера? Все файлы имеете ввиду?
Не знаю даже как скопировать все файлы и сделать бекап, т.к. копирование файлов происходит очень долго через программу WinSCP даже по протоколу SFTP.
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Этот вопрос самый важный по идее. У вас есть какой-то фронтенд который собственно и отправляет запрос на ваш сервер? Если он отправляет, надо смотреть какой ответ приходит. Может запросы вообще не доходят до вашего сервера.
Собственно, вот на сайте есть тест http://psihotip.fincult.ru/ и после нажатия на кнопку "Получить" и вызывается файлы server.js, из которого и вызываются файлы send.js и format.js и т.п. (если я правильно все понимаю).

Ранее вот эти команды вводил поочередно, перезагружал сервер и работало (давно человек смотрел и такую рекомендацию давал)
Code
1
2
3
service mongod start
pm2 start /root/phycho/server.js --watch
node /root/phycho/server.js
P.S. Может быть, ещё не работает, т.к. 80 порт занят процессом node?

Спасибо вам заранее, что отвечаете и помогаете
Миниатюры
Перестали передаваться данные по API на VPS сервере   Перестали передаваться данные по API на VPS сервере   Перестали передаваться данные по API на VPS сервере  

Перестали передаваться данные по API на VPS сервере  
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 18:15
Лучший ответ Сообщение было отмечено Geramaster как решение

Решение

Geramaster, ага, так у вас пм2.

Code
1
2
3
service mongod start
pm2 start /root/phycho/server.js --watch
node /root/phycho/server.js
3 команда не будет выполнена, потому что сервер запускается второй командой и уже там начинает слушать 80 порт. 3 команда вообще как бы лишняя.

Проблема думаю не с памятю, поскольку на диске места достаточно, а если бы не хватало озу то ошибка была бы в стиле "Out of memory".

покажите вывод pm2 status, pm2 logs server


Отправил по ссылке тестовую заявку, запрос на /work завершился с кодом 200, т.е. это проблема скорее всего именно в коде сервера.

Логи долнжы сказать что не так.
2
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 18:44  [ТС]
Сейчас пробовал вызвать команды, которые вы попросили, но они долго обрабатывались, сейчас перезагрузил сервер через личный кабинет и сразу ввел ваши команды pm2 status, pm2 logs server.
Потом я ввел команду pm2 start /root/phycho/server.js --watch и выполнил команды, которые выше, картинку прикрепляю с результатом выводов.

P.S. Мне кажется уже ситуация начинает проясняться, до этого не знал этих команд
Спасибо вам ещё раз.

Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Отправил по ссылке тестовую заявку, запрос на /work завершился с кодом 200, т.е. это проблема скорее всего именно в коде сервера.
Файлы мы не изменяли, ни такие всегда у нас были.
Миниатюры
Перестали передаваться данные по API на VPS сервере   Перестали передаваться данные по API на VPS сервере   Перестали передаваться данные по API на VPS сервере  

0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 18:55
Geramaster, как видите там есть две ошибки GetCourse, добавьте вывод самой ошибки от апи чтобы знать что именно не так.

Ну а последний скрин - попробуйте остановить сервер (pm2 stop server), через netstat или с помощью lsof -i :3000 узнать PID процесса который занимает порт, потом убивате его kill -9 <pid> и запускаете снова сервер (pm2 start server). Дальше уже нужно вам правильнее сделать логгирование, чтобы не просто писало "ой, все", а чтобы писало время когда это произошло, какая ошибка произошла, и что при этом было отправлено серверу геткурс.
2
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 18:57  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Geramaster, как видите там есть две ошибки GetCourse, добавьте вывод самой ошибки от апи чтобы знать что именно не так.
Хм, а не подскажете как это сделать?
Или уже сильно наглею?..

Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Ну а последний скрин - попробуйте остановить сервер (pm2 stop server), через netstat или с помощью lsof -i :3000 узнать PID процесса который занимает порт, потом убивате его kill -9 <pid> и запускаете снова сервер (pm2 start server). Дальше уже нужно вам правильнее сделать логгирование, чтобы не просто писало "ой, все", а чтобы писало время когда это произошло, какая ошибка произошла, и что при этом было отправлено серверу геткурс.
И тут, к сожалению, тоже мало опыта, чтобы реализовать правильное логгирование, это тоже сложно делается?
0
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 19:04  [ТС]
Вот выполнил команды, указанные выше вами.
Только я так понял, что нас интересует порт не 3000, а 80, верно?
Скрин прикрепляю.
Миниатюры
Перестали передаваться данные по API на VPS сервере  
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 19:06
Цитата Сообщение от Geramaster Посмотреть сообщение
Хм, а не подскажете как это сделать?
Или уже сильно наглею?..
JavaScript
1
//, (err, response, body) => err ? console.log('Ошибка ГетКурс') : console.log('getcourse успешно'))
вот здесь вы закомментили console.log('Ошибка ГетКурс'), можно просто изменить на console.log('Ошибка ГетКурс: ', err, body) и уже получше будет

Цитата Сообщение от Geramaster Посмотреть сообщение
И тут, к сожалению, тоже мало опыта, чтобы реализовать правильное логгирование, это тоже сложно делается?
Ну если у вас приложение не огромное, можно и обойтись обычними вызовами console.log, я имею ввиду чтобы вы выводили как можно больше информации, которая может потом помочь в решении проблемы, в этом случае не хватает отметки времени когда произошла ошибка, и сообщения что именно пошло не так. В более-менее серьезных приложениях можно использовать "зрелые" логгеры по типу winston/log4js/pino.


Сначала попробуйте просто избавиться от ошибки EADDRINUSE

Добавлено через 28 секунд
Geramaster, да, извиняюсь, порт 80.
2
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 19:19  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
вот здесь вы закомментили console.log('Ошибка ГетКурс'), можно просто изменить на console.log('Ошибка ГетКурс: ', err, body) и уже получше будет
Вот так сделал, но логи не изменились или что-то я не так делаю.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let sendRequest = (data, phyhotype) => {
 
  let
    formatData = require('./format'),
    request = require('request')
 
  require('request-debug')(request)
 
  request.post({
    url:'https://fincult.getcourse.ru/pl/api/users',
    headers: {
      'Accept': 'application/json; q=1.0, */*; q=0.1'
    },
    form: formatData(data, phyhotype)
  }, () => {})//, (err, response, body) => err ? console.log('Ошибка ГетКурс: ', err, body) : console.log('getcourse успешно'))
 
}
 
module.exports = sendRequest
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Ну если у вас приложение не огромное, можно и обойтись обычними вызовами console.log, я имею ввиду чтобы вы выводили как можно больше информации, которая может потом помочь в решении проблемы, в этом случае не хватает отметки времени когда произошла ошибка, и сообщения что именно пошло не так. В более-менее серьезных приложениях можно использовать "зрелые" логгеры по типу winston/log4js/pino.
Всё равно пока не понимаю как это сделать, есть какой-то файл log.txt,
Code
1
{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"fincult.getcourse.ru","port":443,"hostname":"fincult.getcourse.ru","hash":null,"search":null,"query":null,"pathname":"/pl/api/users","path":"/pl/api/users","href":"https://fincult.getcourse.ru/pl/api/users"},"method":"POST","headers":{"Accept":"application/json; q=1.0, */*; q=0.1","content-type":"application/x-www-form-urlencoded","content-length":2683}}
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Сначала попробуйте просто избавиться от ошибки EADDRINUSE
Для этого нужно сделать, как вы написали ранее, остановить pm2 , потом убить этот процесс на порту 80 и потом запустить заново pm2 start /root/phycho/server.js --watch и проверить логи?
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 19:35
Цитата Сообщение от Geramaster Посмотреть сообщение
Для этого нужно сделать, как вы написали ранее, остановить pm2 , потом убить этот процесс на порту 80 и потом запустить заново pm2 start /root/phycho/server.js --watch и проверить логи?
да

Цитата Сообщение от Geramaster Посмотреть сообщение
Вот так сделал, но логи не изменились или что-то я не так делаю.
вам нужно после изменения кода отправить еще раз заявку и посмотреть что будет в ответе от геткурс
2
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 20:21  [ТС]
Цитата Сообщение от Geramaster Посмотреть сообщение
Вот так сделал, но логи не изменились или что-то я не так делаю.
КодВыделить код
let sendRequest = (data, phyhotype) => {
let
formatData = require('./format'),
request = require('request')
require('request-debug')(request)
request.post({
url:'https://fincult.getcourse.ru/pl/api/users',
headers: {
'Accept': 'application/json; q=1.0, */*; q=0.1'
},
form: formatData(data, phyhotype)
}, () => {})//, (err, response, body) => err ? console.log('Ошибка ГетКурс: ', err, body) : console.log('getcourse успешно'))
}
module.exports = sendRequest
Подскажите, а правильно я внес изменения в код, как вы посоветовали?

Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
вам нужно после изменения кода отправить еще раз заявку и посмотреть что будет в ответе от геткурс
Сделал, как вы написали, логи прикрепляю.
И заметил, что после такой процедуры и запуска pm2 командой pm2 start server параметр watching стал со статусом disable (скрин прикрепляю).

Спасибо
Миниатюры
Перестали передаваться данные по API на VPS сервере   Перестали передаваться данные по API на VPS сервере  
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 20:28
Geramaster, watch просто автоматически перезапускает сервер когда какой-то из исходный файлов изменился. чтобы перезапустить сервер вручную можно выполнить команду pm2 reload server.

на первом скрине у вас что то много вывело в поток для ошибок.

выполните:

Code
1
pm2 logs server --lines 3000 --nostream > logs.txt
Файл logs.txt который попробуйте загрузить сюда. Если не получиться, то просто уберите "> logs.txt" и посмотрите полный вывод ошибки
2
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 20:46  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Файл logs.txt который попробуйте загрузить сюда. Если не получиться, то просто уберите "> logs.txt" и посмотрите полный вывод ошибки
Подскажите, пожалуйста, а куда сохраняется этот файл? Команда вроде выполнилась, а файл найти не могу.
Ввел команду без указания названия файла, очень много было текста, вот:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
0|server   | Error: listen EADDRINUSE :::80
0|server   |     at Object._errnoException (util.js:1024:11)
0|server   |     at _exceptionWithHostPort (util.js:1046:20)
0|server   |     at Server.setupListenHandle [as _listen2] (net.js:1354:14)
0|server   |     at listenInCluster (net.js:1395:12)
0|server   |     at Server.listen (net.js:1479:7)
0|server   |     at Function.listen (/root/phycho/node_modules/express/lib/application.js:618:24)
0|server   |     at Object.<anonymous> (/root/phycho/server.js:81:5)
0|server   |     at Module._compile (module.js:612:30)
0|server   |     at Object.Module._extensions..js (module.js:623:10)
0|server   |     at Module.load (module.js:531:32)
0|server   |     at tryModuleLoad (module.js:494:12)
0|server   |     at Function.Module._load (module.js:486:3)
0|server   |     at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:83:21)
0|server   |     at Module._compile (module.js:612:30)
0|server   |     at Object.Module._extensions..js (module.js:623:10)
0|server   |     at Module.load (module.js:531:32)
0|server   | { request:
0|server   |    { debugId: 1,
0|server   |      uri: 'https://fincult.getcourse.ru/pl/api/users',
0|server   |      method: 'POST',
0|server   |      headers:
0|server   |       { Accept: 'application/json; q=1.0, */*; q=0.1',
0|server   |         host: 'fincult.getcourse.ru',
0|server   |         'content-type': 'application/x-www-form-urlencoded',
0|server   |         'content-length': 6185 },
0|server   |      body: 'key=A************************************' } }
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 21:26
Цитата Сообщение от Geramaster Посмотреть сообщение
Подскажите, пожалуйста, а куда сохраняется этот файл? Команда вроде выполнилась, а файл найти не могу.
он сохраняется в текущую папку, открытая в терминале. По sftp можете его по идеи загрузить

Добавлено через 4 минуты
Geramaster, я вручную выполнил тот запрос который выведен в логах, он у меня успешно выполнился и вернул результат. Вам должно было вывести в консоль "getcourse успешно"
2
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 21:48  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Geramaster, я вручную выполнил тот запрос который выведен в логах, он у меня успешно выполнился и вернул результат. Вам должно было вывести в консоль "getcourse успешно"
Получилось файл найти с логами, вот он logs.zip
Цитата Сообщение от Geramaster Посмотреть сообщение
}, () => {})//, (err, response, body) => err ? console.log('Ошибка ГетКурс: ', err, body) : console.log('getcourse успешно'))
Подскажите, пожалуйста, а что тут не так, не выводит подробнее логи с ошибками, было бы хорошо, если были бы подробности.

Спасибо
0
 Аватар для Geramaster
25 / 7 / 1
Регистрация: 21.04.2010
Сообщений: 527
29.12.2020, 21:55  [ТС]
И, кстати, команда pm2 logs server выводит старые логи (скриншот прилагаю), т.к. ID? которые там перечислены - эти пользователи были добавлены по API в ГетКурс, только это было в начале года, интересно почему логи старые отображаются.
Миниатюры
Перестали передаваться данные по API на VPS сервере  
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
29.12.2020, 21:55
Geramaster, давайте еще раз, что с проблемой? Сервер как я понял запустить удалось, что не работает?
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.12.2020, 21:55
Помогаю со студенческими работами здесь

OpenVPN в CentOS 6 на VPS сервере
Купил VPS сервер нa CentOS 6 . Установил openvpn по одной из статей гугла. При включении VPN на самом сервере все работает нормально, логи...

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

Поднять VPS на собственном сервере (дома)
В исследовательских целях потребовался VPS для: Использования его в как хостинга для сайта, к которому будут осуществляться...

Настойка Laravel на VPS сервере Ubuntu
Всем привет! Не могу понять почему на локалке все работает - а на vps сервере нет! Перенес проект на vps сервер. Но почему то не...

FTP доступ в папку на VPS сервере
Пытаюсь создать юзера с FTP доступом в одну из папок на VPS сервере. Задача - дать юзеру возможность размещать в папке файл, текст из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru