Middlebury

MediaWiki Administration

Deployment

Installing MediaWiki on a new production host

1. (Option A) Copy the ssh public/private key pair from the old host to the new host:

scp /root/.ssh/id_* newhost:/root/.ssh/

1. (Option B) Create a new ssh key pair on the new host with ssh-keygen and add its public key to the gitosis configuration on chisel.

2. Clone the repository to /var/www/mediawiki/

cd /var/www/
git clone git@github.com:middlebury/mediawiki.git
cd mediawiki
git submodule update --init

3. Add a post-merge hook so that all submodules will be updated when we run git pull in the future.

echo "#!/bin/bash
git submodule update --init --recursive" > .git/hooks/post-merge
chmod a+x .git/hooks/post-merge

3. Find all of the image directories on the old host with:

find mediawiki/webroot/wikis -type d -name images

Then take that list and search/replace each line into an rsync command:

rsync -av --delete oldhost:/path/to/mediawiki/webroot/wikis/CCP/images/ /newpath/to/mediawiki/webroot/wikis/CCP/images/

Then run all of the rsync commands. Note: Adding the new host's public key to the old host's ~/.ssh/authorized_keys2 file will allow you to run all of the rsync commands without entering your password many times.

4. Add the Apache virtual-host configuration to /etc/httpd/conf.d/vhost.conf. Restart Apache.

Updating MediaWiki in production

If the MediaWiki core code has been updated, then the database tables need to be updated.

1. Update the code on moth:

ssh moth
cd /path/to/mediawiki
git pull

2. Run the MediaWiki update script on all wiki databases.

php midd_maintenance/midd_update_all.php

3. Most likely, you will also need to update the /install_data/default_tables.sql to reflect schema changes from the updated code on newly created wikis.

Managing Extensions

Review the current status of extensions installed on the Middlebury MediaWiki instance: http://mediawiki.middlebury.edu/wiki/LIS/Special:Version

Review the Web Team "MediaWiki Extensions" document for a history of extension updates: https://drive.google.com/open?id=13yaXDgXQnMRjcTi2mRnDqo9hqCWwgRpeapFQ6qzHcIM

Installing/Updating an Extension:

1. Sync master and production branches with GitHub repository.

git pull origin master production

2. Checkout the production branch from the MediaWiki Github project.

git checkout production

2. Extract the extension folder to the /var/www/mediawiki/shared/extensions directory.

unzip name-of-extension.zip

mv name-of-extension shared/extensions/

rm name-of-extension.zip

3. Commit the extension changes to the production branch.

git add shared/extensions/name-of-extension

git add -u shared/extensions/name-of-extension

git commit -m "Updated name-of-extension from version x to version y

4. Merge the production branch into master

git checkout master

git merge production

5. After successful testing, push the master and production branch commits to GitHub.

git push origin master production

6. Update the code on moth to deploy the changes.

ssh moth
cd /path/to/mediawiki
git pull

Installing MediaWiki in Development

1. Create a sym link for your new instance of MediaWiki.

cd ~/public_html
ln -s ../private_html/mediawiki/webroot mediawiki

2. Clone the code into your private_html directory.

cd ~/private_html
git clone git@github.com:middlebury/mediawiki.git
cd mediawiki

3. Install the submodules.

git submodule init
git submodule update

4. Copy the CasAuthSettings from production.

scp moth:/var/www/mediawiki/webroot/shared/extensions/CASAuth/CASAuthSettings.php .

5. Get a copy of the database.

mysqldump -u DB_USER -p -h DB_HOST DB_NAME > mediawiki.sql
mysql -u DEV_DB_USER -p -h DEV_DB_HOST DEV_DB_NAME < mediawiki.sql

6. Create a copy of the Middlebury settings file and edit it. Replace instances of "myusername" with your username.

cp MiddSettings.php.sample MiddSettings.php

Creating new Wikis

In the MediaWiki root on the production host there is a createWiki script that will allow you to quickly create a new wiki:

Usage: createWiki -n <short name> -t <title> -a <admin id>

Example: createWiki -n TestWiki -t "A Wiki For Testing" -a 1003


Note: The admin user is the only one who will be able to go in and make
other users admins. This should likely be your id (internal to mediawiki).

The admin id is the 'user_id' field in the cas_users table in the mediawiki database.

Some ids you might wish to use:
1003    Adam Franco
1000    Joe Antonioli
1045    Ian McBride

You can then edit the wiki's LocalSettings.php file in mediawiki/webroot/wikis/TestWiki/LocalSettings.php to make any changes.

In order to allow file uploads, you will need to create an "images" directory. Go into the wiki's directory on the server and execute these commands.

mkdir images
chown apache:apache images
chmod 775 images

Common configuration additions

Restricting access to groups or users

All pages but the main page in a wiki can be restricted to certain groups or users by adding something like the following to the wiki's LocalSettings.php file.

# Disable reading by anonymous users
$wgGroupPermissions['*']['read'] = false;

# But allow them to read e.g., these pages:
$wgWhitelistRead =  array ( "Main Page", "Special:Userlogin", "Wikipedia:Help");

# Disable anonymous editing
$wgGroupPermissions['*']['edit'] = false;

# Authorized Groups
# Use the full DN of the group from the AD.
$CASAuth["AllowedGroups"]= array(
"CN=Helpdesk Staff,OU=General,OU=Groups,DC=middlebury,DC=edu",
);

# Authorized Users (in addition to those in the groups)
# Use the MiddleburyCollegeUID for the user.
$CASAuth["AllowedUsers"]= array(
'B0F836FCDADFDDFF7A17C02C62CDB227',       // Adam Franco
);

Changing allowed file types

##Override the default with a bundle of filetypes:
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'ppt', 'pdf', 'doc');
$wgStrictFileExtensions = false;
Powered by MediaWiki