2011-12-05 8 views
6

Sto utilizzando un AMI Amazon Linux e faccio alcune modifiche personalizzate (aggiunto un server asse2, ecc.) Su di esso e salvandolo come un nuovo AMI. Ora, quello che voglio fare è quando AMI si avvia, avviare axis2server (cioè. Axis2server dovrebbe avviarsi automaticamente all'avvio dell'istanza). Per questo ho usato uno script di init come qui di seguito e fatto funzionare il seguente comando:Aggiunta di uno script di avvio del servizio per Amazon linux AMI

chkconfig --add axisservice 

Ma quando lancio di una nuova istanza dalla mia immagine, l'axis2server non è iniziare.

Ho solo bisogno di eseguire lo script /home/ec2-user/axis2-1.6.1/bin/axis2server.sh all'avvio. Mi sto perdendo qualcosa qui?

#! /bin/sh 
# Basic support for IRIX style chkconfig 
### 
# chkconfig: 235 98 55 
# description: Manages the services you are controlling with the chkconfig command 
### 

case "$1" in 
    start) 
     echo -n "Starting axisservice"   
     touch ~/temp.txt 
     cd /home/ec2-user/axis2-1.6.1/bin 
     ./axis2server.sh & 
     echo "." 
     ;; 
    stop) 
     echo -n "Stopping axisservice" 
     echo "." 
     ;; 

    *) 
     echo "Usage: /sbin/service axisservice {start|stop}" 
     exit 1 
esac 

exit 0 

ho passato https://help.ubuntu.com/community/CloudInit pure e fornisce un meccanismo chiamato script utente-dati, in cui un utente può eseguire uno script quando si lancia lo script.

$ euca-run-instances --key mykey --user-data-file myscript.sh ami-axxxx 

Si tratta di una linea di comando e quello che voglio è qualcosa di simile quando lancio l'istanza tramite l'interfaccia utente, lo script dovrebbe essere started.Therefore, credo che l'opzione di cui sopra non può essere utilizzato nel mio caso. Perfavore, correggimi se sbaglio.

Grazie, H.

+0

Solo per verificare le basi, lo script ha le autorizzazioni corrette per essere eseguito all'avvio? Hai provato a farlo manualmente? – David

+0

Hai trovato una soluzione? Voglio anche eseguire un server Redis e un nodo.js al riavvio della mia istanza. Sembra che Amazon AMI non abbia installato update-rc.d qui. – user482594

risposta

3

scommetto che l'ambiente non è impostata (correttamente). Ciò significa che sto indovinando che il tuo script di shell tenta di avviare un altro programma e non è stato trovato.

Così in un primo momento, mi piacerebbe regolare la parte start dello script (corrente):

echo -n "Starting axisservice"   
touch ~/temp.txt 
cd /home/ec2-user/axis2-1.6.1/bin 
./axis2server.sh & 
echo "." 

Modificato:

echo -n "Starting axisservice"   
touch ~/temp.txt 
cd /home/ec2-user/axis2-1.6.1/bin 
./axis2server.sh 
RETVAL=$? 
[ $RETVAL -eq 0 ] && echo Success 
[ $RETVAL -ne 0 ] && echo Failure 
echo "." 

Allora, cosa ho fatto?

  • rimossi & così lo script attende per il vostro script di shell (axis2server.sh) per completare
  • controllato lo stato di ritorno ($?) della vostra shell script di

Ulteriori debug:

Add set -x agli script per abilitare la traccia e registrare sia stderr e stdout.

Domande:

  1. Sei a conoscenza che stop (nello script di servizio) non fa nulla?
  2. touch ~/temp.txt è quello che dovrebbe creare /root/temp.txt? (Sto cercando di indovinare radice viene eseguito questo script.)
  3. Se nessuno dei miei suggerimenti funziona, si può condividere axis2server.sh e incollare stderr e stdout?
Problemi correlati