dockerにamazon linux 2023を入れてnginx + php-fpm + Laravel の環境を作ってみた
どうも柏倉です。
最近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機能で実装したいですよね笑
最後まで読んでいただきありがとうございました。