latest updates
authorIan Kelling <ian@iankelling.org>
Sun, 28 Aug 2016 09:26:13 +0000 (02:26 -0700)
committerIan Kelling <ian@iankelling.org>
Sun, 28 Aug 2016 09:26:13 +0000 (02:26 -0700)
Mediawiki_Setup_Guide
mw-setup-script

index f060408fe457d852a70828a451b3ec0be8a95ea4..dc5b427230827834bbeb291b6e49c7839a2dadc2 100644 (file)
@@ -61,31 +61,32 @@ export wikipass=REPLACE_ME
 # root password for the mysql database
 export dbpass=REPLACE_ME
 
-# git branch for mediawiki + extensions.
-# This guide has only been tested with 1_27.
-# branch names: https://git.wikimedia.org/branches/mediawiki%2Fcore.git
-export mw_branch=REL1_27
+export mwdomain=REPLACE_ME # domain name. for this site, it's ofswiki.org
 
-# customize these questions to something your contributors would know,
-# and at least doesn't have the answer directly in the question
+# customize these questions. Try not to have the answer be a word in the question.
 captchaArray() {
     if ! grep -Fx '$localSettingsQuestyQuestions = array (' $mwc; then
        tee -a $mwc <<'EOF'
 $localSettingsQuestyQuestions = array (
     "What is the name of the wiki software this site (and wikipedia) uses?" => "Mediawiki",
-    "What does f in ofswiki.org stand for?" => "Free"
+    "REPLACE_ME with a question" => "REPLACE_ME with an answer"
 );
 EOF
     fi
 }
 
+# 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.
+# branch names: https://git.wikimedia.org/branches/mediawiki%2Fcore.git
+export mw_branch=REL1_27
+
 # As set by gui installer when choosing cc by sa.
 export mw_RightsUrl='https://creativecommons.org/licenses/by-sa/4.0/'
 export mw_RightsText='Creative Commons Attribution-ShareAlike'
 export mw_RightsIcon='$wgScriptPath/resources/assets/licenses/cc-by-sa.png'
 
