はじめに
自分用備忘録なので箇条書き。
この辺↓のつづき。
Scala+Play+SecureSocialでTwitterにログイン認証してユーザ名とアバターを表示するメモ
[Scala]SecureSocialで取得したTwitterアクセストークンでタイムラインを取得するメモ[Play]
[Scala]SecureSocialで取得したTwitterアクセストークンでタイムラインを取得するメモ[Play]
Docker初心者がimageファイルを開発してみる[Mac]
[Scala]Elastic Beanstalk(Docker)でevolutionが自動実行されないとデプロイに失敗する件[Play]
VPCを超えて、Elastic BeanstalkのMySQLサーバーに接続するメモ
[Scala]SecureSocialで、すべてのビューを独自のビューで置き換えるメモ[Play]
RDS(MySQL)の文字化けに対処するためにしたこと
t1.microだとParameter Groupを後から変更できないので、
Elastic Beanstalk作成時にt1.micro以外のインスタンスを選択しておく。
Parameter Groupの変更
・新規にparameter groupを作成し、"character_set"で検索して以下の値をutf8に変更する。
character_set_database
character_set_client
character_set_connection
character_set_results
character_set_server
・skip-character-set-client-handshakeを1に変更
・該当インスタンスのparameter groupを作成したものに変更。
Swap領域の確保
Elastic Beanstalkは .ebextensions ディレクトリに .config ファイルを含めておけば、初期設定をすることができる。
playアプリと同じディレクトリに.ebextensionsフォルダを作成し、フォルダ内にconfigファイルを置く。
commands:
01_enable_sudo:
command: "echo Defaults:root !requiretty >> /etc/sudoers"
test: "test ! -e /home/ec2-user/swapdone"
02_dd:
command: "sudo dd if=/dev/zero of=/swapfile bs=1M count=1024"
test: "test ! -e /home/ec2-user/swapdone"
03_mkswap:
command: "sudo mkswap /swapfile"
test: "test ! -e /home/ec2-user/swapdone"
04_swapon:
command: "sudo swapon /swapfile"
test: "test ! -e /home/ec2-user/swapdone"
05_swapdone:
command: "touch /home/ec2-user/swapdone"
test: "test ! -e /home/ec2-user/swapdone"
New Relicの設定とか
DockerfileとDockerrun.aws.jsonファイルを用意しておく
FROM junsuzuki/java8
MAINTAINER Jun Suzuki
# Copy the app into the image.
ADD ./target /opt/playapp
# Start app
EXPOSE 80
CMD /opt/playapp/universal/stage/bin/play221ss214snslogin -Dhttp.port=80 -J-javaagent:/opt/playapp/universal/newrelic/newrelic.jar
CMDのところでオプション -J-javaagent:/opt/playapp/universal/newrelic/newrelic.jar
を指定するのがミソ。
{
"AWSEBDockerrunVersion": "1",
"Ports" : [
{
"ContainerPort": "2375"
}
]
}
New Relicにアプリケーションを登録
手順:
1.New Relicに登録する。
2.New Relicのサイトで新規でアプリケーションを作成する。
このとき、使用言語はJavaにする。
3.Javaを選択すると、作成したアプリケーション専用のzipファイルをダウンロードできるようになるのでダウンロードする。
このzipファイルには設定済みのnewrelic.ymlが入っているので便利。
自分でアプリケーションキーなどを設定する必要はない。
4.下記のように、ダウンロードしたzipファイルをplayのtarget/universalディレクトリに解凍する。
(play clean compile stage
を実行するたびに、解凍したファイルが消えるので毎回しなければならない。)
shellスクリプトでも書いておくのが吉。
$ play clean compile stage
$ unzip -d target/universal/ newrelic-java-3.11.0.zip
$ zip -r app.zip Dockerfile Dockerrun.aws.json target/ .ebextensions/
newrelicも一緒にzipに固めてしまう。
.ebextensionsも固めておくことで初期設定が走る。
参考サイト:
https://docs.newrelic.com/docs/agents/java-agent/frameworks/play-installation-java#prod-mode