mediawiki #5

Supports: trusty
Add to new model


MediaWiki is a wiki engine (a program for creating a collaboratively
edited website). It is designed to handle heavy websites containing
library-like document collections, and supports user uploads of


MediaWiki is a free wiki software application. Developed by the Wikimedia Foundation and others, it is used to run all of the projects
hosted by the Foundation, including Wikipedia, Wiktionary and Commons. Numerous other wikis around the world also use it to power their

This charm will deploy MediaWiki in to the cloud while applying best practices for running scale-out infrastructures, php based applications
and MediaWiki. In addition to the required minimum of MySQL -> MediaWiki; this charm also accepts several other services to provide a more robust service experience.


This charm is available in the Juju Charm Store along with hundreds of others. To deploy this charm you will need: a cloud environment, a working Juju
installation, and an already bootstrapped environment.

Once bootstrapped, deploy the MySQL and MediaWiki charm:

juju deploy mysql
juju deploy mediawiki

Add a relation between the two. Note: To avoid recieving "ambiguous relation" error, specify the "db" relation:

juju add-relation mysql mediawiki:db

Expose the MediaWiki service

juju expose mediawiki

Scale Out Usage

MediaWiki is designed to cache against memcached to provide a faster and smoother site experience. To add memcached to your mediawiki service first
deploy memcached:

juju deploy memcached

then relate it to the mediawiki service

juju add-relation memcached mediawiki

Memcached is recommended for environments with more than one unit deployed. Otherwise there is very little advantage gained by using memcached since
MediaWiki will already use whatever byte-code cache is specified in the charm's configuration.

MySQL Slave

If you're running MySQL with a slave set up you can attach MediaWiki to those slaves directly as MediaWiki (both the application and service) can handle this. To
do this first set up a slave relation with MySQL (If you've already done so skip to the next set of commands):

juju deploy mysql mysql-slave
juju add-relation mysql mysql-slave

Going forward you can scale out MySQL by adding slaves via juju add-unit mysql-slave.

Create a relation between the new slave services and MediaWiki:

juju add-relation mediawiki:slave mysql-slave

Known Limitations and Issues

Maintenance Scripts

From time to time, during routine operation of a MediaWiki installation, maintenace via the maintenace scripts directory may need to be executed. Depending on the nature of the maintenance operation this might need to occur on one node or all nodes of a MediaWiki deployment.
The following examples outline how to run maintenance on either a single machine or all units in a service.

All units

In the event you need to run a script on all machines at once you can use the following bash loop (replacing:


for unit in `juju status mediawiki | egrep -E "machine: ([0-9])" | tr -d ' ' | cut -d ':' -f2`; do
    juju ssh $unit "php -q /var/www/maintenance/$maint_script_to_run"


MediaWiki charm comes with a handful of settings designed to help streamline and manage your deployment. For convenience if any applicable MediaWiki setting variables are
associated with the change they'll be listed in parentheses ().

MediaWiki name ($wgSitename)

This will set the name of the Wiki installation.

juju set mediawiki name='Juju Wiki!'

Skin ($wgDefaultSkin)

As the option implies, this sets the default skin for all new users and anonymous users.

juju set mediawiki skin='monobook'

One limitation is already registered users will have whatever Skin was set as the default applied to their account. This is a MediaWiki "limitation". See caveats
for more information on running Maintenance scripts.


This will configure admin accounts for the MediaWiki instance. The expected format is user:pass

juju set mediawiki admins="tom:swordfish"

This creates a user "tom" and sets their password to "swordfish". In the even you wish to add more than one admin at a time you can provide a list of user:pass values separated by a space " ":

juju set mediawiki admins="tom:swordfish mike:wazowsk1"

This will create both of those users. At this time setting the admins option to noting ("") will neither add or remove any existing admins. It's simply skipped. To avoid having the password and usernames exposed consider running the following after you've set up admin accounts:

juju set mediawiki admins=""

Debug ($wgDebugLogFile)

When set to true this option will enable the following MediaWiki options: $wgDebugLogFile, $wgDebugComments, $wgShowExceptionDetails, $wgShowSQLErrors, $wgDebugDumpSql, and $wgShowDBErrorBacktrace. A log file will be crated in the charm's root directory on each machine called "debug.log". For most providers this will be /var/lib/juju/units/mediawiki-0/charm/debug.log, where mediawiki-0 is the name of the service and unit number.

Contact Information

MediaWiki Project Information


(string) Admin users to create, user:pass
(boolean) turn on debugging features of mediawiki
(string) URL to fetch logo from
(string) The name, or Title of the Wiki
Please set name of wiki
(string) skin for the Wiki