AWS Cloud9でPostgreSQLを起動しようとしたらpostgresql: unrecognized serviceと表示される問題でハマった
##$ rails new . --database=postgresql
新規プロジェクト作成! がしかし、まず最初から入っているpg ~>0.18でなく0.21を入れろと怒られます。なので、Gemfileのpgの所を0.21にしてインストールを試みます。しかしlibpq-fe.h..noとエラーがでるので、必要なライブラリをインストールします。
$ sudo yum install postgresql-devel
再度bundle installで無事gemのインストールはできるはずです。
##$ bundle install
次にdbを作ります。が、ここでdbと接続できないというエラーが発生する。
$ rails db:create
could not connect to server: No such file or directory Is the server running
locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
これはPostgreSQLが起動してないから?と思って調べてみると、AWS Cloud9にはPostgreSQLプリインストールしてあるからstartさせればOKだぜ!という記事がたくさん見つかる。ので、素直にstartしてみる。
しかし、ここで表題のpostgresql: unrecognized serviceが表示されて進まない。
$ sudo service postgresql start
postgresql: unrecognized service
えーserviceとして認識されてない?とりあえず、PostreSQLに必要だったライブラリ達をインストールする。
$ sudo yum install postgresql postgresql-server postgresql-contrib postgresql-docs
そしてinitdbしてstartしてみる。
$ sudo service postgresql initdb && sudo service postgresql start
今度はうまく起動したみたい。
だけど、このままだとec2-userがいなくてテーブルとか作れないらしいので、psqlでユーザーを作成する必要がありとのこと。とりあえずpostgresユーザーを作ってpsqlを実行します。
$ sudo -u postgres createuser -s ec2-user
$ sudo su postgres
$ psql
で、psqlでALTER USERを実行して\qで抜け出します。
ALTER USER "ec2-user" WITH SUPERUSER;
\q
最後に元にユーザーに戻るためにexitし、
$ exit
再度rails db:createを実行してみます。
$ rails db:create
まとめ
とりあえずエラー抜けれてよかったです