es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

CodeDeploy falla “stop: comando no encontrado”.

Estoy tratando de implementar una aplicación de React a través de CodePipeline; mis 3 pasos son:

  • Origen de Github (correcto)
  • CodeBuild (correcto)
  • CodeDeploy (falla)

buildspec.yml
version: 0.2
phases:
pre_build:
commands:
- npm install
- npm install -g webpack-cli
build:
commands:
- echo Comienza la construcción en `date`
- echo Compilando
- webpack --config config/webpack.prod.js --env BACKEND_URL=$BACKEND_URL
post_build:
commands:
- echo Construcción completada en `date`
artifacts:
files:
- build/**/*
- public/**/*
- dist/**/*
- src/**/*
- config/**/*
- scripts/**/*
- package.json
- appspec.yml

appspec.yml
“`
version: 0.0
os: linux

files:
– source: /
destination: /home/ec2-user/server

permissions:
– object: /
pattern: "**"
owner: ec2-user
group: ec2-user

hooks:

ApplicationStop:
– location: scripts/app_stop.sh
timeout: 300
runas: root

BeforeInstall:
– location: scripts/before_install.sh
timeout: 300
runas: root

ApplicationStart:
– location: scripts/app_start.sh
timeout: 300
runas: root“`

app_stop.sh
“`#!/bin/bash

sudo systemctl stop nginx“`

before_install.sh
“`#!/bin/bash

cd /home/ec2-user/server
amazon-linux-extras install nginx1“`

app_start.sh
“`#!/bin/bash

cd /home/ec2-user/server
cp build/nginx.conf /etc/nginx/nginx.conf
cp -R dist /var/www/html/taxi-booker
nginx“`

CodeDeploy actualmente está fallando con este registro en el paso “ApplicationStop”. La primera vez que ejecuté esta canalización, pasó sin problemas (sin ApplicationStop), sin embargo, si lo ejecuto sin este paso, el puerto de nginx ya está en uso.

Evento del ciclo de vida – ApplicationStop
Script – scripts/app_stop.sh
[stderr]/opt/codedeploy-agent/deployment-root/9ce189ed-1f48-4cdb-b01f-e7cd8986c8b7/d-QUYBUBMKC/deployment-archive/scripts/app_stop.sh: línea 2: stop: comando no encontrado

¿Alguna idea de cuál es la forma adecuada de implementar con nginx? Muchas gracias.

Registros: aquí

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un problema con el script app_stop.sh, ya que no puede encontrar el comando stop. Esto probablemente se debe a que el script necesita tener la ruta completa al comando systemctl, que se encuentra en el directorio /bin. Para solucionar esto, puedes modificar app_stop.sh para incluir la ruta completa:

    #!/bin/bash
    sudo /bin/systemctl stop nginx
    

    Esto debería permitir que el gancho ApplicationStop se ejecute correctamente y detenga el servicio de nginx antes de implementar la nueva versión de la aplicación. Además, cabe mencionar que el script app_start.sh asume que el archivo build/nginx.conf existe y está configurado correctamente para tu entorno. Asegúrate de que este archivo esté presente y contenga la configuración correcta antes de continuar con la implementación.

Comments are closed.