我的节点服务器位于运行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 &
答案 0 :(得分:0)
所以,我终于解决了这个问题。
当我以ubuntu用户身份登录时,生成了ssh,然后将其存储在Gitlab中。
我正在使用创建问题的sudo
打开第二台服务器(这将杀死并重新启动主服务器)。
现在一切似乎都正常了。