-
-export mwdomain=REPLACE_ME # domain name. for this site, it's ofswiki.org
 # Alphanumeric site name for pywikibot.
 # Here we use the domain minus the dots, which should work fine without changing.
 export mwfamily=${mwdomain//./}
@@ -221,21 +222,23 @@ if isdeb; then
     # main reference:
     # https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Ubuntu
     apt-get update
-    apt-get install -y imagemagick php-mbstring
+    apt-get install -y imagemagick
     if apt-get install -s mediawiki &>/dev/null; then
         # in debian wheezy time-frame distros, mediawiki was packaged.
-        apt-get -y install php-apc mediawiki
+        apt-get -y install php-apc mediawiki php-mbstring
     else
         # https://www.mediawiki.org/wiki/Manual:Installation_requirements
         if apt-get install -s php7.0 &>/dev/null; then
             # note, 7.0 is untested by the editor here, since it's not
             # available in debian 8. it's listed as supported
             # in the mediawiki page.
-            # noninteractive to avoid mysql password prompt
+            # noninteractive to avoid mysql password prompt.
             DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 mysql-server \
                            php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-xml \
-                           php7.0-apcu
+                           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 \
                            php5 php5-mysql libapache2-mod-php5 php5-apcu
         fi
@@ -377,7 +380,7 @@ git clone $git_site/acme-tiny-wrapper
 l=$mw/../../logs
 mkdir -p $l
 
-acme-tiny-wrapper/acme-tiny-wrapper $mwdomain
+acme-tiny-wrapper/acme-tiny-wrapper -t $mwdomain
 
 git clone $git_site/basic-https-conf
 { cat <<EOF
@@ -939,7 +942,7 @@ newaliases
 
 '''Whenever you implement a backup system, you should test that restoring the backup works.'''
 
-You ''should'' be able to restore your wiki to a new machine by repeating all install steps, then restoring the database and the images directory. However, we backup the entire Mediawiki directory in case you forget to record a step, or some misbehaving code stores some state in a file. Since most people don't record the steps they took to setup Mediawiki, this is also the officially recommended method. Here we restore only the database and images folder, which should help identify any of those aforementioned issues. See [[mediawikiwiki:Manual:Restoring a wiki from backup]] if you run into any problems.
+You ''should'' be able to restore your wiki to a new machine by repeating all install steps, then restoring the database and the images directory. I've done this many times. However, we backup the entire Mediawiki directory in case you forget to record a step or some corner case happens. Since most people don't record the steps they took to setup Mediawiki, this is also the officially recommended method. In the code below we restore only the database and images folder from the full backup. You can try this after setting up a wiki from scratch. If it doesn't work, you know your fresh setup is not replicating your backed up wiki correctly. In that case, you can fall back to doing a full restore by copying the full directory instead of just the images. See [[mediawikiwiki:Manual:Restoring a wiki from backup]] if you run into any problems.
 
 To test a backup restore:
 # Do a backup of your wiki with some content in it, as described in the previous section
@@ -952,16 +955,19 @@ To test a backup restore:
 <source lang="bash" type="example">
 #!/bin/bash
 source ~/mw_vars
-HOSTNAME=REPLACE_ME source ~/mw_vars
-rdiff-backup -r now ~/backup/${mwdomain}_wiki_file_backup /tmp/wiki_file_restore
-scp -r /tmp/wiki_file_restore/images root@$mwdomain:$mw/images
-rdiff-backup -r now ~/backup/${mwdomain}_wiki_db_backup /tmp/wiki_db_restore
-scp -r /tmp/wiki_db_restore root@$mwdomain:/tmp
-ssh root@$mwdomain <<EOF
-mysql -u root -p$dbpass my_wiki < /tmp/wiki_db_restore/wiki_db_dump
+restore="rdiff-backup --force -r now"
+$restore ~/backup/${mwdomain}_wiki_file_backup /tmp/wiki_file_restore
+$restore ~/backup/${mwdomain}_wiki_db_backup /tmp/wiki_db_restore
+o=-oStrictHostKeyChecking=no
+scp $o -r /tmp/wiki_file_restore/images/* root@$mwdomain:$mw/images
+scp $o -r /tmp/wiki_db_restore root@$mwdomain:/tmp
+ssh $o root@$mwdomain <<EOF
+set -e
+chmod -R g+w $mw/images
+chgrp -R www-data $mw/images
+mysql -u root -p$dbpass my_wiki < /tmp/wiki_db_restore/wiki_db_backup
 php $mw/maintenance/update.php
 EOF
-
 </source>
 
 Then browse to your wiki and see if everything appears to work.
@@ -983,19 +989,33 @@ source ~/mw_vars
 cd $mw
 git fetch --all
 git checkout origin/$mw_branch
-git rebase ian/REL1_23-toolbox-in-dropdown
-cd extensions
+cd $mw/skins/Vector
+git fetch --all -q
+x=ian-kelling/REL1_27-toolbox-in-dropdown
+log=$(git log HEAD..$x)
+if [[ $log ]]; then
+    pwd
+    echo "$log"
+fi
+git checkout -q $x
+cd $mw/extensions
 for x in *; do
-    if [[ -d $x ]]; then
-        cd $x
-        git fetch --all
-        git checkout origin/$mw_branch || git checkout -qf origin/master
-        cd ..
+    [[ -d $x ]] || continue
+    cd $x
+    git fetch --all -q
+    x=$(git rev-parse origin/$mw_branch 2>/dev/null) || \
+      x=$(git rev-parse origin/master)
+    log=$(git log HEAD..$x)
+    if [[ $log ]]; then
+        pwd
+        echo "$log"
     fi
+    git checkout -q $x
+    cd ..
 done
 php $mw/maintenance/update.php -q
 EOF
-chmod +x $s
+
 </source>
 
 == Upgrading Major Versions ==
index 40b5cfaf952ae30e0799f1e5ec15866b5f61aeef..5cdfd145186b6a8775926d6e03637f847460fa41 100755 (executable)
@@ -87,21 +87,23 @@ if isdeb; then
     # main reference:
     # https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Ubuntu
     apt-get update
-    apt-get install -y imagemagick php-mbstring
+    apt-get install -y imagemagick
     if apt-get install -s mediawiki &>/dev/null; then
         # in debian wheezy time-frame distros, mediawiki was packaged.
-        apt-get -y install php-apc mediawiki
+        apt-get -y install php-apc mediawiki php-mbstring
     else
         # https://www.mediawiki.org/wiki/Manual:Installation_requirements
         if apt-get install -s php7.0 &>/dev/null; then
             # note, 7.0 is untested by the editor here, since it's not
             # available in debian 8. it's listed as supported
             # in the mediawiki page.
-            # noninteractive to avoid mysql password prompt
+            # noninteractive to avoid mysql password prompt.
             DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 mysql-server \
                            php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-xml \
-                           php7.0-apcu
+                           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 \
                            php5 php5-mysql libapache2-mod-php5 php5-apcu
         fi
@@ -178,7 +180,7 @@ git clone $git_site/acme-tiny-wrapper
 l=$mw/../../logs
 mkdir -p $l
 
-acme-tiny-wrapper/acme-tiny-wrapper $mwdomain
+acme-tiny-wrapper/acme-tiny-wrapper -t $mwdomain
 
 git clone $git_site/basic-https-conf
 { cat <<EOF
@@ -540,17 +542,31 @@ source ~/mw_vars
 cd $mw
 git fetch --all
 git checkout origin/$mw_branch
-git rebase ian/REL1_23-toolbox-in-dropdown
-cd extensions
+cd $mw/skins/Vector
+git fetch --all -q
+x=ian-kelling/REL1_27-toolbox-in-dropdown
+log=$(git log HEAD..$x)
+if [[ $log ]]; then
+    pwd
+    echo "$log"
+fi
+git checkout -q $x
+cd $mw/extensions
 for x in *; do
-    if [[ -d $x ]]; then
-        cd $x
-        git fetch --all
-        git checkout origin/$mw_branch || git checkout -qf origin/master
-        cd ..
+    [[ -d $x ]] || continue
+    cd $x
+    git fetch --all -q
+    x=$(git rev-parse origin/$mw_branch 2>/dev/null) || \
+      x=$(git rev-parse origin/master)
+    log=$(git log HEAD..$x)
+    if [[ $log ]]; then
+        pwd
+        echo "$log"
     fi
+    git checkout -q $x
+    cd ..
 done
 php $mw/maintenance/update.php -q
 EOF
-chmod +x $s
+
 # </source>