2017-01-24 1 views
0

Je suis en train de tester certaines configurations pour EC2 pour exécuter geoserver. Lors du lancement de l'instance EC2, j'ai un script bash pour accélérer les choses. Cependant, quand il arrive à créer un postgres db, il échoue. Voici un extrait du script et il semble échouer après la deuxième ligne:Comment utiliser un script bash pour exécuter postgres lors du lancement de l'instance AWS EC2?

chown postgres /usr/local/pgsql/data 
sudo su postgres 
initdb -D /usr/local/pgsql/data 
postgres -D /usr/local/pgsql/data & 
exit 

yum install gcc make gcc-c++ libtool libxml2-devel -y 
# ..... etc etc 

J'ai SSHed dans une instance d'exécution du code ci-dessus manuellement, puis a fait un AMI de cette instance qui fonctionne. J'aimerais toujours savoir comment avoir un script bash pour Amazon Linux qui peut aussi démarrer postgres.

+1

Et quelle est l'erreur que vous obtenez? –

+0

Il n'y a pas de rapport d'erreurs que je peux trouver lors du lancement d'une instance en utilisant un script bash (s'il vous plaît laissez-moi savoir où chercher). Je peux dire à peu près où il échoue que le script s'arrête. SSHing indique que gcc etc n'est pas installé et qu'aucun des répertoires n'est créé après la partie 'sudo su postgres'. –

Répondre

1

Vous ne pouvez pas mettre sudo su postgres dans un script pour que les lignes suivantes soient exécutées par l'utilisateur postgres. Vous devez écrire comme:

chown postgres /usr/local/pgsql/data 

sudo -u postgres initdb -D /usr/local/pgsql/data 
sudo -u postgres -D /usr/local/pgsql/data & 

yum install ... 
+0

Le premier 'sudo -u postgres' fonctionne, mais la ligne' sudo -u postgres -D/usr/local/pgsql/data & 'semble le faire se bloquer et l'ajout de' exit' se ferme hors du shell. –

+0

Suppression de 'exit' et réalisation d'une autre' exit' plus tard dans le script. Juste testé et tout fonctionne. –