From d3452fc59b9839846225fd254926c64a9c71f071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Sat, 18 Apr 2020 16:10:56 +0200 Subject: Refactor websites --- modules/private/websites/jerome/naturaloutil.nix | 100 +++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 modules/private/websites/jerome/naturaloutil.nix (limited to 'modules/private/websites/jerome') diff --git a/modules/private/websites/jerome/naturaloutil.nix b/modules/private/websites/jerome/naturaloutil.nix new file mode 100644 index 0000000..8bbb49e --- /dev/null +++ b/modules/private/websites/jerome/naturaloutil.nix @@ -0,0 +1,100 @@ +{ lib, pkgs, config, ... }: +let + adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; }; + cfg = config.myServices.websites.jerome.naturaloutil; + varDir = "/var/lib/ftp/jerome"; + env = config.myEnv.websites.jerome; + apacheUser = config.services.httpd.Prod.user; + apacheGroup = config.services.httpd.Prod.group; + secretsPath = config.secrets.fullPaths."websites/jerome/naturaloutil"; +in { + options.myServices.websites.jerome.naturaloutil.enable = lib.mkEnableOption "enable Jerome Naturaloutil's website"; + + config = lib.mkIf cfg.enable { + services.webstats.sites = [ { name = "naturaloutil.immae.eu"; } ]; + + security.acme.certs."ftp".extraDomains."naturaloutil.immae.eu" = null; + + secrets.keys = [{ + dest = "websites/jerome/naturaloutil"; + user = apacheUser; + group = apacheGroup; + permissions = "0400"; + text = '' + ssl_set(NULL, NULL, "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt", NULL, NULL); + '' else ""} + $database = connect_db($db, $mysql_server, $mysql_base, $mysql_user, $mysql_password); + ?> + ''; + }]; + system.activationScripts.jerome_naturaloutil = { + deps = [ "httpd" ]; + text = '' + install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/jerome_naturaloutil + ''; + }; + systemd.services.phpfpm-jerome_naturaloutil.after = lib.mkAfter [ "mysql.service" ]; + systemd.services.phpfpm-jerome_naturaloutil.wants = [ "mysql.service" ]; + services.phpfpm.pools.jerome_naturaloutil = { + user = apacheUser; + group = apacheGroup; + settings = { + "listen.owner" = apacheUser; + "listen.group" = apacheGroup; + + "pm" = "ondemand"; + "pm.max_children" = "5"; + "pm.process_idle_timeout" = "60"; + + "php_admin_value[open_basedir]" = "/var/lib/php/sessions/jerome_naturaloutil:${secretsPath}:${varDir}:/tmp"; + "php_admin_value[session.save_path]" = "/var/lib/php/sessions/jerome_naturaloutil"; + }; + phpEnv = { + BDD_CONNECT = secretsPath; + }; + phpOptions = config.services.phpfpm.phpOptions + '' + extension=${pkgs.php}/lib/php/extensions/mysqli.so + ''; + }; + services.websites.env.production.modules = adminer.apache.modules ++ [ "proxy_fcgi" ]; + services.websites.env.production.vhostConfs.jerome_naturaloutil = { + certName = "jerome"; + certMainHost = "naturaloutil.immae.eu"; + hosts = ["naturaloutil.immae.eu" ]; + root = varDir; + extraConfig = [ + (adminer.apache.vhostConf null) + '' + Use Stats naturaloutil.immae.eu + ServerAdmin ${env.server_admin} + ErrorLog "${varDir}/logs/error_log" + CustomLog "${varDir}/logs/access_log" combined + + + SetHandler "proxy:unix:${config.services.phpfpm.pools.jerome_naturaloutil.socket}|fcgi://localhost" + + + + AllowOverride None + Require all denied + + + DirectoryIndex index.php index.htm index.html + Options Indexes FollowSymLinks MultiViews Includes + AllowOverride None + Require all granted + + '' + ]; + }; + }; +} -- cgit v1.2.3