amazon-ec2 - 完整获取后 pm2 部署失败
问题描述
我想将一个简单的应用程序部署到我的 ec2 实例,但出现此错误:
bash: line 0: cd: /home/ubuntu/source: No such file or directory
fetch failed
Deploy failed
1
我不明白为什么没有在我的虚拟机或本地机器上创建“源”目录。就像 pm2 自己创建的一样。有人可以解释它为什么存在以及如何成功部署它吗?
我的生态系统.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 deploy production 命令后的完整日志:
--> 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
解决方案
我遇到了同样的问题并得到了这个帖子,但上面的答案/评论对我来说不是很有帮助。PM2 网站上也没有有用的文档。所以我从最初的所有步骤一一做:
- 在对任何现有文件夹
setup
调用命令之前先执行此操作。update
因为PM2 创建了自己的文件夹结构:[Current, Source, Shared] (阅读这里)
pm2 部署生态系统.config.js 阶段设置
- 当您想部署新代码时,请使用以下命令:
pm2 部署生态系统.config.js 阶段更新--force
为什么--force
?
您的本地系统中可能有一些未推送到您的 git 存储库中的更改,并且由于部署脚本通过 git pull 获取更新,因此它们不会在您的服务器上。如果要在不推送任何数据的情况下进行部署,可以附加--force
选项:
我在生态系统.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': ''
}
}
我希望,它会对其他人有所帮助。
推荐阅读
- gmail - 如何使用 GMAIL API 仅获取具有模式标记(如事务标记)的电子邮件?
- python - 如何按文件扩展名的有序列表对 python 文件列表进行排序
- c++ - 如何以准确的方式找到标记的中心?
- javascript - 检查 id jquery 对象是否为空
- php - 将字符串拆分为多个部分 Laravel
- html - 基于前一个元素中的内容的文本的XPath?
- sql - 创建 CTXCAT 索引时如何定义表空间
- c# - 在 Catch 子句中使用 GoTo 重申 Try 语句?
- sql - sql oracle goup by 日期可能为空值
- django - 清理后的数据仅显示最后一个表单集数据