9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AmazonLinux2にPHP8.1とnginxを導入してphpinfo();を表示するまで

Last updated at Posted at 2022-08-15

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

php81phpで呼び出せるようにしておきます

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ディレクトリを編集します

/etc/nginx/nginx.conf
        root         /var/www/app/public;

/etc/nginx/conf.d/ディレクトリにnginxのconfファイルを生成します。
以下2点がポイントになると思います。

  • rootディレクトリを先ほどのnginx.confと合わせる
  • fastcgi_passをphp81のwww.sockにする
/etc/nginx/conf.d/app.conf
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を置きます

/var/www/app/public/index.php
<?php
phpinfo();
?>

php-fpmをnginxで使えるようにする

php-fpmのwww.confを編集します

このlistenを編集する点がどこにも書いてなくて詰まりました

/etc/opt/remi/php81/php-fpm.d/www.conf
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();が表示されました。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?