dockerにamazon linux 2023を入れてnginx + php-fpm + Laravel の環境を作ってみた

#インフラ
writtdden by KashiwakuraKazuki

どうも柏倉です。

最近amazon linux 2023のイメージがdockerで公開されていることを知って、ローカルで少し環境を作ってみました。

amazon linux 2 との違い

まず、ベースOSが違います。

amazon linux 2 CentOS7
amazon linux 2023 Fedora 34、35、および36

次にパッケージマネージャーが、yumからdnfに変更されています。
またExtras Libraryは存在しておらず、公式のリポジトリを使用することが前提になっているようです。

デフォルトでインストールされているサービスも違いがありました。
個人的に気になったのは、cronとrsyslogがインストールされていなかったことですかね。

パッケージの中には入っているので、使用したい方は自分でインストールしましょう。
以下最新のパッケージリスト
https://docs.aws.amazon.com/linux/al2023/release-notes/all-packages-al2023-20230329.html

dockerに入れてみる

docker pull amazonlinux:2023
docker run -p 8888:80 amazonlinux:2023 /bin/bash

これでamazon linux 2023のコンテナが作成されました。

nginxのインストール

それでがamazonlinux20223の中に入って、nginxのインストールからしていきます。
先ほども言った通り、yumは使えなくなっていますので、dnfを使用します。

インストールが終わったら「/etc/nginx/conf.d/default.conf」を編集します。

server {
    listen 80;
    server_name example.com;
    root /var/www/html/laravel/public; # ここはlaravelを設置するディレクトリに書き換えてください。

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock; # あとで使うのでここを覚えておいてください。
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

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

先ほどと同じ要領でphpとphp-fpmもインストールします。

インストールが終わったら、/etc/php-fpm/www.confを編集していきます。

user = nginx
group = nginx

そして、38行目付近のlistenの内容がnginxのdefault.confのfastcgi_passと同じになっていることを確認してください。

listen = /run/php-fpm/www.sock

ソケットの作られるディレクトリを作っておきましょう。

mkdir /run/php-fpm/

これでphp-fpmの設定は終わりです。

Composerのインストール

Laravelをインストールするために、まずComposerをインストールしていきます。
unzipも必要になるので、インストールしておきましょう。

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');"
    mv composer.phar /usr/local/bin/composer

これでComposerのインストールは終わりです。

Laravelのインストール

最後にLaravelをComposerを使ってインストールします。

composer create-project laravel/laravel
chmod -R 777 storage

localhost:8080で接続が確認できれば終了です!

最後に

いかがでしたでしょうか?
色々変更点はありましたが、簡単に実装できたと思います。
今回はOSの検証を込めて一つのコンテナに色々入れてみましたが、やっぱりdockerを使うなら1コンテナ1機能で実装したいですよね笑
最後まで読んでいただきありがとうございました。

Favorite