Difference between revisions of "Wordpress"

From NixOS Wiki
Jump to: navigation, search
m
(Remove pre-19.09 configuration using services.httpd.extraSubservices)
Line 49: Line 49:
 
   };
 
   };
 
}
 
}
</syntaxHighlight>
 
 
 
== Before NixOS-19.09: httpd extraSubservices example ==
 
 
This guide shows how to manage a '''single wordpress instance'''.  add this to your ''configuration.nix'' file:
 
 
<syntaxHighlight lang="nix">
 
let
 
 
# For shits and giggles, let's package the responsive theme
 
responsiveTheme = pkgs.stdenv.mkDerivation {
 
  name = "responsive-theme";
 
  # Download the theme from the wordpress site
 
  src = pkgs.fetchurl {
 
    url = http://wordpress.org/themes/download/responsive.1.9.7.6.zip;
 
    sha256 = "06i26xlc5kdnx903b1gfvnysx49fb4kh4pixn89qii3a30fgd8r8";
 
  };
 
  # We need unzip to build this package
 
  buildInputs = [ pkgs.unzip ];
 
  # Installing simply means copying all files to the output directory
 
  installPhase = "mkdir -p $out; cp -R * $out/";
 
};
 
 
# Wordpress plugin 'akismet' installation example
 
akismetPlugin = pkgs.stdenv.mkDerivation {
 
  name = "akismet-plugin";
 
  # Download the theme from the wordpress site
 
  src = pkgs.fetchurl {
 
    url = https://downloads.wordpress.org/plugin/akismet.3.1.zip;
 
    sha256 = "1i4k7qyzna08822ncaz5l00wwxkwcdg4j9h3z2g0ay23q640pclg";
 
  };
 
  # We need unzip to build this package
 
  buildInputs = [ pkgs.unzip ];
 
  # Installing simply means copying all files to the output directory
 
  installPhase = "mkdir -p $out; cp -R * $out/";
 
};
 
 
in
 
 
...
 
 
  ######### <wordpress using httpd> #########################################
 
  # nix-env -qaP mysql
 
  services.mysql = {
 
    enable = true;
 
    package = pkgs.mysql;
 
  };
 
 
  services.httpd = {
 
    enable = true;
 
    logPerVirtualHost = true;
 
    adminAddr="js@lastlog.de";
 
    extraModules = [
 
      { name = "php5"; path = "${pkgs.php}/modules/libphp5.so"; }
 
    ];
 
 
    virtualHosts = [
 
      # webservice5 (http)
 
      {
 
        hostName = "webservice5";
 
        serverAliases = [ "webservice5" "www.webservice5" ];
 
 
        extraSubservices =
 
        [
 
          {
 
            serviceType = "wordpress";
 
            dbPassword = "wordpress";
 
            wordpressUploads = "/data/uploads";
 
            themes = [ responsiveTheme ];
 
            plugins = [ akismetPlugin ];
 
          }
 
        ];
 
      }
 
    ];
 
  };
 
  ######### </wordpress using httpd> ###########################
 
 
</syntaxHighlight>
 
</syntaxHighlight>
  
 
[[Category:Services]]
 
[[Category:Services]]

Revision as of 16:29, 19 December 2019

Since NixOS-19.09, it is possible to configure one or more wordpress instances using the services.wordpress module:

let

# For shits and giggles, let's package the responsive theme
responsiveTheme = pkgs.stdenv.mkDerivation {
  name = "responsive-theme";
  # Download the theme from the wordpress site
  src = pkgs.fetchurl {
    url = http://wordpress.org/themes/download/responsive.1.9.7.6.zip;
    sha256 = "06i26xlc5kdnx903b1gfvnysx49fb4kh4pixn89qii3a30fgd8r8";
  };
  # We need unzip to build this package
  buildInputs = [ pkgs.unzip ];
  # Installing simply means copying all files to the output directory
  installPhase = "mkdir -p $out; cp -R * $out/";
};

# Wordpress plugin 'akismet' installation example
akismetPlugin = pkgs.stdenv.mkDerivation {
  name = "akismet-plugin";
  # Download the theme from the wordpress site
  src = pkgs.fetchurl {
    url = https://downloads.wordpress.org/plugin/akismet.3.1.zip;
    sha256 = "1i4k7qyzna08822ncaz5l00wwxkwcdg4j9h3z2g0ay23q640pclg";
  };
  # We need unzip to build this package
  buildInputs = [ pkgs.unzip ];
  # Installing simply means copying all files to the output directory
  installPhase = "mkdir -p $out; cp -R * $out/";
};

in
{
  services.wordpress."webservice5" = {
    database = {
      host = "127.0.0.1";
      name = "wordpress";
      passwordFile = pkgs.writeText "wordpress-insecure-dbpass" "wordpress";
      createLocally = true;
    };
    themes = [ responsiveTheme ];
    plugins = [ akismetPlugin ];
    virtualHost = {
      adminAddr = "js@lastlog.de";
      serverAliases = [ "webservice5" "www.webservice5" ];
    };
  };
}