WordPress: Difference between revisions

From NixOS Wiki
imported>Farzin-az
No edit summary
imported>Onny
Added simple setup
Line 1: Line 1:
Since NixOS-19.09, it is possible to configure one or more wordpress instances using the '''services.wordpress''' module:
== Installation ==
 
A simple local setup of Wordpress can be enabled with the following setup
 
<syntaxHighlight lang="nix">
services.wordpress.sites."localhost".enabled = true;
</syntaxHighlight>
 
Visit http://localhost to setup your new Wordpress instance. By default, a Mysql server is configured automatically so you won't have to setup the database backend.
 
== Configuration ==
 
=== Plugins and themes ===
 
In case you want to package and add custom plugins and themes, you can add these too


<syntaxHighlight lang="nix">
<syntaxHighlight lang="nix">
Line 34: Line 48:
in
in
{
{
# Note the .sites - the upstream module says this is the new syntax,
# the old is only supported because of a hack at the very top of the module
   services.wordpress.sites."webservice5" = {
   services.wordpress.sites."webservice5" = {
    database.createLocally = true;  # name is set to `wordpress` by default
     themes = [ responsiveTheme ];
     themes = [ responsiveTheme ];
     plugins = [ akismetPlugin ];
     plugins = [ akismetPlugin ];
Line 49: Line 60:


[[Category:Services]]
[[Category:Services]]
[[Category:Web Apps]]

Revision as of 15:14, 31 July 2022

Installation

A simple local setup of Wordpress can be enabled with the following setup

services.wordpress.sites."localhost".enabled = true;

Visit http://localhost to setup your new Wordpress instance. By default, a Mysql server is configured automatically so you won't have to setup the database backend.

Configuration

Plugins and themes

In case you want to package and add custom plugins and themes, you can add these too

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.sites."webservice5" = {
    themes = [ responsiveTheme ];
    plugins = [ akismetPlugin ];
    virtualHost = {
      adminAddr = "js@lastlog.de";
      serverAliases = [ "webservice5" "www.webservice5" ];
    };
  };
}