North Detail / ノースディテール

BLOG ブログ

ブログ
CATEGORY
TECH

AWS(EC2)を立ち上げてPHPを動かす話

※本記事は、NorthDetail Advent Calendar 2019の一環として投稿しています

はじめに

AWSのEC2のインスタンスを立ち上げて、PHPを動かしていきます。
ハンズオン形式なので興味のある方は是非この機会に試してください。
はじめにインスタンスを作成します。ここでいうインスタンスとは、仮想サーバーのことです。
レンタルサーバー(オンプレミス)との違いは、EC2は従量課金制であるため、
使った分だけ料金の支払いで済みます。
(今回は無料のインスタンスを使用するため料金はかかりません。)
作業の流れは以下の通りです。
はじめに立ち上げたインスタンスにソフトウェアをインストールするためにssh接続を行います。
次にインスタンスをwebサーバーとして動かすためにApacheをインストールします。
最後にPHPをインストールし、インスタンスの中でPHPを動かします。

注意

⚠️実際にWeb上で立ち上がってしまうので、自己責任でお願いします。

準備するもの

  • PC(Macのターミナルを使います)
  • AWSのアカウント

手順

  1. インスタンスの作成
  2. インスタンスにssh接続
  3. Apacheをインストール
  4. PHPをインストール

1.インスタンスの作成

  1. AWSにログイン
  2. ヘッダーの「サービス」→コンピューティング配下の「EC2」をクリック
画像1.png

  1. EC2ダッシュボードが表示されるので、左側のメニューバーの「インスタンス」をクリック
  2. 「インスタンスの作成」ボタンが表示されるのでクリック

画像2.png
  1. インスタンスの作成画面が表示
  2. 「クイックスタート」の一番上にある、Amazon Linux 2 AMI (HVM), SSD Volume Type
    「選択」ボタンを押下(AWSのアカウントを作成して1年以内であれば無料で作成できます。)
画像3.png
  1. インスタンスタイプの選択画面が表示されるので、タイプがt2.microに選択されているのを確認し、「確認と作成」ボタンを押下
画像4.png
  1. インスタンス作成の確認画面が表示されるので、右下の「起動」ボタンを押下
  2. 下記のような画面が表示されるので、「新しいキーペアの作成」を選択後、キーペア名を入力して「キーペアのダウンロード」を押下、その後「インスタンスの作成」を押下
    (ダウンロードした「○○○○.pem」はデスクトップに移動してください。)
    (すでにキーペアを作成している場合は、「既存のキーペアの選択」を選択しても問題ないです)
画像5.png
  1. 作成が完了すると、インスタンス一覧画面が表示
      インスタンスの状態が「running」になっていれば成功です!
画像6.png

2.インスタンスにssh接続

  1. 作成したインスタンスを選択し、「接続」ボタンを押下
  2. インスタンスへの接続画面が表示されるので、目を通しておく
    今回はスタンドアロン SSH クライアントで作成したインスタンスにssh接続していきます
    • macを使用している場合は、下記の画像の「3.」と「4.」のみで接続が可能
    • winを使用している場合は、下記の画像の「1.」に記載のある「PuTTY を使用した接続」

を行わなければならない

画像7.png
  1. アプリケーションの「ターミナル」を起動します
  2. ダウンロードした.pemのあるディレクトリに移動
$ cd ~/Desktop  #ダウンロードした.pemファイルをデスクトップに移動していた場合
  1. pemファイルの権限を「所有者 読み込み権限」に設定
$ chmod 400 {設定したキーペア名}.pem
  1. インスタンスにssh接続
$ ssh -i "設定したキーペア名.pem" ec2-user@{下記画像の「パブリックDNS」}
画像13_指摘.png
  1. (yes or no)と聞かれるので、「yes」と入力
  2. ターミナルの左側が[ec2-user@{プライベートip} ~]$になっていればssh接続が成功!

接続できない..

  • カレントディレクトリ配下にpemファイルの存在を確認
  • pemのパーミッションが合っているか
$ ll
-r--------@  1 daichi.sugiyama  staff  1111 11 11 00:00 hogeyama.pem 

3.Apacheをインストール

  1. Apacheをインストール
    色々聞かれると思いますがy+enterで良いです
$ sudo yum update
$ sudo yum install httpd
  1. Apacheを起動
$ sudo systemctl start httpd
  1. Apacheの状態を確認
    「active (running)」と色がついて表示されていれば成功です
$ sudo systemctl status httpd
  1. 「パブリックDNS」をコピーしブラウザで検索
    ポートが開いていないため、何も表示されません
    続いてポートを開きます
    ※パブリックDNSは手順2.インスタンスにssh接続の「6.インスタンスにssh接続」を参照
  2. EC2ダッシュボードの、左側のメニューバーの「セキュリティグループ」をクリック
画像8.png
  1. グループ名「launch-wizard-1」を選択
    ※初めてインスタンスを立ち上げた場合、「launch-wizard-1」が用意されています
    何度かインスタンスを立ち上げている場合、作成したインスタンスに対応したセキュリティーグループを選択してください。
    (私は複数のインスタンスを作成していたので「launch-wizard-4」を選択)
    セキュリティーグループの確認方法は左側の「インスタンス」クリックし、グループ名で確認できます。
  2. 画面下のインバウンドをクリックし、「編集ボタン」を押下
画像9.png
  1. インバウンドのルール編集画面が表示されるので、「ルールの追加」ボタンを押下
  2. タイプをHTTPに選択し、「保存」ボタンを押下
画像10.png

  1. 「4.」と同じくIPをコピーしてブラウザで検索し、下記の画面が表示されていれば成功です!

スクリーンショット 2019-12-15 13.17.23.png

4.PHPをインストール

※インスタンスにssh接続した状態で行ってください
素直にyum install phpだと古いバージョンのphpがインストールされてしまうので、
remiを使って最新バージョンのphp7.4をインストールして行きます。
1.remiを追加し、PHPをインストール
※1行づつコピーして実行してください

$ sudo wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo rpm -ivh epel-release-latest-7.noarch.rpm
$ sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum-config-manager --enable remi-php74
$ sudo yum install -y php74 php74-php php74-php-fpm
$ sudo ln -s /usr/bin/php74 /usr/bin/php

以下のように表示されれば、インストール成功です!

$ php -v
PHP 7.4.1 (cli) (built: Dec 17 2019 16:35:58) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Apacheに適応させるために再起動

$ sudo systemctl reload httpd

2.PHPが正常に動作しているのかを確認するために、PHPファイルを作成

$ cd /var/www/html/
$ sudo touch index.php 

3.PHPファイルを編集

$ sudo vi index.php

キーボードのIを押下し、「INSERT」モードに設置
下記のコードを入力

<?php
echo "Hello World!";

キーボードのescを押下し、:wqを入力しenter

4.再度パブリックDNSをブラウザで検索をして、下記のように画面が表示されていれば成功です!

スクリーンショット 2019-12-15 14.26.16.png

まとめ

無事、EC2で立ち上げたインスタンスをwebサーバーとしてPHPファイルを実行できたと思います。
追加でMySQLをインストールすると、WordPressやLaravelを動かすことができます。

daichi.sugiyama
WRITER:daichi.sugiyama
主な記事 一覧へ

一覧へ

IS 501383 / ISO 27001