Laravel9を使うにはPHP8.1が必要ですが、amazon-linux-extrasにはPHP8.0までしかありません。ググりながらインストールを進めましたが、php-fpmとnginxの設定で詰まったので、備忘録を残しておくことにしました。
一通りの作業を終えてから記事として書きましたので、抜け漏れ等がありましたらご指摘いただけると嬉しいです。よろしくお願いいたします。
PHP8.1をインストールする
amazon-linux-extrasにはPHP8.0までしか用意がありませんので、epelとremiを入れます
sudo amazon-linux-extras install epel -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
php8.1とphp-fpmを入れます
sudo yum install php81 php81-php-fpm
(参考)Laravel9を使う場合はこのようになります
sudo yum install php81 php81-php-mbstring php81-php-mysqlnd php81-php-gd php81-php-xml php81-php-fpm
php81
をphp
で呼び出せるようにしておきます
sudo alternatives --install /usr/bin/php php /usr/bin/php81 1
(参考)Laravelを使うには、composerを入れておきます。公式を参考にしました
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php
sudo php -r "unlink('composer-setup.php');"
nginxのインストールとconfファイルの用意
nginxを入れます
sudo amazon-linux-extras install nginx1
/etc/nginx/nginx.conf
のrootディレクトリを編集します
root /var/www/app/public;
/etc/nginx/conf.d/
ディレクトリにnginxのconfファイルを生成します。
以下2点がポイントになると思います。
- rootディレクトリを先ほどのnginx.confと合わせる
- fastcgi_passをphp81のwww.sockにする
server {
listen 80;
charset UTF-8;
root /var/www/app/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/opt/remi/php81/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
ここで指定したroot/var/www/app/public
内にindex.php
を置きます
<?php
phpinfo();
?>
php-fpmをnginxで使えるようにする
php-fpmのwww.confを編集します
このlistenを編集する点がどこにも書いてなくて詰まりました
listen = /var/opt/remi/php81/run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
;listen.acl_users = apache,nginx
nginxとphp-fpmを立ち上げる
いずれも立ち上げて自動起動を有効化します
sudo systemctl start php81-php-fpm
sudo systemctl enable php81-php-fpm
sudo systemctl start nginx
sudo systemctl enable nginx
これで完了です。EC2インスタンスの、パブリックIPv4アドレスにアクセスすると、phpinfo();が表示されました。