2013-03-17 24 views
9

Sto provando a distribuire un'app node.js utilizzando il servizio Amazon Elastic Beanstalk. Seguendo questo tutorial (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.sdlc.html), sono riuscito a distribuire l'app. Tuttavia, una volta caricato su Amazon, l'applicazione non è stata avviata. Esaminando i registri mostrami il seguente errore: "Impossibile eseguire l'installazione di npm".Problema di distribuzione Node.js su Amazon Elastic Beanstalk

Qualcuno ha una buona idea di quale potrebbe essere il problema? L'applicazione funziona perfettamente a livello locale.

Grazie in anticipo per il vostro aiuto!

risposta

14

Avevo lo stesso problema e la soluzione di Kevin ha risolto il problema per me, ma ne ho introdotto un altro: anche le nuove istanze generate da EB per il ridimensionamento automatico necessitano della configurazione manuale. Questa è la modifica al metodo di Kevin che ho fatto per risolvere entrambi i problemi:

Un altro modo per risolvere il problema di Kevin è aggiungere i pacchetti richiesti a un file di configurazione per la tua applicazione. Crea un file di configurazione con estensione.config (ad esempio, myapp.config) e inseriscilo in una directory di primo livello .ebextensions del pacchetto di origine. Per richiedere il pacchetto openssl-devel, includere queste righe nel file di configurazione:

packages: 
    yum: 
     openssl-devel: [] 

Per i dettagli su dove il file di configurazione va: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_custom_container.html

e dettagli su inclusi i pacchetti (e più) nel file di configurazione: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

+2

Eccellente aggiunta! Grazie –

+0

Ho anche dovuto aggiungere: 'gcc',' make', 'libxml2' e' libxml2-devel' per far funzionare la mia installazione di npm, ecco come appare la sezione yum nel mio app.config: [npm install error ] (https://forums.aws.amazon.com/thread.jspa?messageID=437520񪴐). – shaond

+4

Salve @sHz, sto riscontrando di nuovo lo stesso problema con un altro progetto. Devo aggiungere nuovamente pacchetti aggiuntivi, ma mi piacerebbe davvero evitare tentativi ed errori per trovare quelli corretti. Come hai capito le dipendenze di cui avevi bisogno? – jakeorr

1

Ho scoperto qual era il problema. Ecco la spiegazione.

Il motivo per cui il gestore pacchetti npm non è riuscito a installare alcuni pacchetti era dovuto al fatto che alcuni pacchetti richiedevano innanzitutto l'installazione di librerie di linux (ad esempio OpenSSL-devel). Per risolvere questo problema, ho dovuto:

1. SSH alla mia istanza EC2 associato al mio esempio Node.js Elastic Beanstalk

In primo luogo, rimuovere il "Protection Termination" sul istanza EC2 (Fare clic sull'istanza EC2, quindi cercare "Cambia protezione terminazione", quindi aggiungere un "KeyPair" all'istanza EC2, quindi accedere al gestore ELB e modificare il file di configurazione dell'applicazione ELB. , controllare questo collegamento (SSH to Elastic Beanstalk instance)

2. Installare le librerie mancanti (nel mio caso, perché il bcrypt pacchetto NPM è stata che lo richiedono)

sudo yum update 

sudo yum install openssl-devel 

Spero che questo aiuti!

+1

Esattamente il mio problema e correzione al 100%. si noti che quando si aggiunge una coppia di chiavi è normale che eb contrassegni tutto il rosso e che il dashboard assomigli alla sua morte fino a quando una nuova distribuzione non viene spinto verso l'alto - dopo aver eseguito l'accesso e risolto i problemi. – Catalyst

+8

Se stai leggendo e seguendo questo, ti preghiamo di evitare di installare manualmente i pacchetti su istanze di beanbalk elastico: non saranno lì quando ridimensionerai o ricostruirai automaticamente un ambiente. Invece, segui la risposta di jakeorr e aggiungi il pacchetto alla configurazione di .ebextensions in modo che venga installato automaticamente. –

+2

downvoted.questo vanifica lo scopo dell'utilizzo di EB. Una nuova istanza provata perderà queste modifiche. –

1

Ho riscontrato questo problema e l'ho risolto scegliendo semplicemente il tipo di istanza successivo più grande.

Problemi correlati