child_process未在ec2 nodejs服务器上执行

时间:2019-03-18 08:49:11

标签: node.js ubuntu

我的节点服务器位于运行Ubuntu的ec2实例上。

我在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 :(得分:0)

所以,我终于解决了这个问题。

当我以ubuntu用户身份登录时,生成了ssh,然后将其存储在Gitlab中。

我正在使用创建问题的sudo打开第二台服务器(这将杀死并重新启动主服务器)。

现在一切似乎都正常了。

相关问题