概要
Java(Spring-Bootを使用)で開発するWebアプリケーションの実行環境をAWS上に構築した作業内容のまとめです。
この記事は[Javaで開発したWebアプリケーションの実行環境をAWSに構築する(VPC&EC2作成)] (http://qiita.com/rubytomato@github/items/329e6c44627d0fa6e3fe)からの続きになります。この記事では「EC2初期設定」を書きました。
-
- [Javaで開発したWebアプリケーションの実行環境をAWSに構築する(VPC&EC2作成)] (http://qiita.com/rubytomato@github/items/329e6c44627d0fa6e3fe)
-
- Javaで開発したWebアプリケーションの実行環境をAWSに構築する(EC2初期設定)
-
- [Javaで開発したWebアプリケーションの実行環境をAWSに構築する(RDS)] (http://qiita.com/rubytomato@github/items/4ba375dfa1977a104098)
-
- Javaで開発したWebアプリケーションの実行環境をAWSに構築する(Webアプリケーションのbuild&deploy) (未)
sshクライアント
WindowsからEC2インスタンスへsshログインできるように設定を行います。
この記事ではPuTTYをsshクライアントとして使用しますが、そのためにはPUTTYGEN.exeを使ってEC2インスタンスのプライベートキーファイル(pem)を、ppkファイルへ変換する必要があります。
ppkファイルの作成
PUTTYGEN.exeを起動し「Load」ボタンをクリックしてプライベートキーファイルを読み込みます。
「Save private key」ボタンをクリックし、ppkファイルとして保存します。
PuTTYの設定
「Host Name」にPublicサブネットにあるEC2インスタンスのpublic IPアドレスを入力します。
「Saved Sessions」には、セッション名を入力します。(この例では"my-aws-20160503"としています。)
セッションのタイムアウト(秒)を入力します。
ログインするユーザー名を入力します。
「Browse...」ボタンをクリックし作成したppkファイルを指定します。
Session画面へ戻り「Save」ボタンをクリックしてセッションを保存します。
このセッションで「Open」ボタンをクリックするとEC2へsshログインします。
Using username "ec2-user".
Authenticating with public key "imported-openssh-key"
Last login: Tue May 3 10:01:36 2016 from xxxxxxx.xxxxx.xxxxxxxxxxx.xxx.xxx
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2016.03-release-notes/
[ec2-user@ip-10-0-1-196 ~]$
PrivateサブネットにあるEC2へログインする
PublicサブネットにあるEC2インスタンスはインターネットへ接続しており、且つマイIP(自宅のIPアドレス
)からsshログインができるようにセキュリティグループで設定していますが、PrivateサブネットにあるEC2インスタンスはインターネットへ接続していないためWindowsから直接sshログインすることができません。
このため、一度PublicサブネットのEC2インスタンスへsshログインし、プライベートキーファイルを使ってPrivateサブネットにあるEC2インスタンスへsshログインします。
事前にWinSCPなどを使ってプライベートキーファイルをPublicサブネットのEC2インスタンスへアップロードしておきます。
あとは、下記のようにsshコマンドでPrivateサブネットにあるEC2インスタンスへsshログインすることができます。
$ ssh -i my-aws-keypair-20160503.pem ec2-user@10.0.2.111
新しく認証鍵ファイルを用意する
上記の方法でPrivateサブネットにあるEC2へログインできるのですが、このプライベートキーファイルはEC2インスタンスに紐づいているため、なるべく複製しない方が
そこで、EC2インスタンス間でsshログインするための認証鍵ファイルを別途作成しそれを使うようにします。
$ cd .ssh
$ ssh-keygen -t rsa
上記で作成したid_rsa.pubを、scpコマンドでPrivateサブネットのEC2インスタンスへコピーします。
$ scp -i my-aws-keypair-20160503.pem id_rsa.pub ec2-user@10.0.2.111:
id_rsa.pub 100% 404 0.4KB/s 00:00
プライベートキーファイルを使ってPrivateサブネットのEC2へログインします。
$ ssh -i my-aws-keypair-20160503.pem ec2-user@10.0.2.111
id_rsa.pubをauthorized_keysへ追加します。追加後はid_rsa.pubは不要なので削除します。
$ cat id_rsa.pub >> .ssh/authorized_keys
$ rm id_rsa.pub
$ exit
PublicサブネットのEC2へ戻り、プライベートキーファイルも削除します。
$ rm my-aws-keypair-20160503.pem
新しく作成した認証鍵でログインできるか確認します。
[ec2-user@ip-10-0-1-196 ~]$ ssh 10.0.2.111
Last login: Wed May 3 11:44:55 2016 from ip-10-0-1-196.ap-northeast-1.compute.internal
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2016.03-release-notes/
1 package(s) needed for security, out of 1 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-2-111 ~]$
EC2の初期設定
EC2へログインできるようになったら、下記の設定を行います。(この設定はPublic/Privateサブネットの両方のEC2インスタンスで行いました。)
/etc/sysconfig/i18n
LANG=en_US.UTF-8
↓ 変更
LANG=ja_JP.UTF-8
/etc/sysconfig/clock
ZONE="UTC"
UTC=true
↓ 変更
ZONE="Asia/Tokyo"
UTC=false
/etc/localtime
$ sudo cp /etc/localtime /etc/localtime.org
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
yum update
$ sudo yum -y update
MySQLのインストール (Public/PrivateサブネットのEC2)
EC2インスタンスよりRDSへMySQL Clientで接続するためにインストールします。
$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
$ sudo yum -y install mysql mysql-devel mysql-utilities
$ mysql --version
mysql Ver 14.14 Distrib 5.6.30, for Linux (x86_64) using EditLine wrapper
nginxのインストール (PublicサブネットのEC2)
$ sudo yum -y install nginx
$ sudo service nginx status
nginx は停止しています
$ sudo chkconfig nginx on
$ sudo service nginx start
nginx を起動中: [ OK ]
OpenJDKのインストール (PrivateサブネットのEC2)
Javaで開発したWebアプリケーションをビルド及び実行するのに必要になります。
$ sudo yum -y install java-1.8.0-openjdk-devel
java
$ sudo alternatives --config java
2 プログラムがあり 'java' を提供します。
選択 コマンド
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
$ java -version
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
javac
$ sudo alternatives --config javac
2 プログラムがあり 'javac' を提供します。
選択 コマンド
-----------------------------------------------
1 /usr/lib/jvm/java-1.8.0-openjdk.x86_64/bin/javac
*+ 2 /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/javac
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:1
$ javac -version
javac 1.8.0_91
Mavenのインストール (PrivateサブネットのEC2)
Webアプリケーションのビルドで必要になります。
$ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
$ sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
$ sudo yum install -y apache-maven
$ mvn --version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T20:57:37+09:00)
Maven home: /usr/share/apache-maven
Java version: 1.8.0_91, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.10.amzn1.x86_64/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "4.4.5-15.26.amzn1.x86_64", arch: "amd64", family: "unix"
- [Install Maven with Yum on Amazon Linux] (https://gist.github.com/sebsto/19b99f1fa1f32cae5d00)
gitのインストール (PrivateサブネットのEC2)
githubのリポジトリよりソースコードをcheckoutするのに必要になります。
$ sudo yum -y install git
$ git --version
git version 2.7.4
$ git config --global user.email "YOUR_MAIL_ADDRESS"
$ git config --global user.name "rubytomato"