Amazon ec2 pm2部署在完全获取后失败

Amazon ec2 pm2部署在完全获取后失败,amazon-ec2,deployment,pm2,Amazon Ec2,Deployment,Pm2,我想在我的ec2实例上部署一个简单的应用程序,但出现以下错误: bash: line 0: cd: /home/ubuntu/source: No such file or directory fetch failed Deploy failed 1 我不明白为什么我没有在虚拟机或本地机上创建“源”目录。就像pm2自己创造的一样。有人能解释一下为什么会有它吗?我如何才能成功地部署它 My ecosystem.config.js: module.exports = { apps

我想在我的ec2实例上部署一个简单的应用程序,但出现以下错误:

bash: line 0: cd: /home/ubuntu/source: No such file or directory

  fetch failed

Deploy failed
1

我不明白为什么我没有在虚拟机或本地机上创建“源”目录。就像pm2自己创造的一样。有人能解释一下为什么会有它吗?我如何才能成功地部署它

My 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


script
参数需要实际的脚本路径,而不是目录

您应该将其更改为主脚本的名称,例如:
script:'./index.js'

您还应该将
deploy.production.path
更新为类似
/home/ubuntu/project


如中所述,
脚本
期望脚本的
路径启动

我也遇到了同样的问题并得到了这个线程,但是上面的回答/评论对我没有多大帮助。PM2网站上也没有有用的文件。因此,我从初始阶段开始逐一执行所有步骤:

  • 在对任何现有文件夹调用
    update
    命令之前,先执行
    setup
    。因为PM2创建了自己的文件夹结构:[当前、源、共享]()
  • pm2部署生态系统.config.js阶段设置

  • 如果要部署新代码,请使用以下命令:
  • pm2部署生态系统.config.js阶段更新——强制

    为什么要强制执行 您的本地系统中可能有一些更改没有被推送到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': ''
        }
      }
    

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

    我更新了脚本和路径,但仍然是相同的错误:/home/ubuntu/puk/source:没有这样的文件或控制器我不知道这个源目录来自哪里。app中的
    name
    参数也重命名了吗?它必须是一个js文件名,而不仅仅是
    puk
    我以为名称只是一个应用程序的名称,而不是文件名。对不起,我指的是
    脚本
    参数是的,我也这么做了,但同样的错误也发生了。我检查了ssh密钥和已知主机,但由于某些原因仍然无法部署它:/