diff options
-rw-r--r-- | roles/mediawiki/defaults/main.yml | 4 | ||||
-rw-r--r-- | roles/mediawiki/tasks/main.yml | 23 | ||||
-rw-r--r-- | roles/mediawiki/templates/LocalSettings.php | 175 |
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"); |