Closed39

学習記録#1 250531

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

今日は15時から予定があるので、明日からの学習に使うPHPの環境をサクッと組み立てる
Dockerで環境作るけど、Dockerfileとかの大枠はClaudeさんに書いてもらった。便利

関係ないけど、検索する時とかにClaudeさんをよくCloudって書き間違えちゃう。多分GoogleCloudってよく入力するから手癖になってる

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

ChatGPT曰く、

かつてのCGIという技術は

  • リクエストが来る
  • phpをプロセスごとに起動し直す
  • 結果を返す
  • 終了する
    というのを毎回やっており、非常に重かった

FastCGIはそれを改良したもので、

  • phpを起動しっぱなしにする
  • WebサーバーはFastCGI経由でphpにリクエストを送る
  • プロセスが再利用される
    という感じで効率がよく、圧倒的に高速&軽量
ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)
  • 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を作成

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

ちなみに、max_input_varsはGET/POST/COOKIEとかで受け渡せる変数の最大数らしい
max_input_vars=1000だったら、最大1000個の変数までしか受け取れませんよ〜みたいな

max_input_timeは、GET/POST/PUTとかで入力データを受け付けられる最大時間らしい
max_input_time=1000なら、1000秒以内じゃないとデータが受け取れない

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

try_filesは、指定した順にファイルが実行できるか試して、最初に実行できたものを使うことを指定するやつ

try_files $uri $uri/ /index.php?$query_string;
だと、最初にuri、次にuri/...の順で試して、最初に見つかったやつを採用する

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

ろみぃ(konatsu)ろみぃ(konatsu)

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

このスクラップは3ヶ月前にクローズされました