rago1975が自ら環境を構築して執筆するブログ

Arch Linux の php-fpm の設定でハマってしまった話

表のサイト(www.rago1975.net) について、11月下旬からずっと閲覧できない状況が続いていました。年末年始バタバタしていたことと、うまく作動しない原因がわからない状態で、2ヶ月くらい放置状態になっていました。

ログを確認したところnginx が以下のようなエラーを吐いていました。


FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: www.rago1975.net, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:", host: "rago1975.net"

ちょうどその頃、Let's encrypt を導入化してサイトをhttps 化したり、http →https へのリダイレクトを設定するために、nginx の設定を色々いじくっていたところなので、nginxの設定を間違えたのかな、と思って色々調べたけれどもよくわからない。

このブログ(Python, Django)は問題なく動いているので、php-fpmの問題だと思い、/etc/php/php-fpm.d/www.conf の各項目を確認したけれども原因がわからず、結構途方に暮れていました。

結局、Arch Linux のフォーラムで解決策を見つけました。[SOLVED] nginx + php-fpm - file not found, primary script unknown

つまり、/etc/systemd/system/multi-user.target.wants/php-fpm.service 内のパラメータ Set ProtectHomefalse にすれば良かったのです。

このサーバは Arch Linux なので、通常2週間に1回程度の頻度でシステムのアップデートを手動で行います。11月のアップデートで、/etc/systemd/system/multi-user.target.wants/php-fpm.serviceがシステムによって上書きされたと考えられます。

今回の件は、/etc/systemd/の下のファイルの設定だったので、(私が)原因に気がつくのが遅くなった、Arch Linux のフォーラムをもう少し注意して見ておけば良かったのかな、とは思いました。