0
0

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.

EC2にlaravel(php-fpm)をinstallするメモ

Last updated at Posted at 2022-11-11

前提

EC2で

  • publicサブネット:webサーバー(nginx)
  • privateサブネット:appサーバー(php-fpm)

の2台構成での想定。

installする際にインターネット接続が必要なため、
privateサブネッtのEC2はnatゲートウェイを介してインターネット接続可能な状態にしている。

目標

  • publicサブネットにあるwebサーバー(nginx)にhttpリクエストで
    privateサブネットにあるappサーバー(php-fpm)が動くところを確認する。
    • phpinfoの表示
  • php-fpmが動くことを確認できたら、laravelを動かす
    スクリーンショット 2022-11-11 10.11.46.png

nginxのインストール

こっちで行っている

php・php-fpmのインストール

yumのパッケージ更新

$ sudo yum update

amazon-linux-extras リポジトリがインストールされているか確認する

$which amazon-linux-extras
/usr/bin/amazon-linux-extras

なかったら

$sudo yum install -y amazon-linux-extras

installできるphpを確認

$ amazon-linux-extras | grep php
 42  php7.4                   available    [ =stable ]
 51  php8.0                   available    [ =stable ]

最新のphp8.0をinstallすることにします

php8.0をインストールすると関連してインストールされるパッケージの確認

$ amazon-linux-extras info php8.0
php8.0 recommends php-cli                    # yum install php-cli
php8.0 recommends php-pdo                    # yum install php-pdo
php8.0 recommends php-fpm                    # yum install php-fpm
php8.0 recommends php-mysqlnd                # yum install php-mysqlnd

phpインストール

$ sudo amazon-linux-extras install php8.0 -y

//確認
$ php -v
PHP 8.0.20 (cli) (built: Jun 23 2022 20:34:07) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies

$ php-fpm -v
PHP 8.0.20 (fpm-fcgi) (built: Jun 23 2022 20:36:04)
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies
//php-fpm自動起動
$ sudo systemctl enable php-fpm

//php-fpm起動・停止・再起動
$ sudo systemctl start php-fpm
$ sudo systemctl stop php-fpm
$ sudo systemctl restart php-fpm

php拡張パッケージの確認

$ sudo yum list php*
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
インストール済みパッケージ
php-cli.x86_64                                                     8.0.20-1.amzn2                                           @amzn2extra-php8.0
php-common.x86_64                                                  8.0.20-1.amzn2                                           @amzn2extra-php8.0
php-fpm.x86_64                                                     8.0.20-1.amzn2                                           @amzn2extra-php8.0
php-mysqlnd.x86_64                                                 8.0.20-1.amzn2                                           @amzn2extra-php8.0
php-pdo.x86_64                                                     8.0.20-1.amzn2                                           @amzn2extra-php8.0
利用可能なパッケージ
php.x86_64                                                         8.0.20-1.amzn2                                           amzn2extra-php8.0
php-bcmath.x86_64                                                  8.0.20-1.amzn2                                           amzn2extra-php8.0
php-dba.x86_64                                                     8.0.20-1.amzn2                                           amzn2extra-php8.0
php-dbg.x86_64                                                     8.0.20-1.amzn2                                           amzn2extra-php8.0
php-devel.x86_64                                                   8.0.20-1.amzn2                                           amzn2extra-php8.0
php-embedded.x86_64                                                8.0.20-1.amzn2                                           amzn2extra-php8.0
php-enchant.x86_64                                                 8.0.20-1.amzn2                                           amzn2extra-php8.0
php-gd.x86_64                                                      8.0.20-1.amzn2                                           amzn2extra-php8.0
php-gmp.x86_64                                                     8.0.20-1.amzn2                                           amzn2extra-php8.0
php-intl.x86_64                                                    8.0.20-1.amzn2                                           amzn2extra-php8.0
php-ldap.x86_64                                                    8.0.20-1.amzn2                                           amzn2extra-php8.0
php-mbstring.x86_64                                                8.0.20-1.amzn2                                           amzn2extra-php8.0
php-mysql.x86_64                                                   5.4.16-43.amzn2                                          amzn2-core
php-odbc.x86_64                                                    8.0.20-1.amzn2                                           amzn2extra-php8.0
php-opcache.x86_64                                                 8.0.20-1.amzn2                                           amzn2extra-php8.0
php-pear.noarch                                                    1:1.10.12-9.amzn2                                        amzn2-core
php-pecl-imagick.x86_64                                            3.5.1-1.amzn2.0.1                                        amzn2extra-php8.0
php-pecl-imagick-devel.noarch                                      3.5.1-1.amzn2.0.1                                        amzn2extra-php8.0
php-pecl-memcache.x86_64                                           3.0.8-4.amzn2                                            amzn2-core
php-pgsql.x86_64                                                   8.0.20-1.amzn2                                           amzn2extra-php8.0
php-process.x86_64                                                 8.0.20-1.amzn2                                           amzn2extra-php8.0
php-pspell.x86_64                                                  8.0.20-1.amzn2                                           amzn2extra-php8.0
php-recode.x86_64                                                  5.4.16-46.amzn2.0.2                                      amzn2-core
php-snmp.x86_64                                                    8.0.20-1.amzn2                                           amzn2extra-php8.0
php-soap.x86_64                                                    8.0.20-1.amzn2                                           amzn2extra-php8.0
php-sodium.x86_64                                                  8.0.20-1.amzn2                                           amzn2extra-php8.0
php-xml.x86_64                                                     8.0.20-1.amzn2                                           amzn2extra-php8.0
php-xmlrpc.x86_64                                                  5.4.16-46.amzn2.0.2                                      amzn2-core

各種設定

スクリーンショット 2022-11-11 10.15.33.png

この構成を満たせるように設定をする。

AWSの設定

Webサーバー(publicサブネット)

スクリーンショット 2022-11-11 10.50.25.png

appサーバー(privateサブネット)

スクリーンショット 2022-11-11 10.51.22.png

nginxの設定

etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include /etc/nginx/mime.types;
    charset UTF-8;
    default_type application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen 80;
        root /var/source;
        index index.php;
        server_name 10.0.10.164;

        location / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass   10.0.10.164:9000;
                fastcgi_index  index.php;

                include        fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO $fastcgi_path_info;
        }
    }
}

php-fpmの設定

/etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen = 0.0.0.0:9000
listen.allowed_clients = 10.0.0.196

所有者を変更する

$ chown -R nginx:nginx /var/source

権限を変更する

$ chmod 644 /var/source/index.php
$ ll /var/source/
-rw-r--r-- 1 nginx nginx 20 11月 10 09:16 index.php

確認

スクリーンショット 2022-11-11 10.55.52.png

とりあえずphpが動いていることを確認できた。

Laravelを動かしてみる

composerインストール

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 
$ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup. php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer
//確認
$ composer -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.4.4 2022-10-27 14:39:29

Laravelインストール

$ composer create-project laravel/laravel example-app
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?