2017-01-24 8 views
0

私はgeoserverを実行するためにEC2のいくつかのセットアップをテストしています。 EC2インスタンスを起動するときには、処理を高速化するbashスクリプトがあります。しかし、postgres dbを作成する時点まで来ると失敗します。以下は、スクリプトの抜粋であり、二行目の後に失敗することが表示されます。AWS EC2インスタンスを起動するときにbashスクリプトを使用してpostgresを実行するにはどうすればよいですか?

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 

私はインスタンスにSSHed AN手動で上記のコードを実行し、動作するインスタンスからAMIを作りました。私はまだポストグルを開始することができるAmazonのLinuxのためのbashスクリプトを持つ方法を知りたいです。

+1

何が得られますか? –

+0

bashスクリプトを使用してインスタンスを起動するときにエラーが報告されることはありません。私は、スクリプトが停止するとどこが失敗しているかを大まかに知ることができます。 SSHing in gccなどはインストールされておらず、 'sudo su postgres'の部分の後にディレクトリが作られていません。 –

答えて

1

スクリプトにsudo su postgresを入れて、後続の行をpostgresユーザーが実行させることはできません。あなたは次のように書く必要があります:

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

最初の 'sudo -u postgres'は動作しますが、' sudo -u postgres -D/usr/local/pgsql/data& '行はハングさせ、' exit'を追加するとシェルからクローズします。 –

+0

'exit'を削除し、後でスクリプトに別の' exit'があることを認識しました。ちょうどテストされ、それはすべて動作しています。 –

関連する問題