summaryrefslogtreecommitdiffstats
path: root/roles/mediawiki
diff options
context:
space:
mode:
authorMichael Scherer <misc@zarb.org>2015-03-23 18:32:29 +0100
committerMichael Scherer <misc@zarb.org>2015-03-23 18:32:29 +0100
commit5e82eb85edc36fb978588fceb8e622d76d727afa (patch)
tree03c5c0ec19e1696d0d34b1fd91913edde7714dee /roles/mediawiki
parent556ec4a888023cb771be892c67278170583da5f4 (diff)
Add a bit more code for deploying mediawiki
Diffstat (limited to 'roles/mediawiki')
-rw-r--r--roles/mediawiki/defaults/main.yml4
-rw-r--r--roles/mediawiki/tasks/main.yml23
-rw-r--r--roles/mediawiki/templates/LocalSettings.php175
3 files changed, 193 insertions, 9 deletions
diff --git a/roles/mediawiki/defaults/main.yml b/roles/mediawiki/defaults/main.yml
index 7772db3..05a85f2 100644
--- a/roles/mediawiki/defaults/main.yml
+++ b/roles/mediawiki/defaults/main.yml
@@ -1,3 +1,7 @@
---
cache_dir: /var/tmp/
version: 1.24.0
+wiki_name: The_unconfigured_wiki
+contact: root@localhost
+wiki_db_name: mediawiki
+wiki_db_user: wikiuser
diff --git a/roles/mediawiki/tasks/main.yml b/roles/mediawiki/tasks/main.yml
index 2f52933..2a9f1da 100644
--- a/roles/mediawiki/tasks/main.yml
+++ b/roles/mediawiki/tasks/main.yml
@@ -6,6 +6,9 @@
- php-gd
- php-xml
+- set_fact: wiki_secret_key="{{ lookup('password', 'passwords/mediawiki/wiki_secret_key length=60') }}"
+- set_fact: wiki_db_password="{{ lookup('password', 'passwords/mediawiki/wiki_db_password length=12') }}"
+
- get_url: dest={{ cache_dir }}/{{ item }} url=https://releases.wikimedia.org/mediawiki/{{ version | regex_replace('^(\d+)\.(\d+).*$', '\\1.\\2') }}/{{ item }}
with_items:
- mediawiki-{{ version }}.tar.gz
@@ -14,18 +17,20 @@
# TODO verify the signature when downloaded
-- file: state=directory name=/var/www/mediawiki{{ item }}
+- set_fact: wiki_dir=/var/www/mediawiki/
+
+- file: state=directory name={{ wiki_dir }}{{ item.path }} owner={{ item.owner }}
with_items:
- - /
- - /cache
+ - { path: "/", owner: "root" }
+ - { path: "/cache", owner: "apache" }
+ - { path: "/images", owner: "apache" }
-- command: creates=/var/www/mediawiki/mediawiki-{{ version }} tar -x --owner=root --group=root -f {{ cache_dir }}/mediawiki-{{ version }}.tar.gz -C /var/www/mediawiki/
+- set_fact: image_dir={{ wiki_dir }}/images
+- set_fact: code_dir={{ wiki_dir }}/mediawiki-{{ version }}
-# TODO selinux path ?
-- file: path=/var/www/mediawiki/mediawiki-{{ version }}/cache owner=apache state=directory
+- command: creates={{ code_dir }} tar -x --owner=root --group=root -f {{ cache_dir }}/mediawiki-{{ version }}.tar.gz -C {{ wiki_dir }}
+
+- template: src=LocalSettings.php dest={{ code_dir }}/LocalSettings.php
- template: src=wiki.conf dest=/etc/httpd/conf.d/www.theopensourceway.org.conf.d/wiki.conf
notify: restart httpd
-
-# upload dir, SELinux
-- file: state=directory path=/var/www/mediawiki_upload owner=apache
diff --git a/roles/mediawiki/templates/LocalSettings.php b/roles/mediawiki/templates/LocalSettings.php
new file mode 100644
index 0000000..7a4fbd1
--- /dev/null
+++ b/roles/mediawiki/templates/LocalSettings.php
@@ -0,0 +1,175 @@
+<?php
+
+# {{ ansible_managed }}
+
+# If you customize your file layout, set $IP to the directory that contains
+# the other MediaWiki files. It will be used as a base to locate files.
+if( defined( 'MW_INSTALL_PATH' ) ) {
+ $IP = MW_INSTALL_PATH;
+} else {
+# TODO
+ $IP = '{{ code_dir }}';
+}
+
+$path = array( $IP, "$IP/includes", "$IP/languages" );
+set_include_path( implode( PATH_SEPARATOR, $path ) . PATH_SEPARATOR . get_include_path() );
+
+require_once( "$IP/includes/DefaultSettings.php" );
+
+# If PHP's memory limit is very low, some operations may fail.
+ini_set( 'memory_limit', '20M' );
+
+if ( $wgCommandLineMode ) {
+ if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
+ die( "This script must be run from the command line\n" );
+ }
+}
+## Uncomment this to disable output compression
+# $wgDisableOutputCompression = true;
+
+# should be : "The_Open_Source_way" ( TODO check )
+$wgSitename = "{{ wiki_name }}";
+
+## The URL base path to the directory containing the wiki;
+## defaults for all runtime URL paths are based off of this.
+## For more information on customizing the URLs please see:
+## http://www.mediawiki.org/wiki/Manual:Short_URL
+$wgScriptPath = "/w";
+$wgScriptExtension = ".php";
+$wgArticlePath = "/wiki/$1";
+$wgUsePathInfo = true;
+
+## UPO means: this is also a user preference option
+
+$wgEnableEmail = true;
+$wgEnableUserEmail = true; # UPO
+
+$wgEmergencyContact = "{{ contact }}";
+$wgPasswordSender = "{{ contact }}";
+
+$wgEnotifUserTalk = true; # UPO
+$wgEnotifWatchlist = true; # UPO
+$wgEmailAuthentication = true;
+
+## Database settings
+$wgDBtype = "mysql";
+$wgDBserver = "localhost";
+$wgDBname = "{{ wiki_db_name }}";
+$wgDBuser = "{{ wiki_db_user }}";
+$wgDBpassword = "{{ wiki_db_password }}";
+
+# MySQL specific settings
+$wgDBprefix = "mw_";
+
+# MySQL table options to use during installation or update
+$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
+
+# Experimental charset support for MySQL 4.1/5.0.
+$wgDBmysql5 = true;
+
+## Shared memory settings
+$wgMainCacheType = CACHE_NONE;
+$wgMemCachedServers = array();
+
+## To enable image uploads, make sure the 'images' directory
+## is writable, then set this to true:
+$wgEnableUploads = true;
+$wgUseImageMagick = true;
+$wgImageMagickConvertCommand = "/usr/bin/convert";
+
+# TODO
+$wgUploadPath = "$wgScriptPath/images";
+$wgUploadDirectory = "$IP/images";
+
+## If you use ImageMagick (or any other shell command) on a
+## Linux server, this will need to be set to the name of an
+## available UTF-8 locale
+$wgShellLocale = "en_US.utf8";
+
+## If you want to use image uploads under safe mode,
+## create the directories images/archive, images/thumb and
+## images/temp, and make them all writable. Then uncomment
+## this, if it's not already uncommented:
+#$wgHashedUploadDirectory = false;
+
+## If you have the appropriate support software installed
+## you can enable inline LaTeX equations:
+$wgUseTeX = false;
+
+$wgLocalInterwiki = strtolower( $wgSitename );
+
+$wgLanguageCode = "en";
+
+# TODO
+$wgSecretKey = "{{ wiki_secret_key }}";
+
+## Default skin: you can change the default skin. Use the internal symbolic
+## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook':
+$wgDefaultSkin = 'monobook';
+
+## For attaching licensing metadata to pages, and displaying an
+## appropriate copyright notice / icon. GNU Free Documentation
+## License and Creative Commons licenses are supported so far.
+$wgEnableCreativeCommonsRdf = true;
+$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
+$wgRightsUrl = "https://creativecommons.org/licenses/by-sa/3.0/";
+$wgRightsText = "Attribution-Share Alike 3.0 Unported";
+$wgRightsIcon = "https://i.creativecommons.org/l/by-sa/3.0/88x31.png";
+# $wgRightsCode = "[license_code]"; # Not yet used
+
+$wgDiff3 = "/usr/bin/diff3";
+
+# When you make changes to this configuration file, this will make
+# sure that cached pages are cleared.
+$wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) );
+
+# Permission controls to limit access.
+# added 2010-01-26 Karsten Wade
+
+// Implicit group for all visitors
+$wgGroupPermissions['*' ]['createaccount'] = false;
+$wgGroupPermissions['*' ]['read'] = true;
+$wgGroupPermissions['*' ]['edit'] = false;
+$wgGroupPermissions['*' ]['createpage'] = false;
+$wgGroupPermissions['*' ]['createtalk'] = false;
+
+// Implicit group for all logged-in accounts
+$wgGroupPermissions['user' ]['move'] = true;
+$wgGroupPermissions['user' ]['read'] = true;
+$wgGroupPermissions['user' ]['edit'] = true;
+$wgGroupPermissions['user' ]['createpage'] = true;
+$wgGroupPermissions['user' ]['createtalk'] = true;
+$wgGroupPermissions['user' ]['upload'] = true;
+$wgGroupPermissions['user' ]['reupload'] = true;
+$wgGroupPermissions['user' ]['reupload-shared'] = true;
+$wgGroupPermissions['user' ]['minoredit'] = false;
+$wgGroupPermissions['user' ]['purge'] = true; // can use ?action=purge without clicking "ok"
+// Adding that all logged-in accounts can create new user acounts; we are relying upon humans vetting humans
+$wgGroupPermissions['user' ]['createaccount'] = true;
+
+// Implicit group for accounts that pass $wgAutoConfirmAge
+$wgGroupPermissions['autoconfirmed']['autoconfirmed'] = true;
+
+// Implicit group for accounts with confirmed email addresses
+// This has little use when email address confirmation is off
+$wgGroupPermissions['emailconfirmed']['emailconfirmed'] = true;
+
+$wgGroupPermissions['bot' ]['autopatrol'] = true;
+
+// Custom image - temporary
+// $wgLogo = "{$wgScriptPath}/skins/toswskin/dandelion-logo.png";
+
+// Setting to blank to show background with logo on it. It remains clickable,
+// but it's a hack. -- kwade 2010-02-26
+$wgLogo = "";
+
+##### Added to allow arbitrary file uploads
+## by Karsten Wade 20120723
+$wgFileExtensions = array('png', 'gif', 'jpg', 'jpeg', 'odp', 'odt', 'ods', 'pdf', 'jnlp', 'vsd', 'tgz', 'zip', 'gz', 'tgz', 'bz2');
+$wgVerifyMimeType = false;
+
+
+// Adding Cite extension -
+// http://www.mediawiki.org/wiki/Extension:Cite/Cite.php#Installation (using mediawiki-Cite pkg)
+// 2010-03-06 kwade
+require_once("$IP/extensions/Cite/Cite.php");