【问题标题】:codedeploy appspec.yml failed to copy files to destinationcodedeploy appspec.yml 无法将文件复制到目标
【发布时间】:2019-03-07 18:59:35
【问题描述】:

appspe.yml 脚本:

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/
permissions:
  - object: /home/ubuntu/
    owner: root
    group: root
    mode: 777
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
    - location: scripts/start_server.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root

很遗憾,它没有将文件复制到 /home/ubuntu/ 目录。有了这个,我在通过 codedeploy 部署时遇到以下错误

LifecycleEvent - BeforeInstall 脚本 - 脚本/install_dependencies.sh 脚本 - 脚本/start_server.sh [stderr]cp:无法统计“脚本/gunicorn.service”:没有这样的文件或 目录 [stderr] 无法启动 gunicorn.service: Unit gunicorn.service 未找到。 [stderr]执行操作失败:否 此类文件或目录 [stderr] 无法重新启动 gunicorn.service: 未找到单位 gunicorn.service。 [stderr]cp:无法统计 'scripts/LIMA':没有这样的文件或目录 [stderr]ln:创建失败 符号链接“/etc/nginx/sites-enabled/LIMA”:文件存在 [stderr]错误:端口错误

这里出了什么问题?

【问题讨论】:

  • 部署新代码时如何覆盖现有文件?我在 appspec.yml 文件部分添加了overwrite:yes,但没有用
  • 您可以将脚本发布到要点吗?你想安装独角兽和nginx吗?看起来依赖脚本没有运行并导致其他脚本失败。

标签: amazon-web-services aws-code-deploy aws-codepipeline


【解决方案1】:

我遇到了同样的问题。
当我将“BeforeInstall”挂钩中的命令移动到“AfterInstall”挂钩时,它对我有用。

【讨论】:

    【解决方案2】:

    您的错误似乎属于以下类别:

    1. 缺少文件。 ([stderr]cp:无法统计'scripts/gunicorn.service':没有这样的文件或目录)。 调试:检查文件是否确实存在于您的部署包中。在此处检查捆绑包本身和日志:less /opt/codedeploy-agent/deployment-root/deployment-group-ID/deployment-ID/。 See here

    2. 创建符号链接失败,因为它已经存在。 ([stderr]ln:无法创建符号链接'/etc/nginx/sites-enabled/LIMA':文件存在)。这与文件覆盖无关。可能在您的脚本中某处有一个“ln”命令来创建符号链接。 调试:修改脚本以测试符号链接是否存在,然后创建它。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 2016-03-15
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      相关资源
      最近更新 更多