blob: 9c4e13297e7ade65f5e7d61154415eb9658ff2d3 (
plain) (
tree)
|
|
{ stdenv, fetchurl, nginx }:
let
adminer = rec {
webRoot = stdenv.mkDerivation rec {
version = "4.7.0";
name = "adminer-${version}";
src = fetchurl {
url = "https://www.adminer.org/static/download/${version}/${name}.php";
sha256 = "1qq2g7rbfh2vrqfm3g0bz0qs057b049n0mhabnsbd1sgnpvnc5z7";
};
phases = "installPhase";
installPhase = ''
mkdir -p $out
cp $src $out/index.php
'';
};
phpFpm = rec {
socket = "/var/run/phpfpm/adminer.sock";
pool = ''
listen = ${socket}
user = ${apache.user}
group = ${apache.group}
listen.owner = ${apache.user}
listen.group = ${apache.group}
pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 60
;php_admin_flag[log_errors] = on
; Needed to avoid clashes in browser cookies (same domain)
php_value[session.name] = AdminerPHPSESSID
php_admin_value[open_basedir] = "${webRoot}:/tmp"
php_admin_value[session.save_path] = "/var/lib/php/sessions/adminer"
'';
};
apache = rec {
user = "wwwrun";
group = "wwwrun";
modules = [ "proxy_fcgi" ];
webappName = "_adminer";
root = "/run/current-system/webapps/${webappName}";
vhostConf = ''
Alias /adminer ${root}
<Directory ${root}>
DirectoryIndex index.php
Require all granted
<FilesMatch "\.php$">
SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
</FilesMatch>
</Directory>
'';
};
nginxConf = {
alias = webRoot;
index = "index.php";
extraConfig = ''
include ${nginx}/conf/fastcgi.conf;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param HTTP_PROXY "";
fastcgi_param SCRIPT_FILENAME ${webRoot}/index.php;
fastcgi_pass unix:${phpFpm.socket};
fastcgi_index index.php;
fastcgi_intercept_errors on;
'';
};
};
in
adminer
|