2017-01-24 5 views
0

Ich teste einige Setups für EC2, um Geoserver zu betreiben. Beim Start der EC2-Instanz habe ich ein Bash-Skript, um die Dinge zu beschleunigen. Wenn es jedoch zum Erstellen einer Postgres-Datenbank kommt, schlägt es fehl. Es folgt ein Auszug aus dem Drehbuch und es erscheint nach der zweiten Zeile zum Scheitern verurteilt:Wie kann ich ein Bash-Skript verwenden, um Postgres beim Start der AWS EC2-Instanz auszuführen?

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 

ich in eine Instanz einen Lauf den obigen Code manuell SSHed habe, dann einen AMI aus dieser Instanz hergestellt, das funktioniert. Ich würde immer noch gerne wissen, wie man ein Bash-Skript für Amazon Linux hat, das auch Postgres starten kann.

+1

Und was ist der Fehler, den Sie bekommen? –

+0

Es gibt keine Fehlermeldung, die ich beim Starten einer Instanz mit einem Bash-Skript finden kann (bitte lassen Sie mich wissen, wo Sie suchen). Ich kann ungefähr sagen, wo es scheitert, wenn das Skript aufhört. SSHing in enthüllt gcc etc sind nicht installiert und keines der Verzeichnisse sind nach dem 'sudo su postgres' Teil gemacht. –

Antwort

1

Sie können sudo su postgres nicht in ein Skript einfügen, damit die nachfolgenden Zeilen vom postgres-Benutzer ausgeführt werden. Sie müssen schreiben wie:

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

Das erste 'sudo -u postgres' funktioniert, aber die Zeile' sudo -u postgres -D/usr/local/pgsql/data & 'scheint es hängen zu lassen und das Hinzufügen des' exits' schließt sich aus der Shell heraus. –

+0

Hat den 'exit' fallen gelassen und festgestellt, dass später im Skript noch ein' exit' vorhanden war. Nur getestet und es funktioniert alles. –

Verwandte Themen