get latest snapshot
authorIan Kelling <ian@iankelling.org>
Wed, 18 Jan 2017 08:31:19 +0000 (00:31 -0800)
committerIan Kelling <ian@iankelling.org>
Wed, 18 Jan 2017 08:31:19 +0000 (00:31 -0800)
Mediawiki_Setup_Guide
mw-setup-script

index 74ca3a8100106eef68d0cfc3abfe0cb7614ad7eb..a2dc13d76ab52eba54f000bb37eec0e992819363 100644 (file)
@@ -6,24 +6,23 @@
 
 * 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 & 1.28
+* Mediawiki 1.28, updated as new versions are released
 * Debian 8 + backports
 * Debian 8
 * Debian testing (last tested Aug 7, 2016)
@@ -78,8 +77,7 @@ 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_28.
+# git branch for mediawiki + extensions. See intro for supported versions.
 # branch names: https://git.wikimedia.org/branches/mediawiki%2Fcore.git
 export mw_branch=REL1_28
 
@@ -223,7 +221,7 @@ if isdeb; then
     # main reference:
     # https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Ubuntu
     apt-get update
-    DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick
+    DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick curl
     if apt-get install -s mediawiki &>/dev/null; then
         # mediawiki is packaged in jessie backports.
         DEBIAN_FRONTEND=noninteractive apt-get -y install php5-apcu mediawiki
@@ -302,6 +300,8 @@ fi
 # git branch -r
 git checkout -f origin/$mw_branch
 git clean -ffxd
+# add some librejs support:
+curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-librejs-patch;hb=HEAD" | bash
 # Get the php libraries wmf uses. Based on:
 # https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries
 if [[ ! -e vendor/.git ]]; then
@@ -438,7 +438,7 @@ teeu $mwc<<EOF
 \$wgRightsIcon = "$mw_RightsIcon";
 EOF
 </source>
-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.
 <source lang="bash">
 teeu $mwc<<EOF
 \$wgPasswordSender = "$mw_email";
@@ -448,6 +448,7 @@ teeu $mwc<<EOF
 \$wgMainCacheType = CACHE_ACCEL;
 \$wgEnableUploads = true;
 \$wgUseInstantCommons = true;
+\$wgPingback = true;
 EOF
 </source>
 
@@ -463,9 +464,13 @@ $wgArticlePath = "/wiki/$1";
 $wgNoFollowLinks = false;
 # Allow user customization.
 $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
 
 
@@ -509,15 +514,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
@@ -526,36 +534,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
     |}
 
+<nowiki>*</nowiki> = Comes with the MediaWiki default download.
+
 <source lang="bash">
-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
 </source>
 
 
@@ -568,17 +581,6 @@ sudo -u $apache_user php $mw/extensions/AntiSpoof/maintenance/batchAntiSpoof.php
 </source>
 
 
-''' [[mediawikiwiki:CheckUser|Extension:CheckUser]]: Get ip addresses from inside mediawiki so you can ban users'''
-
-On <= 1.27, requires special install steps or we can get into a bad state. Add a sleep like the default of update.php to avoid errors.
-<source lang="bash">
-mw-ext CheckUser
-if [[ -e $mw/extensions/CheckUser/install.php ]]; then
-    sudo -u $apache_user php $mw/extensions/CheckUser/install.php; sleep 1
-fi
-</source>
-
-
 '''[[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.
@@ -633,6 +635,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.
+
 <source lang="bash">
 mw-ext SpamBlacklist
 if ! grep -F '$wgSpamBlacklistFiles = array(' $mwc &>/dev/null; then
@@ -651,6 +655,8 @@ fi
 
 ''' [[mediawikiwiki:Extension:TitleBlacklist|Extension:TitleBlacklist]]: Anti-spam '''
 
+Comes with Mediawiki.
+
 <source lang="bash">
 mw-ext TitleBlacklist
 if ! grep -F '$wgTitleBlacklistSources = array(' $mwc &>/dev/null; then
@@ -671,6 +677,8 @@ fi
 
 ''' [[mediawikiwiki:Extension:WikiEditor|Extension:WikiEditor]]: Editing box extras and a fast preview tab '''
 
+Comes with MediaWiki.
+
 <source lang="bash">
 mw-ext WikiEditor
 teeu $mwc <<'EOF'
@@ -708,9 +716,9 @@ $wgGroupPermissions['sysop']['abusefilter-revert'] = true;
 EOF
 </source>
 
-'''[[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.
 
 <source lang="bash">
 mw-ext ConfirmEdit
@@ -986,22 +994,31 @@ 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
+if update .; then
+    curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-librejs-patch;hb=HEAD" | bash
+fi
 php $mw/maintenance/update.php -q --quick
 EOF
 
@@ -1035,26 +1052,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 <login> <login with openid> 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 <login> <login with openid> 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 ==
@@ -1102,7 +1120,5 @@ This means the code is compatible with gplv3.
 
 == todo list for this page ==
 
-* Check if there are any new default extensions 1.28 which I haven't evaluated.
-* Test for any new config values set by the 1.28 gui install method.
 * Get Visual editor extension.
 * Don't require registration for edits
index 754c53664815c9afa579de61af919270c66b06c4..599766800be8cc5fd03f44723c68fec04092a8ee 100755 (executable)
@@ -88,7 +88,7 @@ if isdeb; then
     # main reference:
     # https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Ubuntu
     apt-get update
-    DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick
+    DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick curl
     if apt-get install -s mediawiki &>/dev/null; then
         # mediawiki is packaged in jessie backports.
         DEBIAN_FRONTEND=noninteractive apt-get -y install php5-apcu mediawiki
@@ -149,6 +149,8 @@ fi
 # git branch -r
 git checkout -f origin/$mw_branch
 git clean -ffxd
+# add some librejs support:
+curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-librejs-patch;hb=HEAD" | bash
 # Get the php libraries wmf uses. Based on:
 # https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries
 if [[ ! -e vendor/.git ]]; then
@@ -229,6 +231,7 @@ teeu $mwc<<EOF
 \$wgMainCacheType = CACHE_ACCEL;
 \$wgEnableUploads = true;
 \$wgUseInstantCommons = true;
+\$wgPingback = true;
 EOF
 # </source>
 # <source lang="bash">
@@ -242,9 +245,13 @@ $wgArticlePath = "/wiki/$1";
 $wgNoFollowLinks = false;
 # Allow user customization.
 $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
 
 
@@ -280,8 +287,8 @@ git fetch ian-kelling
 git checkout ian-kelling/${mw_branch}-toolbox-in-dropdown
 # </source>
 # <source lang="bash">
-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
 # </source>
 # <source lang="bash">
 mw-ext AntiSpoof
@@ -289,12 +296,6 @@ mw-ext AntiSpoof
 sudo -u $apache_user php $mw/extensions/AntiSpoof/maintenance/batchAntiSpoof.php
 # </source>
 # <source lang="bash">
-mw-ext CheckUser
-if [[ -e $mw/extensions/CheckUser/install.php ]]; then
-    sudo -u $apache_user php $mw/extensions/CheckUser/install.php; sleep 1
-fi
-# </source>
-# <source lang="bash">
 if isdeb; then
     apt-get -y install php-wikidiff2
     teeu $mwc <<'EOF'
@@ -544,22 +545,31 @@ 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
+if update .; then
+    curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-librejs-patch;hb=HEAD" | bash
+fi
 php $mw/maintenance/update.php -q --quick
 EOF