#コーディング
AWSのAmazon Linuxに5分でLAMP環境を構築する(PHP7)

Amazon Linuxイメージを用いてEC2インスタンスを立ち上げ、LAMP環境を構築してみよう。AWSのマシンイメージは優秀なのでLAMP構築程度なら簡単にできる。簡単なんだけどインフラ構築はやる機会があまり多くないのですぐ忘れる。そしてインフラはハマると解決に非常に時間がかかることが多い。ので忘備録程度にLAMP環境構築手順を記しておく。

AWS上にEC2インスタンスを作成しよう

今回はAWSを利用するが、他VPSなんかでもおおよその流れは同じ。
まずAWSにログインするとあまりのサービスの多さに心を折られる。なにこれ、使いこなせる気がしない。
しかし安心して欲しい、こんな数のサービス全てを使いこなす必要はない。今回は単純にLAMPなサーバーを建てたいだけなので他のサービスには目もくれず「EC2」を利用しよう。
EC2の管理画面に入ると「インスタンスの作成」というボタンがある。ここで好きな数だけインスタンス(仮想サーバー)を作れちゃうってわけ。すごい。
作成ボタンを押すとAMI(マシンイメージ)を選択しろって言われる。今回はAmazon Linux AMIを使ってみよう。Cent OS6系のコマンドが大体通るし色々使いやすくチューニングされてるっぽい。Ubuntu派の方はそれっぽいイメージを選択すれば良い。

インスタンスタイプはテストなのでt2.nanoもしくはt2.microの最小規模のもので良い。間違って強力なタイプを選択してしまうと後で恐ろしい額の請求がくることになる。
ネットワークやストレージはデフォルト設定でひとまず問題ないのだが、一点だけ注意するべきはセキュリティグループの設定だ。デフォルトではSSHしか通らずHTTPも通らないしなんとpingすら届かない。この辺は適宜設定してあげる必要がある。HTTPでアクセスしてLAMP環境が構築されたことを確認したいのでHTTPはマストであけておき、気持ち悪いのでpingは通るようにしておく。

インスタンスの作成時には必ず秘密鍵の設定が必要になる。ssh-keygenとかって打って鍵を生成しなくてもここでポチポチすれば公開鍵を設置してくれて秘密鍵をダウンロードできる、すごい、うれしい、たのしい、だいすき。

適当にhoge_keyとかって秘密鍵を設定してダウロードしておく。当然、この秘密鍵は大切に保管しておく。

EC2インスタンスにSSHログインする

インスタンスの作成を完了させ、EC2管理画面に戻ると新しくインスタンスが追加されていることが確認できる。早速作成したインスタンスにログインしてみよう。
インスタンスの説明にパブリックIPが記載されているので、こちらに対してSSHログインを試みればよさそう。早速コマンドを打つ…前にユーザー名は?という疑問が浮かぶ。Amazon Linuxではデフォルトユーザーとして「ec2-user」というユーザーが用意されている。こちらのユーザー名を用いてログインすればよい。

とかってやればよい。無事ログインできたら適当にコマンドを打って挙動を確認してみるといい。前述の通りほぼcentOS6系。

Apacheをインストールする

いよいよLAMP環境の構築に入ろう。といってもここまでくれば他VPSなんかと同じ。
とりあえずルート昇格してyum updateしておこう。

とりあえずApacheを入れる。

無事インストールできたら起動して自動起動もオンにするいつものおまじないを唱えておく。

これでOK
ここでブラウザに戻り該当IPを叩いてみると

無事Apacheが動いていることが確認できる。やったね。

PHP7をインストールする

続いてPHPをインストールしよう。私は7系を使いたいのでとりあえずyumリポジトリに利用可能っぽいものがあるか確認してみる

とかって打つと利用可能なパッケージが一覧表示される。Amazon LinuxではデフォルトでPHP7も7.1系も用意してくれているため、remiの追加とかその辺の面倒なアレをスキップできる。余談だが初めてインフラ構築をした時、PHP7がどうしても入らなくて泣きながら1日潰したことがある。その経験を鑑みるとめちゃくちゃありがたい。
てわけで

で通ると思ったらなんかコンフリクトした。依存関係としてApache2.4以上を要求されているようだが、先程インストールしたApacheは2.2であった。泣きながらApacheをアンインストールする。

これでOK。気を取り直してPHPのインストールを再度試みる

なんかついでにApache2.4も入れてくれるっぽい。先言ってよ…

でバージョンを確認してインストールされたことを確認しよう。
よって、前述のApacheのインストールはスキップしてよく

だけでPHP実行環境できちゃうっぽい。便利。

MySQL5.6をインストールする

トドメにmysqlをインストールする。PHPの時と同様、使用できるパッケージを確認しておこう。

5.7はまだ追加されてないっぽい。5.6がいいので

これでOK。バージョン確認してインストールされたことを確認しよう。

デフォルトではパスワードが設定されていないっぽいので

で普通にルートログインできてしまう。適宜パスワードの設定などを行おう。

動作確認用のindex.phpをドキュメントルートに設置する

これでインフラ構築は完了。一応ドキュメントルートにphpinfoを出力させるようindex.phpでも置いてみて動作確認してみるといいだろう。

でindex.phpを作成する。デフォルトでvimが使えるっぽいので

として編集画面に入り

とでもしておこう。ブラウザで該当IPにアクセスしてみてPHPのバージョン情報が表示されていれば成功だ。

これでAWS上にLAMP環境を構築することができた。あとはWordPress突っ込むなりなんなり好きにすれば良い。
尚、ご存知の通りAWSは従量課金なので試験的に建てたサーバーはすぐにキルしておこう。謎の請求が来てうわぁ…って感じになるので。

おまけ

格闘ゲームをネットワーク対戦すると物理的な光の伝達速度がボトルネックになるとかって話を聞いたことがある。空気中での光の伝播速度は約30万km/sだが、光ファイバー(ガラス管)内では屈折率が約1.5なので30/1.5でおよそ20万km/sの速度で伝播するはずである。
ということは、日本の反対側のサーバーとやり取りをするのなら理論値でも0.1秒ほどの遅延が見込まれる。AWSでは様々なリージョンにサーバーを建てることができるため、実験的に東京リージョンとバージニアリージョンとにサーバーを建て、ping打って応答速度を比較してみた。

期待通り0.1秒強ほどの遅延が見られた。これは確かにカンマ1秒を争う競技においては大きなネックになりえるだろう。どうするんだこれ、解決策あるのだろうか。教えて偉い人。
 
 

※Apacheのバージョンのコンフリクトがなければ本当に5分でいけた…と思う。

CONTACT

この度は当社へご興味お持ちいただき
ありがとうございます。
Webに関するお悩みございましたら、
是非一度お気軽にご相談ください。
平日10:00~19:00