完全提取后,pm2部署失败

时间:2019-06-23 15:48:41

标签: amazon-ec2 deployment pm2

我想将一个简单的应用程序部署到我的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

2 个答案:

答案 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网站上也没有有用的文档。所以我从头开始一步一步地做完:

  1. 在任何现有文件夹上调用setup命令之前,先执行update。因为 PM2创建了自己的文件夹结构:[当前,源,共享] Read here

pm2部署ecosystem.config.js阶段设置

  1. 当您要部署新代码时,请使用以下命令:

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': ''
    }
  }

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