我想将一个简单的应用程序部署到我的ec2实例,但是出现此错误:
bash: line 0: cd: /home/ubuntu/source: No such file or directory
fetch failed
Deploy failed
1
当我没有在虚拟机或本地计算机上创建“源”目录时,我不明白为什么会有该目录。就像pm2自己创建一样。有人可以解释为什么会在那里吗?如何成功部署它?
我的ecosystem.config.js:
module.exports = {
apps: [{
name: 'puk',
script: 'project/'
}],
deploy: {
production: {
user: 'ubuntu',
host: 'ec2-35-180-119-129.eu-west-3.compute.amazonaws.com',
key: '~/.ssh/id_rsa.pub',
ref: 'origin/master',
repo: 'git@github.com:nalnir/pukinn.git',
path: '/home/ubuntu/',
'post-deploy': 'npm install && pm2 startOrRestart ecosystem.config.js'
}
}
}
pm2部署生产命令后的完整日志:
--> Deploying to production environment
--> on host ec2-35-180-119-129.eu-west-3.compute.amazonaws.com
○ deploying origin/master
○ executing pre-deploy-local
○ hook pre-deploy
○ fetching updates
○ full fetch
bash: line 0: cd: /home/ubuntu/source: No such file or directory
fetch failed
Deploy failed
1
答案 0 :(得分:0)
script
参数需要实际的脚本路径,而不是目录
您应将其更改为您的主脚本的名称,例如:script: './index.js'
您还应该将deploy.production.path
更新为/home/ubuntu/project
如Ecosystem file reference中所述,script
期望Path of the script to launch
答案 1 :(得分:0)
我也遇到了同样的问题并得到了这个线索,但是上面的答案/评论对我不是很有帮助。 PM2网站上也没有有用的文档。所以我从头开始一步一步地做完:
setup
命令之前,先执行update
。因为 PM2创建了自己的文件夹结构:[当前,源,共享] (Read here)pm2部署ecosystem.config.js阶段设置
pm2部署ecosystem.config.js阶段更新--force
为什么要--force
?
您可能会在本地系统中进行一些更改,这些更改没有推送到git存储库中,并且由于deploy脚本通过git pull获取更新,因此这些更改将不在您的服务器上。如果要在不推送任何数据的情况下进行部署,则可以附加--force
选项:
我在ecosystem.config.js文件中的部署对象:
deploy : {
stage : {
// Deploy New: pm2 deploy ecosystem.config.js stage setup
// Update: pm2 deploy ecosystem.config.js stage update --force
user : '_MY_SERVER_USER_NAME_', // remote server username
host : '_MY_REMOTE_SERVER_IP_', // remote server ip
ref : 'origin/stage', // remote repo name
repo : 'git@bitbucket.org:_MY_REPO_SSH_CLONE_URL_.git', // repo url
path : '_REMOTE_DIRECTIVE_', // src root paths like /home/ubuntu/
'pre-deploy-local': '',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --only MyAppName',
'pre-setup': ''
}
}
我希望,这会对其他人有所帮助。