やりたいこと
- 検証用のEC2にWebAPIをサクッと作る
- PHPで実装
クライアントの要望でEC2上にPHPで簡単なRestAPIを作成することになった。
作成するのはPostとPutの2つのAPIのみ。
PHP自体が初なのでそもそもの実現方法から検討。
調べたところ生のPHPでもroutingなどは行えそうではあったが、Larvelの軽量フレームワークLumenであれば割と手軽に入れて実装自体も簡単そうだったので今回はLumenで対応。
手順
1. EC2にapacheをインストール
まずは更新
sudo yum update -y
次にインストール
sudo yum install httpd
2. EC2にphpをインストール
EC2用のPHPを入れることで7系のPHPのインストールが行える。
(LumenがPHP7.3以降しか対応していない)
sudo amazon-linux-extras install php7.4 -y
4. EC2にcomposerをインストール
Lumenを利用するために必要なcomposerをインストールする。
公式サイトに記載があるコマンドをコピペして実行
https://getcomposer.org/download/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
composerの本体はbin以下においておく
sudo mv composer.phar /usr/local/bin/composer
5. Lumenのセットアップ
まずはLumenで必要なライブラリをインストール
sudo yum install php-mbstring php-pecl-memcached php-gd php-apcu php-xml -y
続いてLumenを入れていく
composer global require "laravel/lumen-installer=~1.0"
プロジェクトの雛形を作成する
cd /var/www/html
lumen new blog
※上記のコマンドの最後のblog
がフォルダ名になるので自由に変える
※apache上で動かすので /var/www/html
配下に作成した。
なお、Lumenを入れずにcomposerの以下のコマンドでもプロジェクトの雛形は作成可能
composer create-project --prefer-dist laravel/lumen blog
6. 権限設定
Lumenのログとキャッシュのフォルダに書き込み権限を付与する。
これやらないとログが出せない。
cd /var/www/html/blog
chmod -R 777 bootstrap
chmod -R 777 storage
7. Apache Virtual Hostの設定
/etc/httpd/conf.d
以下にvhost.conf
を作成する。
※ファイル名は拡張子が.conf
であればなんでもOK
中身を記載する
※DocumentRoot
とServerName
でどのドメインでアクセスされたらどこをDocumentRootにするかを指定するための設定
<VirtualHost *:80>
DocumentRoot /var/www/html/blog/public
ServerName [EC2のパブリックDNS名称]
<Directory "/var/www/html/blog/public">
# allow .htaccess
AllowOverride All
# Setting Laravel environment
SetEnv APP_ENV development
# Allow access
Require all granted
</Directory>
</VirtualHost>
一旦これでポート80のhttpの通信に対応できるようになる。
Direcory以下を記載しないとRestのRountingが動かないので記載する。
APP_ENVとかは多分なくても動く。
ドメイン直下にアクセスするとLumenのバージョンが表示される。
Lumen (8.2.3) (Laravel Components ^8.0)
8. 完了
これで一通りの設定は完了
あとは好きなように実装するのみ。