CentOS7 ベースの BlueOnyx 5209R の共用 apache 下で SpeedyCGI を使って PSGI を動かしたい。
# yum install --enablerepo=epel perl-CGI-SpeedyCG perl-Plack
# cat app.psgi
my $app = sub { [ 200, ["content-type", "text/plain"], [ "Hello @{[ rand ]}" ] ] };
# cat index.psgi
#!/usr/bin/speedy
use Plack::Handler::CGI;
use Plack::Loader;
my $app = Plack::Util::load_psgi("app.psgi");
Plack::Handler::CGI->new->run($app);
BlueOnyx は cgiwrap の仕組みがあるので、cgiであれば EUID 実行ユーザー がウェブ管理者のファイル所有者で実行される。
FastCGI も .htaccess で使えるのだけれど、apache ユーザーになってしまう。
PHP も mod_php DSO は同様に apache ユーザーになる。
PHP に関しては suPHP と FPM/FastCGI が選べるので、これだとウェブ管理者のユーザーで実行できる。
という訳で PHP 以外はウェブ管理者のユーザーで実行するには cgi しかないのだが、Perlに関しては SpeedyCGI なるものが存在して、EPEL から今でも入れられ、PSGIも高速に捌ける。。。
SpeedyCGI は root でなくともよいので、使いたい環境のバイナリを用意できれば使えるはず。