X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=Mediawiki_Setup_Guide;h=6bbdf27aa544b6c3e54f8c2cf378e9b3dc6533b3;hb=10095af47126071a9def7bb38cb94908478c9f72;hp=d17fa35edaa7b0d74bb3fcae8eae9906f3b4d6c6;hpb=e8ca8d27f45d2585bb8fba1d9d60a1f56fb170d6;p=mediawiki-setup diff --git a/Mediawiki_Setup_Guide b/Mediawiki_Setup_Guide index d17fa35..6bbdf27 100644 --- a/Mediawiki_Setup_Guide +++ b/Mediawiki_Setup_Guide @@ -6,26 +6,26 @@ * Good recommendations. Official docs mostly avoid recommendations among a myriad of possibilities * Closely references & supplements official documentation +* Automatic security updates * Explicit automation support wherever practical -* Used to setup this site (style optional) -* Contributions welcome and will be updated/tested on this very site! +* Used to setup this site (style is optional) * Support for multiple gnu/linux distros -* Holistic scope (backups, server setup), but sections stand on their own -* Explicit support for production & local testing instance. Additions for production like https and web analytics. -* Edits to this page are closely monitored by the original author. +* Holistic scope (backups, server setup), but sections are independent +* Code blocks are [https://en.wikipedia.org/wiki/Idempotent idempotent] +* Edits to this page are tested on this site and reviewed by the main author. '''Assumptions''' -* Self hosting, single GNU/Linux system with Bash shell -* Root shell is assumed throughout -* Code blocks are [https://en.wikipedia.org/wiki/Idempotent idempotent] +* Self hosting, single GNU/Linux system with root Bash shell + '''Version Support''' Very minor adjustments needed for other distros. Help expand this list. -* Mediawiki 1.27 -* Debian 8 (tested) -* Debian testing (tested Aug 7, 2016) +* Mediawiki 1.28, updated as new versions are released +* Debian 8 + backports +* Debian 8 +* Debian testing (last tested Aug 7, 2016) Pre 5/2016 revisions ran Mediawiki 1.23, tested on Fedora 20 and Ubuntu 14.04. @@ -77,10 +77,9 @@ EOF # The rest of this section will work fine with no changes. -# git branch for mediawiki + extensions. -# This guide has only been tested with 1_27. +# git branch for mediawiki + extensions. See intro for supported versions. # branch names: https://git.wikimedia.org/branches/mediawiki%2Fcore.git -export mw_branch=REL1_27 +export mw_branch=REL1_28 # As set by gui installer when choosing cc by sa. export mw_RightsUrl='https://creativecommons.org/licenses/by-sa/4.0/' @@ -140,7 +139,7 @@ mw-clone() { local url=$1 local original_pwd="$PWD" local name - local re='[^/]*/[^/]*$' + local re='[^/]*/[^/]*$' # last 2 parts of path [[ $url =~ $re ]] ||: target=$mw/${BASH_REMATCH[0]} if [[ ! -e $target/.git ]]; then @@ -158,11 +157,10 @@ mw-clone() { } mw-ext () { local ext - for ext in "$@"; do + for ext; do mw-clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/$ext - if [[ -e $mw/ext/$ext/extension.json ]]; then - # new style extension. remove old style declaration - sed -i --follow-symlinks '#^require_once( "\\\$IP/extensions/\$ext/\$ext\.php" );#d' $mwc + if [[ -e $mw/extensions/$ext/extension.json ]]; then + # new style extension teeu $mwc </dev/null; then - # in debian wheezy time-frame distros, mediawiki was packaged. - apt-get -y install php-apc mediawiki php-mbstring + # mediawiki is packaged in jessie backports. + DEBIAN_FRONTEND=noninteractive apt-get -y install php5-apcu mediawiki else # https://www.mediawiki.org/wiki/Manual:Installation_requirements if apt-get install -s php7.0 &>/dev/null; then @@ -233,13 +231,15 @@ if isdeb; then # available in debian 8. it's listed as supported # in the mediawiki page. # noninteractive to avoid mysql password prompt. - DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 mysql-server \ + DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 \ + default-mysql-server \ php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-xml \ php7.0-apcu php7.0-mbstring else # note: mbstring is recommended, but it's not available for php5 in # debian jessie. - DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 mysql-server \ + DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 \ + default-mysql-server \ php5 php5-mysql libapache2-mod-php5 php5-apcu fi fi @@ -299,6 +299,8 @@ fi # git branch -r git checkout -f origin/$mw_branch git clean -ffxd +# apply librejs patch +curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-1.28-librejs.patch;hb=HEAD" | patch -r - -N -p1 # Get the php libraries wmf uses. Based on: # https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries if [[ ! -e vendor/.git ]]; then @@ -435,7 +437,7 @@ teeu $mwc< -Settings I recommend which are different than the defaults. +Settings asked by the gui setup which are different than the install script defaults. They different because the defaults are the most compatible and unobtrusive. teeu $mwc< @@ -459,11 +462,14 @@ $wgArticlePath = "/wiki/$1"; # not using nofollow is good practice, as long as we avoid spam. $wgNoFollowLinks = false; # Allow user customization. -$wgAllowUserJs = true; $wgAllowUserCss = true; - # use imagemagick over GD $wgUseImageMagick = true; +# manual says this is not production ready, I think that is mostly +# because they are using MobileFrontend extension instead, which gives +# an even cleaner more minimal view, I plan to try setting it up +# sometime but this seems like a very nice improvement for now. +$wgVectorResponsive = true; EOF @@ -498,7 +504,7 @@ if ! git remote show ian-kelling &>/dev/null; then git remote add ian-kelling https://iankelling.org/git/forks/Vector fi git fetch ian-kelling -git checkout ian-kelling/REL1_27-toolbox-in-dropdown +git checkout ian-kelling/${mw_branch}-toolbox-in-dropdown == Install and Configure Mediawiki Extensions == @@ -507,15 +513,18 @@ When installing extensions on a wiki with important content, backup first as a p ''' Extensions with no configuration needed ''' -{| class="wikitable" +{| class="writable" ! Name ! Description |- | [[mediawikiwiki:Extension:Cite|Extension:Cite]] - | Have references in footnotes. + | Have references in footnotes* |- | [[mediawikiwiki:Extension:CiteThisPage|Extension:CiteThisPage]] - | Ability to generate citations to pages in a variety of styles. + | Ability to generate citations to pages in a variety of styles* + |- + | [[mediawikiwiki:CheckUser|Extension:CheckUser]] + | Get ip addresses from inside mediawiki so you can ban users'' |- | [[mediawikiwiki:Extension:CSS|Extension:CSS]] | Allows CSS stylesheets to be included in specific articles @@ -524,36 +533,41 @@ When installing extensions on a wiki with important content, backup first as a p | Notification subsystem for usage by other extensions |- | [[mediawikiwiki:Extension:Gadgets|Extension:Gadgets]] - | UI extension system for users + | UI extension system for users* |- | [[mediawikiwiki:Extension:ImageMap|Extension:ImageMap]] - | Links for a region of an image + | Links for a region of an image* |- | [[mediawikiwiki:Extension:Interwiki|Extension:Interwiki]] - | Tool for nice links to other wikis + | Tool for nice links to other wikis* |- | [[mediawikiwiki:Extension:News|Extension:News]] | Embed or rss recent changes |- | [[mediawikiwiki:Extension:Nuke|Extension:Nuke]] - | Mass delete of pages, in the case of spam + | Mass delete of pages, in the case of spam* |- | [[mediawikiwiki:Extension:ParserFunctions|Extension:ParserFunctions]] - | Useful for templates + | Useful for templates* |- | [[mediawikiwiki:Extension:Poem|Extension:Poem]] - | Useful for formatting things various ways + | Useful for formatting things various ways* + |- + | [[mediawikiwiki:Extension:Renameuser|Extension:Renameuser]] + | Allows bureaucrats to rename user accounts* |- | [[mediawikiwiki:Extension:SyntaxHighlight_GeSHi|Extension:SyntaxHighlight_GeSHi]] - | Source code highlighting + | Source code highlighting* |- | [[mediawikiwiki:Extension:Variables|Extension:Variables]] | Define per-page variables |} +* = Comes with the MediaWiki default download. + -mw-ext Cite CiteThisPage CSS Echo Gadgets ImageMap Interwiki News \ - Nuke ParserFunctions Poem SyntaxHighlight_GeSHi Variables +mw-ext Cite CiteThisPage CheckUser CSS Echo Gadgets ImageMap Interwiki News \ + Nuke ParserFunctions Poem Renameuser SyntaxHighlight_GeSHi Variables @@ -566,15 +580,6 @@ sudo -u $apache_user php $mw/extensions/AntiSpoof/maintenance/batchAntiSpoof.php -''' [[mediawikiwiki:CheckUser|Extension:CheckUser]]: Get ip addresses from inside mediawiki so you can ban users''' - -Requires special install steps or we can get into a bad state. Add a sleep like the default of update.php to avoid errors. - -mw-ext CheckUser -sudo -u $apache_user php $mw/extensions/CheckUser/install.php; sleep 1 - - - '''[[mediawikiwiki:Extension:Wikidiff2|Extension:Wikidiff2]]: Faster and international character supported page diffs''' I used packaged version since this is a c++ and probably not very tied to the Mediawiki version. This isn't packaged in fedora, haven't gotten around to testing and adding the code to compile it for fedora. @@ -629,6 +634,8 @@ There is no current list of package depencies so I took dependencies from mediaw ''' [[mediawikiwiki:Extension:SpamBlacklist|Extension:SpamBlacklist]]: Import/create IP blacklists, mainly for spam''' +Comes with MediaWiki. + mw-ext SpamBlacklist if ! grep -F '$wgSpamBlacklistFiles = array(' $mwc &>/dev/null; then @@ -647,6 +654,8 @@ fi ''' [[mediawikiwiki:Extension:TitleBlacklist|Extension:TitleBlacklist]]: Anti-spam ''' +Comes with Mediawiki. + mw-ext TitleBlacklist if ! grep -F '$wgTitleBlacklistSources = array(' $mwc &>/dev/null; then @@ -667,6 +676,8 @@ fi ''' [[mediawikiwiki:Extension:WikiEditor|Extension:WikiEditor]]: Editing box extras and a fast preview tab ''' +Comes with MediaWiki. + mw-ext WikiEditor teeu $mwc <<'EOF' @@ -704,9 +715,9 @@ $wgGroupPermissions['sysop']['abusefilter-revert'] = true; EOF -'''[[mediawikiwiki:Extension:ConfirmEdit|Extension:ConfirmEdit]]: Custom Captcha''' +'''[[mediawikiwiki:Extension:ConfirmEdit|Extension:ConfirmEdit]]: Custom Captcha.''' -Uses captchaArray defined in mw_vars. +Uses captchaArray defined in mw_vars. Comes with MediaWiki. mw-ext ConfirmEdit @@ -849,25 +860,19 @@ x("MediaWiki:Sidebar", """* navigation # remove side panel # helpfull doc: https://www.mediawiki.org/wiki/Manual:Interface/Sidebar x("mediawiki:Common.css", """/* adjust sidebar to just be home link and up top */ +/* adjust sidebar to just be home link and up top */ /* panel width increased to fit full wiki name. */ +/* selectors other than final id are for increasing priority of rule */ div#mw-panel { top: 10px; padding-top: 0em; width: 20em } div#footer, #mw-head-base, div#content { margin-left: 1em; } #left-navigation { margin-left: 1em; } /* logo, and toolbar hidden */ -#p-logo, #p-tb.portal { +#p-logo, div#mw-navigation div#mw-panel #p-tb { display:none; } -/* make the font size smaller for the misc stuff */ -#p-personal { - font-size: 0.8em; -} - -#footer-info { - font-size: 0.8em; -} div#mw-content-text { max-width: 720px; } @@ -930,14 +935,9 @@ EOFOUTER sudo chmod +x $backup_script -If you are like most people and don't use the old-school mail spool, setup the backup system to send mail externally. Some ways to do that are on this [http://unix.stackexchange.com/questions/36982/can-i-set-up-system-mail-to-use-an-external-smtp-server stackoverflow answer]. Then make local mail to your user get forwarded to an address you will read: - '''Optional & requires additional steps''' - -sed -i --follow-symlinks "/^root:/d" /etc/aliases -echo "root: EXAMPLE_ONLY_REPLACE_ME@gmail.com" >> /etc/aliases -newaliases - + +If you are like most people and don't use the old-school mail spool, setup the backup system to send mail externally so you are notified if it fails. For examples of how to do this, [http://unix.stackexchange.com/questions/36982/can-i-set-up-system-mail-to-use-an-external-smtp-server stackoverflow], [https://iankelling.org/git/?p=ian-specific/distro-setup;a=blob;f=mail-setup;hb=HEAD script I use]. == Restoring Backups == @@ -987,23 +987,32 @@ s=/etc/cron.daily/mediawiki_update dd of=$s<<'EOF' #!/bin/bash source ~/mw_vars -cd $mw -for dir in extensions/* skins/* $mw; do - [[ -d $dir ]] || continue +update() { + dir=$1 + cd $mw + [[ -d $dir ]] || return 1 cd $dir branch=$(git describe --all) branch=${branch#remotes/} git fetch --all -q new_head=$(git rev-parse $branch) log=$(git log HEAD..$new_head) - if [[ $log ]]; then - pwd - echo "$log" + if [[ ! $log ]]; then + return 1 fi - git checkout -q $new_head + pwd + echo "$log" + git checkout -qf $new_head cd $mw + return 0 +} +for dir in extensions/* skins/* vendor; do + update "$dir" ||: done -php $mw/maintenance/update.php -q +if update .; then + curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-1.28-librejs.patch;hb=HEAD" | patch -r - -N -p1 +fi +php $mw/maintenance/update.php -q --quick EOF @@ -1036,26 +1045,27 @@ Mediawiki.org has pages for ~5200 extensions. Mediawiki maintains ~700 extension Here are brief descriptions of extensions that are part of distributions and why they were rejected for this wiki. {| class="wikitable" + |+ + | '''Footnote''' || deprecated in newer versions |+ | '''InputBox''' || Add html forms to pages. Can't imagine using it. Would install if I did. |+ - | '''Pdfhandler''' || Gallery of pages from a pdf file. Can't imagine using it. Would install if I did. + | '''LocalisationUpdate'''|| update localization only. I'm fine updating all of mediawiki, there aren't many updates. |+ - | '''Footnote''' || deprecated in newer versions + | '''NewestPages''' || A page creation history that doesn't expire like recent-changes. Meh |+ | '''NewUserNotif''' || Send me a notification when a user registers. Seems like an excessive notification. |+ - | '''NewestPages''' || A page creation history that doesn't expire like recent-changes. Meh + | '''Openid''' || Poor UI. 2 pages & 2 links which is confusing & ugly. + |+ + | '''Pdfhandler''' || Gallery of pages from a pdf file. Can't imagine using it. Would install if I did. |+ | '''RSSReader''' || Embed an rss feed. Can't imagine using it. Would install if I did. |+ - | '''Openid''' || Poor UI. 2 pages & 2 links which is confusing & ugly. + | '''Semantic''' || Seems like a lot of trouble around analyzing kinds of data which my wiki will not have. |+ | '''Validator''' || dependency of of semantic |+ - | '''Semantic''' || Seems like a lot of trouble around analyzing kinds of data which my wiki will not have. - |+ - | '''wikicalendar''' || Make a calendar of events etc. Can't imagine using it. Would install if I did. |} == Misc Notes == @@ -1103,7 +1113,5 @@ This means the code is compatible with gplv3. == todo list for this page == -* Check if there are any new default extensions 1.27 which I haven't evaluated. -* Test for any new config values set by the 1.27 gui install method. * Get Visual editor extension. * Don't require registration for edits