PlayFramework + PostgreSQL環境構築 on AmazonLinux
PostgreSQLとScalaの勉強用に構築した際のメモ。
--
まず、AmazonLinuxを立ちあげてこちらを参考にPostgreSQLをインストール
Install PostgreSQL on AWS EC2(Amazon Linux AMI 2013.03.1) | Developers.IO
バージョン確認。9.2.7がインストールされました。
-bash-4.1$ psql -version psql (9.2.7) Type "help" for help. postgres=#
次に、PlayFrameworkのインストール。こちらを参考に2.2.3をインストールしました。
Installing
--
play new <name>
でアプリケーションを作成して。
ec2-user$ mkdir ~/workspace && cd ~/workspace ec2-user$ play new hello-play
動作確認をしたらPostgreSQLと接続する準備。ライブラリを依存関係に追加。 /home/ec2-user/workspace/hello-play/conf/build.sbt
name := "hello-play" version := "1.0-SNAPSHOT" libraryDependencies ++= Seq( jdbc, anorm, cache, "org.postgresql" % "postgresql" % "9.2-1004-jdbc41" ) play.Project.playScalaSettings
/home/ec2-user/workspace/hello-play/conf/application.conf
db.default.driver=org.postgresql.Driver db.default.url="jdbc:postgresql://127.0.0.1:5432/book" db.default.user=postgres db.default.password="password"
--
再起動すると以下のエラーが発生。DBの認証に失敗しているよう。
play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]] at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:92) ~[play_2.10.jar:2.2.3] at play.api.Configuration.reportError(Configuration.scala:570) ~[play_2.10.jar:2.2.3] at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:252) ~[play-jdbc_2.10.jar:2.2.3] at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:243) ~[play-jdbc_2.10.jar:2.2.3] at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) ~[scala-library.jar:na] at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) ~[scala-library.jar:na] Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres" at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:398) ~[postgresql-9.2-1004-jdbc41.jar:na] at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:173) ~[postgresql-9.2-1004-jdbc41.jar:na] at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64) ~[postgresql-9.2-1004-jdbc41.jar:na] at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:136) ~[postgresql-9.2-1004-jdbc41.jar:na] at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29) ~[postgresql-9.2-1004-jdbc41.jar:na] at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21) ~[postgresql-9.2-1004-jdbc41.jar:na]
パスワードが設定されていなかったのでパスワードを設定。
-bash-4.1$ psql book psql (9.2.7) Type "help" for help. book=# alter user postgres password 'password'; ALTER ROLE book=# \q -bash-4.1$
無事に動作しました。
[hello-play] $ run --- (Running the application from SBT, auto-reloading is enabled) --- [info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 (Server started, use Ctrl+D to stop and go back to the console...) [info] play - database [default] connected at jdbc:postgresql://127.0.0.1:5432/book [info] play - Application started (Dev)