3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[WIP] 2. Javaで開発したWebアプリケーションの実行環境をAWSに構築する(EC2初期設定)

Last updated at Posted at 2016-05-04

概要

Java(Spring-Bootを使用)で開発するWebアプリケーションの実行環境をAWS上に構築した作業内容のまとめです。
この記事は[Javaで開発したWebアプリケーションの実行環境をAWSに構築する(VPC&EC2作成)] (http://qiita.com/rubytomato@github/items/329e6c44627d0fa6e3fe)からの続きになります。この記事では「EC2初期設定」を書きました。

sshクライアント

WindowsからEC2インスタンスへsshログインできるように設定を行います。
この記事ではPuTTYをsshクライアントとして使用しますが、そのためにはPUTTYGEN.exeを使ってEC2インスタンスのプライベートキーファイル(pem)を、ppkファイルへ変換する必要があります。

ppkファイルの作成

PUTTYGEN.exeを起動し「Load」ボタンをクリックしてプライベートキーファイルを読み込みます。

37-ppk-01.png

「Save private key」ボタンをクリックし、ppkファイルとして保存します。

38-ppk-02.png

PuTTYの設定

「Host Name」にPublicサブネットにあるEC2インスタンスのpublic IPアドレスを入力します。
「Saved Sessions」には、セッション名を入力します。(この例では"my-aws-20160503"としています。)

session.png

セッションのタイムアウト(秒)を入力します。

connection.png

ログインするユーザー名を入力します。

data.png

「Browse...」ボタンをクリックし作成したppkファイルを指定します。

auth.png

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インスタンスへコピーします。

public
$ 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へログインします。

public
$ ssh -i my-aws-keypair-20160503.pem ec2-user@10.0.2.111

id_rsa.pubをauthorized_keysへ追加します。追加後はid_rsa.pubは不要なので削除します。

private
$ cat id_rsa.pub >> .ssh/authorized_keys
$ rm id_rsa.pub
$ exit

PublicサブネットのEC2へ戻り、プライベートキーファイルも削除します。

public
$ rm my-aws-keypair-20160503.pem

新しく作成した認証鍵でログインできるか確認します。

public
[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"

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"
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?