child_process не выполняется на сервере ec2 nodejs - PullRequest
2 голосов
/ 18 марта 2019

У меня есть сервер узлов, который находится на экземпляре ec2 под управлением Ubuntu.

Я поддерживаю код на Gitlab и загружаю туда обновления.

Процесс обновления вручную состоит в том, чтобы просто извлечь изменения и перезапуститьсервер, который я хочу автоматизировать, и для этого я использую Gitlab webhook и создал простую конечную точку, которая выполняет:

 childProcess.exec('git pull && bash deploy.sh',{ cwd: '/home/ubuntu/someXyzFolder' }, function(err, stdout, stderr){
                if (err) {
                 return res.status(500).send(err);
                }
                res.status(200).send("OK");
              });

Таким образом childProcess не может выполнить эти команды в качестве своего состояния отправки 500 с этой ошибкой:

{"killed":false,"code":1,"signal":null,"cmd":"git pull && bash deploy.sh"}

несколько человек пострадали от этой проблемы и решили ее, создав своп из-за нехватки памяти

Я выполнил на своем сервере команду free, которая ответила

ubuntu@ip-xxx-xxx-xxx-xxx:/var/somefolder/somefolder$ free
              total        used        free      shared  buff/cache   available
Mem:        1007532      404276      381512         772      221744      452944
Swap:             0           0           0

В соответствии с этим у меня должно быть достаточно оперативной памяти, верно?

Я не уверен, убивает ли Linux oom это или что-то еще.

Дайте мне знать ваши мысли об этом.

-Спасибо

РЕДАКТИРОВАТЬ: вот мой deploy.sh

git pull
npm install
gulp build
sudo killall forever
sudo killall node

rm /removeTheSymlinkOfTheCurrentBuildFolder
ln -s /makeaNewFolderWithCurrentTimeStamp/`ls -ltr /some  | tail -n 1 | awk {' print $9 '}` /andMakeItCurrent

sudo forever /currentBuildFolder/server.js &

1 Ответ

0 голосов
/ 20 марта 2019

Итак, я наконец-то исправил проблему.

ssh был сгенерирован при входе в систему как пользователь ubuntu и затем сохранен в Gitlab.

Я открывал свой второй сервер (которыйубил бы и перезапустил бы мой главный сервер), используя sudo, который создавал проблему.

Теперь все, кажется, работает нормально.

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