mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 23:03:40 +01:00
nixos/tomcat: add serverXml, environment files and log directories
* add serverXml verbatim override * add environment file * add log directory creation
This commit is contained in:
parent
50287f8c09
commit
024220bd7f
1 changed files with 52 additions and 5 deletions
|
@ -40,6 +40,21 @@ in
|
||||||
description = "Location where Tomcat stores configuration files, webapplications and logfiles";
|
description = "Location where Tomcat stores configuration files, webapplications and logfiles";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
logDirs = mkOption {
|
||||||
|
default = [];
|
||||||
|
description = "Directories to create in baseDir/logs/";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfigFiles = mkOption {
|
||||||
|
default = [];
|
||||||
|
description = "Extra configuration files to pull into the tomcat conf directory";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "File to be sourced before executing tomcat. Can be used to set environment variables";
|
||||||
|
};
|
||||||
|
|
||||||
extraGroups = mkOption {
|
extraGroups = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
example = [ "users" ];
|
example = [ "users" ];
|
||||||
|
@ -71,6 +86,14 @@ in
|
||||||
description = "List containing JAR files or directories with JAR files which are libraries shared by the web applications";
|
description = "List containing JAR files or directories with JAR files which are libraries shared by the web applications";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
serverXml = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "
|
||||||
|
Verbatim server.xml configuration.
|
||||||
|
This is mutualyl exclusive with the virtualHosts options.
|
||||||
|
";
|
||||||
|
};
|
||||||
|
|
||||||
commonLibs = mkOption {
|
commonLibs = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
description = "List containing JAR files or directories with JAR files which are libraries shared by the web applications and the servlet container";
|
description = "List containing JAR files or directories with JAR files which are libraries shared by the web applications and the servlet container";
|
||||||
|
@ -147,6 +170,8 @@ in
|
||||||
# Create the base directory
|
# Create the base directory
|
||||||
mkdir -p ${cfg.baseDir}
|
mkdir -p ${cfg.baseDir}
|
||||||
|
|
||||||
|
mkdir -p ${cfg.baseDir}
|
||||||
|
|
||||||
# Create a symlink to the bin directory of the tomcat component
|
# Create a symlink to the bin directory of the tomcat component
|
||||||
ln -sfn ${tomcat}/bin ${cfg.baseDir}/bin
|
ln -sfn ${tomcat}/bin ${cfg.baseDir}/bin
|
||||||
|
|
||||||
|
@ -160,6 +185,13 @@ in
|
||||||
ln -sfn ${tomcat}/conf/$i ${cfg.baseDir}/conf/`basename $i`
|
ln -sfn ${tomcat}/conf/$i ${cfg.baseDir}/conf/`basename $i`
|
||||||
done
|
done
|
||||||
|
|
||||||
|
${if cfg.extraConfigFiles != [] then ''
|
||||||
|
for i in ${toString cfg.extraConfigFiles}
|
||||||
|
do
|
||||||
|
ln -sfn $i ${cfg.baseDir}/conf/`basename $i`
|
||||||
|
done
|
||||||
|
'' else ""}
|
||||||
|
|
||||||
# Create subdirectory for virtual hosts
|
# Create subdirectory for virtual hosts
|
||||||
mkdir -p ${cfg.baseDir}/virtualhosts
|
mkdir -p ${cfg.baseDir}/virtualhosts
|
||||||
|
|
||||||
|
@ -169,14 +201,24 @@ in
|
||||||
-e 's|shared.loader=|shared.loader=''${catalina.base}/shared/lib/*.jar|' \
|
-e 's|shared.loader=|shared.loader=''${catalina.base}/shared/lib/*.jar|' \
|
||||||
${tomcat}/conf/catalina.properties > ${cfg.baseDir}/conf/catalina.properties
|
${tomcat}/conf/catalina.properties > ${cfg.baseDir}/conf/catalina.properties
|
||||||
|
|
||||||
# Create a modified server.xml which also includes all virtual hosts
|
${if cfg.serverXml != "" then ''
|
||||||
sed -e "/<Engine name=\"Catalina\" defaultHost=\"localhost\">/a\ ${
|
cat <<'EOF' > ${cfg.baseDir}/conf/server.xml
|
||||||
toString (map (virtualHost: ''<Host name=\"${virtualHost.name}\" appBase=\"virtualhosts/${virtualHost.name}/webapps\" unpackWARs=\"true\" autoDeploy=\"true\" xmlValidation=\"false\" xmlNamespaceAware=\"false\" >${if cfg.logPerVirtualHost then ''<Valve className=\"org.apache.catalina.valves.AccessLogValve\" directory=\"logs/${virtualHost.name}\" prefix=\"${virtualHost.name}_access_log.\" pattern=\"combined\" resolveHosts=\"false\"/>'' else ""}</Host>'') cfg.virtualHosts)}" \
|
${cfg.serverXml}EOF
|
||||||
${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml
|
'' else ''
|
||||||
|
# Create a modified server.xml which also includes all virtual hosts
|
||||||
|
sed -e "/<Engine name=\"Catalina\" defaultHost=\"localhost\">/a\ ${toString (map (virtualHost: ''<Host name=\"${virtualHost.name}\" appBase=\"virtualhosts/${virtualHost.name}/webapps\" unpackWARs=\"true\" autoDeploy=\"true\" xmlValidation=\"false\" xmlNamespaceAware=\"false\" >${if cfg.logPerVirtualHost then ''<Valve className=\"org.apache.catalina.valves.AccessLogValve\" directory=\"logs/${virtualHost.name}\" prefix=\"${virtualHost.name}_access_log.\" pattern=\"combined\" resolveHosts=\"false\"/>'' else ""}</Host>'') cfg.virtualHosts)}" \
|
||||||
|
${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml
|
||||||
|
''
|
||||||
|
}
|
||||||
# Create a logs/ directory
|
# Create a logs/ directory
|
||||||
mkdir -p ${cfg.baseDir}/logs
|
mkdir -p ${cfg.baseDir}/logs
|
||||||
chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/logs
|
chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/logs
|
||||||
|
${if cfg.logDirs != [] then ''
|
||||||
|
for i in ${toString cfg.logDirs}; do
|
||||||
|
mkdir -p ${cfg.baseDir}/logs/$i
|
||||||
|
chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/logs/$i
|
||||||
|
done
|
||||||
|
'' else ""}
|
||||||
${if cfg.logPerVirtualHost then
|
${if cfg.logPerVirtualHost then
|
||||||
toString (map (h: ''
|
toString (map (h: ''
|
||||||
mkdir -p ${cfg.baseDir}/logs/${h.name}
|
mkdir -p ${cfg.baseDir}/logs/${h.name}
|
||||||
|
@ -353,6 +395,11 @@ in
|
||||||
'';
|
'';
|
||||||
|
|
||||||
script = ''
|
script = ''
|
||||||
|
${if cfg.environment != "" then ''
|
||||||
|
if [ -r ${cfg.environment} ]; then
|
||||||
|
. ${cfg.environment}
|
||||||
|
fi
|
||||||
|
'' else ""}
|
||||||
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
|
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue