学習記録#1 250531

今まで手書きのノートとかにメモりながら勉強とか作業してたけど、大体メモ書いた場所忘れてその場限りのものになっちゃうので、今日からスクラップに書くのを試してみる

スクラップのタイトルは後から編集できるっぽいので、今日の学習が終わったら大まかにどんなことしたか補足を足しとくとあとで自分が見返しやすいなと思ったり
#1とかのままだと手書きのノートと同じことが起こるに決まってるので、、

スクラップをクローズしたら、それ以降誰も書き込めなくなりますよ〜ってことなんかな
あんまり細かい機能をよくわかってない

トピックを追加してみた

今日は15時から予定があるので、明日からの学習に使うPHPの環境をサクッと組み立てる
Dockerで環境作るけど、Dockerfileとかの大枠はClaudeさんに書いてもらった。便利
関係ないけど、検索する時とかにClaudeさんをよくCloudって書き間違えちゃう。多分GoogleCloudってよく入力するから手癖になってる

FROM php:8.3-fpm
ってあるけど、php-fpmのことざっくりしか知らないので調べてみよかな
今は時間がないので帰宅後とかで

ざっくり書くと、ApacheとかNginxとかのWebサーバーとphpを連携させるためのFast CGIプロセスマネージャーというものらしい。
今度はFast CGIプロセスマネージャーが分からん

fastcgiは、Webサーバーとアプリケーションを繋ぐための通信プロトコル
ちなみに、通信プロトコルは、異なるデバイス間で相互に通信するための手順とか規約のこと

ChatGPTが言うには、Webサーバーからphpなどの処理を効率的に外注するための仕組みらしい
外注ってどう言うことなん

CGIがCommon Gateway Interfaceの略語らしい。なるほど、ちょっと輪郭が見えてきた感じする

速いCGIってこと?

ChatGPT曰く、
かつてのCGIという技術は
- リクエストが来る
- phpをプロセスごとに起動し直す
- 結果を返す
- 終了する
というのを毎回やっており、非常に重かった
FastCGIはそれを改良したもので、
- phpを起動しっぱなしにする
- WebサーバーはFastCGI経由でphpにリクエストを送る
- プロセスが再利用される
という感じで効率がよく、圧倒的に高速&軽量

apt-get install -y
の-yってなんだっけ

yes
っていうオプションらしい。これがないとインストール時に「本当にインストールする?」って聞かれるのか〜

僕、内なる独り言が多いタイプだから文字に起こすとめっちゃペラペラ喋ってておもろいね

libpng-dev
libonig-dev
libxml2-dev
ってなんで必要なんだ?

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
って、結局何やってるんだろう

--from=composer:latestがcomposerの最新のDockerイメージで、このイメージの/usr/bin/composerを僕のコンテナの/usr/bin/composerにコピーしますよ〜ってことらしい。なるほど

家出る準備をするので一旦この辺で区切る

帰宅した

groupaddとuseraddコマンドについても、改めてちゃんと調べてみる

- groupaddコマンド: グループを追加する
- gオプション: GIDを指定する
- useraddコマンド: ユーザーを追加する
- uオプション: UIDを指定する
- mオプション: このユーザーのホームディレクトリを作成する
- sオプション: このユーザーのログインシェルを指定する
- gオプション: このユーザーに所属させるグループを指定する
groupadd -g 1000 testG
→GID1000のグループ、testGを作成
useradd -u 1000 -ms /bin/bash -g testG testU
→UID1000でtestGに所属するユーザー、testUを作成

chownって絶対どっちがユーザーでどっちがグループかわからんくなるんよな
[ユーザー名]:[グループ名]らしいです

php.iniのmax_execution_timeって何を設定してるんだ?

1つのphpスクリプトが実行できる最大時間らしい
なるほど、これが設定されてるから、タイムアウトとかがちゃんと出るわけね

ちなみに、max_input_varsはGET/POST/COOKIEとかで受け渡せる変数の最大数らしい
max_input_vars=1000だったら、最大1000個の変数までしか受け取れませんよ〜みたいな
max_input_timeは、GET/POST/PUTとかで入力データを受け付けられる最大時間らしい
max_input_time=1000なら、1000秒以内じゃないとデータが受け取れない

default.confでfastcgiの設定がいっぱい出てきた!
こいつらは一体何!

fastcgi_paramっていうので環境変数っぽい感じで何か値が設定されてる雰囲気はわかる


default.confのlocationって何を設定してるんやろ

特定のURLに対してNginxがどう処理するかを設定してるらしい

try_filesは、指定した順にファイルが実行できるか試して、最初に実行できたものを使うことを指定するやつ
try_files $uri $uri/ /index.php?$query_string;
だと、最初に

fastcgi_なんちゃ系のやつは、nginxがphp(FastCGIアプリケーション)にリクエストを送るときに使う設定

fastcgi_pass:宛先
fastcgi_split_path_info:リクエストされたパスを分割し、スクリプトファイル部分とPATH_INFO部分を分ける。値は正規表現になってるっぽい
fastcgi_index:try_filesやlocationの中でディレクトリにアクセスがあったとき、どのファイルをデフォルトで使うか設定する
fastcgi_param:FastCGIの環境変数。予想通りだった

gzip_staticは、nginxが事前に圧縮された.gzファイルを使うためのディレクティブ
onかoffで設定する

そろそろ晩御飯なので一旦Uberする

ピザ頼んだ🤤

ピザ来た🍕

Dockerfile、phpとnginxの設定ファイル、docker-compose.yml、composer.jsonを書ききって、疑問もあらかた解消したので、今日のphpの環境づくりはこの辺で終わりにする