amazon-ec2 - 完全获取后 pm2 部署失败

标签 amazon-ec2 deployment 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 网站上也没有有用的文档。所以我从一开始就一步一步地做:

  1. 在对任何现有文件夹调用更新 命令之前,先执行设置。因为 PM2 创建了自己的文件夹结构:[Current, Source, Shared] ( Read here )

pm2 deploy ecosystem.config.js stage setup

  1. 当您想部署新代码时,请执行以下命令:

pm2 deploy ecosystem.config.js stage update --force

为什么--force
您可能在本地系统中有一些更改没有推送到您的 git 存储库中,并且由于部署脚本通过 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': ''
    }
  }

我希望,它会对其他人有所帮助。

关于amazon-ec2 - 完全获取后 pm2 部署失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56725488/

相关文章:

java - 通过 kubernetes 和 helm 将单个 docker 镜像部署为 2 个不同的服务。更改应用程序的上下文路径

.net - 您使用什么解决方案在部署后自动测试 Web 应用程序的运行状况或有效性? (。网)

amazon-web-services - 如何使用公共(public)IP获取Windows Server的SSL证书?

amazon-web-services - 使用 ansible 启动 aws ec2 实例的最佳方式

amazon-web-services - 如何在 cli 上的 ec2 输出中使用过滤器

c++ - Rundll32加载顺序问题

node.js - PM2 生产优化

node.js - 如何重置pm2的id?

restart - pm2 使用通配符重新加载/重新启动

php - Codeigniter:无法找到模型