【AWS】EC2 インスタンス上で GitHub からクローンした PHP アプリを動かす

# はじめに
この記事では、EC2 インスタンス上で GitHub からクローンした PHP アプリを動かす方法を記載します。

# 開発環境
開発環境は以下の通りです。

- Apache 2.4.62
- PHP 8.3.7
- Git 2.40.1

# 事前準備
以下の2点を事前準備しておきます。

## PHP アプリの作成
以下のファイルを持つ PHP アプリを GitHub 上に作成します。

```index.php
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>PHP Samples</title>
</head>
<body>
  <h1>PHP Samples</h1>
  <p>Hello PHP!</P>
</body>
</html>
```

```clock.php
<?php
  $currentTime = date("H:i:s");
  echo "現在の時刻は " . $currentTime . " です。";
?>

```

## EC2 インスタンスの作成
以下の記事の内容で EC2 インスタンスを作成します。

https://qiita.com/Yasushi-Mo/items/c87fa189db431d9e6f22

# パッケージ管理ツールをアップデートする


```
sudo yum update
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/c48fba4c-87f3-256d-c85a-e9dfebecee09.png)

# Apache をインストールする
Web サーバーとして、Apache をインストールします。

```
sudo yum install httpd
```

途中確認が入るので、「y」を入力して、Enter をクリックします。
インストールが完了したら、正常にインストールできたか確認するために以下のコマンドでバージョンを確認します。

```
httpd -v
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/203f0e49-ecb8-6f85-bb55-c1c74a0480fc.png)

# PHP をインストールする
Web アプリを動かすために PHP をインストールする

```
sudo yum install php
```

今回も途中確認が入るので、「y」を入力して、Enter をクリックします。

```
php -v
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/ac76484c-5fb0-22f1-a56c-6d177402587f.png)

# Web サーバーを起動する

```
sudo service httpd start
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/f958d322-c192-164c-4aef-62d3538e1359.png)

:::note
EC2 再起動時に Web サーバーを自動起動するようにするためには、追加で以下のコマンドを実行します。

```
sudo chkconfig httpd on
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/d56a6d08-eaed-d3eb-d16b-3d2a0769f74c.png)

:::

# Git をインストールする
GitHub からコードをクローンするために Git をインストールします。

```
sudo yum update
```

```
sudo yum install git
```

今回も途中確認が入るので、「y」を入力して、Enter をクリックします。
インストールに成功すると、バージョンが表示できます。

```
git -v
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/68bd3704-bc9d-65d7-2519-305bb9e7a43f.png)


# GitHub からアプリをクローンする
HTTPS を利用してクローンします。

```
cd /var/www/html
```

```
sudo git clone https://github.com/hoge/php-samples.git
```

# 動作確認
Public IP にアクセスすると、「It works!」という画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/03764d15-4747-2f02-a816-163c3dfde5b6.png)

アプリのルートディレクトリにアクセスすると、`sample.php` に実装したコードが表示されます。

`http://[Public IP Address]/php-sample`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/c11cc41c-613f-40b4-ecbc-21d45e997e88.png)


`/clock.php` にアクセスすると、現在時刻が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/af17c23d-917a-a429-44ce-a340331db339.png)


# 参考
- [小山雄太「WebアプリをAWSで公開しよう【AWSハンズオン虎の巻シリーズ】: 初心者も安心！手を動かしながらAWSの基本がしっかり学べる一冊！」2023](https://www.amazon.co.jp/Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92AWS%E3%81%A7%E5%85%AC%E9%96%8B%E3%81%97%E3%82%88%E3%81%86%E3%80%90AWS%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3%E8%99%8E%E3%81%AE%E5%B7%BB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%E3%80%91-%E5%88%9D%E5%BF%83%E8%80%85%E3%82%82%E5%AE%89%E5%BF%83%EF%BC%81%E6%89%8B%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%AA%E3%81%8C%E3%82%89AWS%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%8C%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E5%AD%A6%E3%81%B9%E3%82%8B%E4%B8%80%E5%86%8A%EF%BC%81-%E5%B0%8F%E5%B1%B1-%E9%9B%84%E5%A4%AA-ebook/dp/B0CH7P3SQM)