Category : 開発

20130820080810

月額制のVPSからEC2に移行を試みるついでに手順をまとめました。
書きなぐっているため、抜け漏れがあるかもしれません。指摘大歓迎です。

目的と作業手順

Webサイト test.hogehoge.com を作ること。(事前にhogehoge.comのドメインは取得済み)

インスタンスを作成

何はともあれまずはインスタンスの作成です。
今回はマイクロインスタンス + OSはAmazon Linux AMI を利用します。慣れれば3〜4分で終わりそう?

20130820092254
20130820092255
20130820092258
20130820092257
20130820092300
20130820092301
20130820092303
20130820092945

ここで鍵がダウンロードされます。

20130820092305
20130820092307

作業ユーザーの作成

ec2-userでログイン

インスタンスを作成したら、早速terminalでssh接続してみます。デフォルトではec2-userという名前でログインすることになります。
(インスタンス作成時にssh – port 22を設定しておくのを忘れずに。)

# ローカル環境
# インスタンス作成時にダウンロードした鍵を指定
# .pemファイルのパーミッションは600に変更しておく
$ ssh -i ~/.ssh/{鍵名}.pem ec2-user@{接続先}

上記の{接続先}というのは、ダッシュボードの下記の位置に書かれています。

20130819221736

rootパスワード変更

$ sudo passwd

作業ユーザーの追加

ec2-user 以外の作業ユーザーを作ります。好きな名前でログインしたいですし。
今回はtestuer という名前のユーザーを作成します。

$ sudo adduser testuer
$ sudo passwd testuer

# 追加したユーザをwheelグループに追加。
$ sudo usermod -G wheel testuer

# sudoできるようにする。
$ sudo vi /etc/sudoers
# 下記をコメントイン
# wheel	ALL=(ALL)	NOPASSWD: ALL

追加したユーザでssh接続

# ローカル環境
$ ssh-keygen -t rsa

ローカルでssh-keygenし、testKey.pub(公開鍵)と、testKey(秘密鍵)を作成したとします。で、公開鍵の方を、authorized_keysという名前でサーバ上に設置してパーミッションを変更します。

# リモート環境
# ユーザ切り替え
$ su testuer

# .ssh ディレクトリを作成し、パーミッション変更
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cd ~/.ssh/

# authorized_keys ファイルを新規作成し、ローカルのtestKey.pubの中身をコピペして保存
$ vim authorized_keys

# パーミッション変更
$ chmod 600 authorized_keys

# authorized_keysの所有者は testuer:testuer にする

sshポート番号変更

設定をミスるとログインできなくなってしまうので、ログイン状態のタブを残しておきます。また今回は10055番に繋ぐことにします。

$ sudo vim /etc/ssh/sshd_config

#Port 22
  ↓ コメントインしてポート番号を変更
Port 10055

# sshリスタート
$ sudo service sshd restart

EC2 ダッシュボードの「Security Groups」を開きます。

20130819220636

ポート番号 10055 を追加します。(22番はあとで消す?)

20130819220724

sshでログインを試してみる

# ローカル環境
$ ssh -i ~/.ssh/testKey -p 10055 testuser@{ec2の接続先}


       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

つながた!

ということで、ここまでできたら、念のためインスタンスをリブートしておきましょう。

EIPの設定

インスタンスへ固定IPを割り当てる作業です。独自ドメインを使う時に必要な作業になります。
まずEC2のダッシュボード左にある、Elastic IPsメニューを開いて下記操作します。

「Associate」を選択。

20130819223013

作成したインスタンスを選択。

20130819223015

設定が完了すると、IPアドレスが固定されます。
ダッシュボードの{接続先}部分がIPアドレスに変わっていると思います。

注)この設定をすると、sshで接続する時の接続先指定方法も変わるので注意。軽くハマりました。

# ローカル環境
ssh -i ~/.ssh/testKey -p 10055 testuser@ec2-ほげほげ〜
↓
ssh -i ~/.ssh/testKey -p 10055 testuser@{固定したIP番号}

nginxをインストール

まず、yumをアップデートしておきましょう。ログイン時にもメッセージが出ますしね。

sudo yum update

nginxをインストールし、起動してみます。

$ sudo yum -y install nginx

# nginx 起動
$ sudo /etc/init.d/nginx start

先ほど設定したIPアドレスにアクセスすると、下記画面になってると思います。nginxを動かすところまで出来ました。

20130819223901

DNSの設定

お名前.comを例にしていきます。
(今回は、ドメインが「hogehoge.com」の場合、「test.hogehoge.com」と「hogehoge.com」の2つを設定します。)

DNSレコード設定画面で、ホスト名に「test」をいれたものと、空にしたものの2個を追加(両方Aレコード)。

20130819224151

また、ネームサーバを 01.dnsv.jp〜04.dnsv.jp に設定しておきます。
(お名前を利用している方なら、既に設定されているかと思います。)

DNSの設定は以上です。

バーチャルホストの設定

nginxのよく使うコマンドをメモ。それぞれalias設定しておくととっても楽になります。

$ nginx -V #バージョンを調べる
$ sudo /etc/init.d/nginx restart #リスタート
$ sudo /etc/init.d/nginx configtest #設定ファイルのチェック
$ sudo vim /etc/nginx/nginx.conf #設定ファイルを編集
$ sudo vim /etc/nginx/conf.d/virtual.conf #バーチャルホストの設定を編集

設定ファイルを変更します(今回、vhosts用の別ファイルなどは利用しません)

$ sudo vim /etc/nginx/nginx.conf

# バーチャルホストの設定を追加
server {
	listen 80;
	server_name test.hogehoge.com;
	location / {
		root /var/www/vhosts/test/;
		index index.html;
	}
}

# ドキュメントルートは /var/www/vhosts/test/ とし、予め index.htmlを置いておきます。
# ドキュメントルートのディレクトリ所有者がtestuserになっていないと正常に動かないかもです

nginxを再起動させ、test.hogehoge.com にアクセスすると、Webサイトが表示がされると思います。これで完了。

本当に1時間でできるのか

EC2はインスタンスを作成→terminate(破棄)が簡単に出来るので、手軽に練習ができます。インスタンスを量産してこのフローを実行してみました。

  • 1回目・・・いろいろ方法を探しながら5時間
  • 2回目・・・このメモを見ながら約1時間
  • 3回目・・・メモを半分くらい見つつ40分くらい

という感じでした。3回繰り返せば体が覚えてきますね。今後はさくっと作れそうです。
量産する時は、マイクロインスタンスの無料枠(月750時間 / インスタンス数)を超えないように気をつけましょう。

参考にさせていただいたサイト様