pkgsrc/www/ap2-fcgid

mod_fcgid の socket / shm のファイル作成場所について。
fcgid_conf.c:

#define DEFAULT_SOCKET_PREFIX "logs/fcgidsock"
#define DEFAULT_SHM_PATH "logs/fcgid_shm"

で,

        config->sockname_prefix =
                ap_server_root_relative(p, DEFAULT_SOCKET_PREFIX);
        config->shmname_path = ap_server_root_relative(p, DEFAULT_SHM_PATH);

なので,apacheもpkgsrcデフォルトのままだとすると,おそらく/usr/pkg/logs/以下になる。

で,標準でそんなディレクトリはないので,

[emerg] (2)No such file or directory: mod_fcgid: Can't create share memory for size %zu byte

といったエラーになる。

仕方がないのでhttpd.confなどで明示する。

<IfModule mod_fcgid.c>
  AddHandler fcgid-script .fcgi
  SocketPath /var/run/fcgidsock
  SharememPath /var/run/fcgid_shm
</IfModule>

SocketPathで指定するのはディレクトリで,その下にwww権限(apacheの実行権限)でソケットが作られる。
SharememPathの方はファイル名そのもの。root権限で作ってくれるようだ。

検索すると/tmp以下に置いている例もあるが,別にした方が良いと思う。