启动 AWS EC2 实例时如何使用 bash 脚本到 运行 postgres?

How can I use a bash script to run postgres when launching AWS EC2 instance?

我正在测试 EC2 到 运行 地理服务器的一些设置。启动 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

我已经手动将 运行 上面的代码通过 SSH 连接到一个实例中,然后从该实例创建了一个 AMI,该实例可以正常工作。我仍然想知道如何为 Amazon linux 创建一个 bash 脚本,它也可以启动 postgres。

您不能将 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 ...