Add svnserve example service, allow Apache to run CGI scripts
This commit is contained in:
parent
4b4250e0b6
commit
0c0fa7ff49
|
@ -53,4 +53,11 @@ in
|
|||
enableSupervisordProgram = true;
|
||||
});
|
||||
};
|
||||
|
||||
svnserve = import ./svnserve.nix {
|
||||
svnserveConstructorFun = constructors.svnserve;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableSubversionRepository = true;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{apacheConstructorFun, dysnomia}:
|
||||
{instanceSuffix ? "", port ? 80, modules ? [], serverName ? "localhost", serverAdmin, documentRoot ? ./webapp, extraConfig ? "", enablePHP ? false, filesetOwner ? null, type}:
|
||||
{instanceSuffix ? "", port ? 80, modules ? [], serverName ? "localhost", serverAdmin, documentRoot ? ./webapp, extraConfig ? "", enableCGI ? false, enablePHP ? false, filesetOwner ? null, type}:
|
||||
|
||||
let
|
||||
pkg = apacheConstructorFun {
|
||||
inherit instanceSuffix port modules serverName serverAdmin documentRoot extraConfig enablePHP;
|
||||
inherit instanceSuffix port modules serverName serverAdmin documentRoot extraConfig enableCGI enablePHP;
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for the Apache HTTP server
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
{svnserveConstructorFun, dysnomia}:
|
||||
{instanceSuffix ? "", port ? 3690, svnBaseDir, svnGroup ? "root", type}:
|
||||
|
||||
let
|
||||
instanceName = "svnserve${instanceSuffix}";
|
||||
|
||||
pkg = svnserveConstructorFun {
|
||||
inherit instanceSuffix port svnBaseDir svnGroup;
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for Subversion repositories
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
cat > $out/etc/dysnomia/containers/subversion-repository${instanceSuffix} <<EOF
|
||||
svnGroup=${svnGroup}
|
||||
svnBaseDir=${svnBaseDir}
|
||||
EOF
|
||||
|
||||
# Copy the Dysnomia module that manages a Subversion repository
|
||||
mkdir -p $out/libexec/dysnomia
|
||||
ln -s ${dysnomia}/libexec/dysnomia/subversion-repository $out/libexec/dysnomia
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
name = instanceName;
|
||||
inherit pkg type svnGroup svnBaseDir;
|
||||
providesContainer = "subversion-repository";
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
{createManagedProcess, apacheHttpd}:
|
||||
{createManagedProcess, apacheHttpd, cacheDir}:
|
||||
{instanceSuffix ? "", configFile, initialize ? "", postInstall ? ""}:
|
||||
|
||||
let
|
||||
|
@ -21,6 +21,7 @@ createManagedProcess {
|
|||
users = {
|
||||
"${user}" = {
|
||||
inherit group;
|
||||
homeDir = "${cacheDir}/${user}";
|
||||
description = "Apache HTTP daemon user";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -15,12 +15,12 @@ let
|
|||
in
|
||||
{
|
||||
apache = import ./apache.nix {
|
||||
inherit createManagedProcess;
|
||||
inherit createManagedProcess cacheDir;
|
||||
inherit (pkgs) apacheHttpd;
|
||||
};
|
||||
|
||||
simpleWebappApache = import ./simple-webapp-apache.nix {
|
||||
inherit createManagedProcess logDir runtimeDir forceDisableUserChange;
|
||||
inherit createManagedProcess logDir cacheDir runtimeDir forceDisableUserChange;
|
||||
inherit (pkgs) stdenv apacheHttpd php writeTextFile;
|
||||
};
|
||||
|
||||
|
@ -83,4 +83,9 @@ in
|
|||
inherit (pkgs) writeTextFile;
|
||||
inherit (pkgs.pythonPackages) supervisor;
|
||||
};
|
||||
|
||||
svnserve = import ./svnserve.nix {
|
||||
inherit createManagedProcess runtimeDir forceDisableUserChange;
|
||||
inherit (pkgs) stdenv subversion;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -52,7 +52,14 @@ rec {
|
|||
pkg = constructors.simpleMongodb {};
|
||||
};*/
|
||||
|
||||
extendableSupervisord = rec {
|
||||
extendableSupervisord = {
|
||||
pkg = constructors.extendableSupervisord {};
|
||||
};
|
||||
|
||||
svnserve = {
|
||||
pkg = constructors.svnserve {
|
||||
svnBaseDir = "/repos";
|
||||
svnGroup = "root";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{createManagedProcess, stdenv, apacheHttpd, php, writeTextFile, logDir, runtimeDir, forceDisableUserChange}:
|
||||
{instanceSuffix ? "", port ? 80, modules ? [], serverName ? "localhost", serverAdmin, documentRoot ? ./webapp, enablePHP ? false, extraConfig ? "", postInstall ? ""}:
|
||||
{createManagedProcess, stdenv, apacheHttpd, php, writeTextFile, logDir, runtimeDir, cacheDir, forceDisableUserChange}:
|
||||
{instanceSuffix ? "", port ? 80, modules ? [], serverName ? "localhost", serverAdmin, documentRoot ? ./webapp, enablePHP ? false, enableCGI ? false, extraConfig ? "", postInstall ? ""}:
|
||||
|
||||
let
|
||||
instanceName = "httpd${instanceSuffix}";
|
||||
|
@ -29,12 +29,13 @@ let
|
|||
"autoindex"
|
||||
"alias"
|
||||
"dir"
|
||||
];
|
||||
]
|
||||
++ stdenv.lib.optional enableCGI "cgi";
|
||||
|
||||
apacheLogDir = "${logDir}/${instanceName}";
|
||||
in
|
||||
import ./apache.nix {
|
||||
inherit createManagedProcess apacheHttpd;
|
||||
inherit createManagedProcess apacheHttpd cacheDir;
|
||||
} {
|
||||
inherit instanceSuffix postInstall;
|
||||
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
{createManagedProcess, stdenv, subversion, runtimeDir, forceDisableUserChange}:
|
||||
{instanceSuffix ? "", port ? 3690, svnBaseDir, svnGroup, postInstall ? ""}:
|
||||
|
||||
let
|
||||
instanceName = "svnserve${instanceSuffix}";
|
||||
pidFile = "${runtimeDir}/${instanceName}.pid";
|
||||
in
|
||||
createManagedProcess {
|
||||
name = instanceName;
|
||||
inherit instanceName postInstall;
|
||||
initialize = ''
|
||||
mkdir -p ${svnBaseDir}
|
||||
${stdenv.lib.optionalString (!forceDisableUserChange) ''
|
||||
chgrp ${svnGroup} ${svnBaseDir}
|
||||
''}
|
||||
'';
|
||||
process = "${subversion.out}/bin/svnserve";
|
||||
args = [ "-r" svnBaseDir "--listen-port" (toString port) ];
|
||||
foregroundProcessExtraArgs = [ "--foreground" ];
|
||||
daemonExtraArgs = [ "--daemon" "--pid-file" pidFile ];
|
||||
|
||||
overrides = {
|
||||
sysvinit = {
|
||||
runlevels = [ 3 4 5 ];
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue