我初めてAWSに触る ~ EC2でPHP7を動かすまで

アイキャッチ AWS EC2

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS事業本部インテグレーション部の韓です。

私自身、AWSでどう構築するということは全然わかっていません。幸いなことにAWS事業本部に配属されると強制的にアカウントが頂けてしまうため、物は試しに触れてみたいと思います。

筆者のスペック

  • アプリエンジニアなのでインフラは齧る程度
  • OSI参照モデルがなんとなくわかる
  • 遊び用のサーバなら構築できる(Web/AP/DB/SSL程度)
  • Webアプリが作れる(Java, PHP とか)
  • AWSは触ったことがない

目標

EC2インスタンスを作ってPHPを動かすまでとします。本当はLAMPと言いたいところなのですが、アプリ構築のほうが時間がかかりそうなのでこの辺までとしておきます。

とりあえず勝手がわからないので公式のガイドを参考に実施することにしました。 とりあえず手っ取り早く動かいたいけど新しいものも触れたいため、慣れたRed hat系と管理コマンドが似ている(らしい)Amazon Linux 2を選択。

実施内容

基本的にはガイダンスページに沿って作業しました。

EC2インスタンスの作成

インスタンスの作成ボタンからウィザードに従い作業を行います。マシンイメージは Amazon Linux 2 AMI(HVM) を選択。

インスタンスタイプは以下のようにしました。

確認画面の後に作成ボタンを押下すると、SSHログインに用いる鍵ペアの設定画面になります。鍵を使わない方法もあるのですが、セキュリティを考慮し鍵ログインを必須としました。この画面で鍵を作成してダウンロードしておいてからインスタンスの作成に進むこととします。

インスタンスの作成は以上で終わりました。 初めてAWSに触りましたが、あっという間にできてしまいました。

インスタンスへの接続とソフトの準備

ターミナルソフトでSSHログインします。接続先はパブリックDNSを使用をホストに指定し、ユーザは「ec2-user」で秘密鍵はインスタンス作成時にあらかじめダウンロードしておいたものを指定することで繋がりました。ちなみにrootログインを試してみましたができませんでした。

ログインユーザの ec2-user は wheel グループに所属していますので、sudo でいろいろな管理コマンドが実行できます。

次にソフトの準備を行います。今回選択したのはAmazon Linux2 でしたが、慣れ親しんだRedhatと同じく yum や systemctl が使えるようなので楽でした。

ただ、新しめのPHPをいれようと思ったのですがリポジトリには無く、外部リポジトリを設定かなと思ったのですが、AWSの提供するリポジトリを使うことで簡単に導入することができました。

$ sudo amazon-linux-extras install php7.2
  (中略)
php-cli is available in Amazon Linux Extra(s) "lamp-mariadb10.2-php7.2"
php-fpm is available in Amazon Linux Extra(s) "lamp-mariadb10.2-php7.2"
php-json is available in Amazon Linux Extra(s) "lamp-mariadb10.2-php7.2"
php-mysqlnd is available in Amazon Linux Extra(s) "lamp-mariadb10.2-php7.2"
php-pdo is available in Amazon Linux Extra(s) "lamp-mariadb10.2-php7.2"

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras_Repository


  0  ansible2                 available  [ =2.4.2 ]
  1  emacs                    available  [ =25.3 ]
  2  memcached1.5             available  [ =1.5.1 ]
  3  nginx1.12                available  [ =1.12.2 ]
  4  postgresql9.6            available  [ =9.6.6  =9.6.8 ]
  5  python3                  available  [ =3.6.2 ]
  6  redis4.0                 available  [ =4.0.5 ]
  7  R3.4                     available  [ =3.4.3 ]
  8  rust1                    available  [ =1.22.1  =1.26.0 ]
  9  vim=latest               enabled    [ =8.0 ]
 10  golang1.9                available  [ =1.9.2 ]
 11  ruby2.4                  available  [ =2.4.2  =2.4.4 ]
 12  nano                     available  [ =2.9.1 ]
 13  php7.2=latest            enabled    [ =7.2.0  =7.2.4  =7.2.5 ]
 14  lamp-mariadb10.2-php7.2  available  \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5 ]
 15  libreoffice              available  [ =5.0.6.2_15 ]
 16  gimp                     available  [ =2.8.22 ]
 17  docker=latest            enabled    [ =17.12.1  =18.03.1 ]
 18  mate-desktop1.x          available  [ =1.19.0  =1.20.0 ]
 19  GraphicsMagick1.3        available  [ =1.3.29 ]
 20  tomcat8.5                available  [ =8.5.31 ]

セキュリティ設定

Apache httpd等を入れたのでブラウザで早速つないでみたのですが繋がりません。SSHでのアクセスでしか許可しないようになっているため、セキュリティグループでhttp(tcp:80)とhttps(tcp:443)を許可してやる必要がありました。

これは普通のLinuxでもやることですが、GUIでサクサク設定できるためとても簡単でした。

phpを動かす

テストのため一時的に以下のテストファイルを配置しました。

<?php phpinfo(); ?>

ブラウザでアクセスしたところが下図。うまく動いているようです!

初めて使ってみた感想

初めて触るため用語に混乱したりと戸惑いはありましたが、管理画面にアクセスできるようになってからはあっという間でした。 すぐに使える環境が手に入るのはとてもいいと感じました。便利な追加リポジトリが整備されるなど利用者目線で便利な機能がたくさんありそうで今後が楽しみです。

今回初めてAWSに触ってみたことで周りのクラスメソッドメンバーには「沼にようこそ」と歓迎されました。 これは入り口で広大な世界が待っているようです。今後はもっとちょっとレベルを上げた内容にしたいと思います!!