User:Alvaro Ortiz-Troncoso/Draft Create a new mediawiki instance
Contents
As more wikis are needed it would be nice to have a scriptable method to create new wiki instances. This page documents creating a wiki by hand in such a way that it would be feasable to automatize the steps in a script.
See also: Create_a_new_mediawiki_instance (using a template and a database dump).
Create a new wiki directory
Create a new directory in /var/www for the wiki installation.
mkdir /var/www/v-xxx/new_wiki_name cd /var/www/v-xxx/new_wiki_name
Create the wiki database
Link the maintenance directory from the common wiki installation
ln -s /usr/share/mediawiki26wmf/maintenance maintenance
Run the installer php ./maintenance/install.php
with the following options
- --dbuser
- Database user
- --dbpass
- Database user password
- --confpath
- Path to where the LocalSettings.php shall be stored (without 'LocalSettings.php')
- --dbname
- Name of the database to be created
- --pass
- Wiki administrator password
- --scriptpath
- Path to the wiki files, relative to /var/www
Arguments:
- <name>: The name of the wiki
- <admin>: The username of the wiki administrator (WikiSysop)
php ./maintenance/install.php --dbuser <dbuser> --dbpass <dbpass> --confpath <confpath> --dbname <dbname> --pass <pass> --scriptpath <scriptpath> <name> <admin>
Troubleshooting
- Don't worry if the installation script fails to create the smw_ tables, they can be created by the update script.
- If the script complains about existing LocalSettings file, then it is probably looking in /usr/share/mediawiki26wmf. Rename the LocalSettings file and rerun to create database tables, then move the Localsettings file back to where it was. The LocalSettings File will not be created. You will have to copy a LocalSettings file from another wiki and adapt it.
Grant user rights
Once the database has been created by the maintenance script, the db wiki user has to get these rights (e.g. using PHPMyAdmin):
-- DROP , INDEX ,CREATE TEMPORARY TABLES seems necessary only for Semantic MediaWiki Wikis or maybe only Semantic Forms
GRANT SELECT , INSERT , UPDATE , DELETE , DROP , INDEX ,CREATE TEMPORARY TABLES ON `wikiname`.* TO 'wikiuser'@'localhost';
Link to common files and directories
Define the path to the base Mediawiki installation (scope is restricted to this shell, and to this user, so 'sudo su' first if you must)
MWPATH=/usr/share/mediawiki26wmf
(Soft-) Link folders and files to the common mediawiki installation:
# Main web entry point for MediaWiki ln -s $MWPATH/index.php index.php ln -s $MWPATH/index.php5 index.php5 # Stub file for compatibility with older versions ln -s $MWPATH/wiki.phtml wiki.phtml # Entry point for API queries ln -s $MWPATH/api.php api.php ln -s $MWPATH/api.php5 api5.php # PHP script to be used as 404 handler to create and stream out a # not yet existing image thumbnail. ln -s $MWPATH/thumb_handler.php5 thumb_handler.php5 # PHP script to stream out an image thumbnail. ln -s $MWPATH/thumb.php thumb.php ln -s $MWPATH/thumb.php5 thumb.php5 # Image authorisation script ln -s $MWPATH/img_auth.php img_auth.php ln -s $MWPATH/img_auth.php5 img_auth.php5 # Entry point for the resource loader. ln -s $MWPATH/load.php load.php ln -s $MWPATH/load.php5 load.php5 # Entry point for the search API ln -s $MWPATH/opensearch_desc.php5 opensearch_desc.php5 # Script that redirects to the article passed in the "wpDropdown" parameter. # This is used by the nostalgia skin for the special pages drop-down ln -s $MWPATH/redirect.php redirect.php ln -s $MWPATH/redirect.php5 redirect.php5 ln -s $MWPATH/redirect.phtml redirect.phtml # Directoriess requiered by Mediawiki ln -s $MWPATH/bin bin ln -s $MWPATH/docs docs ln -s $MWPATH/extensions extensions ln -s $MWPATH/includes includes ln -s $MWPATH/languages languages ln -s $MWPATH/maintenance maintenance ln -s $MWPATH/resources resources ln -s $MWPATH/serialized serialized ln -s $MWPATH/skins skins
# Additional softlinks: ln -s $MWPATH/autoload.php autoload.php ln -s $MWPATH/Gemfile Gemfile ln -s $MWPATH/Gemfile.lock Gemfile.lock ln -s $MWPATH/Gruntfile.js Gruntfile.js ln -s $MWPATH/package.json package.json
# Link to the vendor directory ln -s $MWPATH/vendor vendor
# Required for composer ln -s $MWPATH/composer.json composer.json ln -s $MWPATH/composer.lock composer.lock
Create local directories
Make sure the right directotry is used
cd /var/www/<new_wiki>
Create the cache directory and make it writable for the web server
mkdir cache chown www-data:www-data cache
If media are stored locally, create the media directory and make it writable for the web server
mkdir media chown www-data:www-data media
Edit local configuration file
Biowikifarm uses a shared configuration which is in stored in MediaWikiCommonSettings.php directly in the www-root. To create configuration for an individual wiki on biowikifarm, you need to edit the file LocalSettings.php in the wiki's directory. For a a minmalistic configuration, set these variables in LocalSettings.php:
- $wgSitename
- Name that appears on the wiki pages, e.g. "My Wiki"
- $wgScriptPath
- URL base path to folder containing the wiki; relative to /var/www. Defaults for all runtime URL paths are based off of this, e.g. "mywiki"
- $wgArticlePath
- Virtual path. This directory MUST be different from the one used in $wgScriptPath, e.g. "/mywiki/$1"
- $wgDBname
- Name of the database where this wiki stores its contents, e.g. "mywiki"
- $wgLanguageCode
- Language to use for the interface, e.g. "en"
- $wgSecretKey
- A 64-character random string, e.g. the output of "openssl rand -hex 32"
<?php # Protect against web entry if ( !defined( 'MEDIAWIKI' ) ) { exit; } $IP = dirname( __FILE__ ); $wgSitename = ""; $wgScriptPath = ""; $wgArticlePath = ""; $wgUsePathInfo = true; $wgDBname = ""; $wgLanguageCode = ""; $wgSecretKey = ""; $wgDefaultSkin = 'vector'; #INCLUDING COMMON SETTINGS: include_once("$IP/../MediaWikiCommonSettings.php"); include_once("$IP/../MediaWiki_NonDevSettings.php");
There are of course many more available settings.
Update database tables
You'll need to run the update script, to ensure that tables required in LocalSettings are available:
cd /var/www/v-XXX/wiki_name; sudo -u www-data php ./maintenance/update.php --quick --conf ./LocalSettings.php
Edit Web server settings
There are two files where you can place your server configuration.
No own domain name
If your server has no own domain name, you can place the configuration in/etc/nginx/sites-enabled/00_default
Own domain name
If you have your own domain name, then please make a new configuration in/etc/nginx/sites-availableand link it from
/etc/nginx/sites-enabledAssuming you wiki is called "<wikiname>" and is located at
/var/www/<wikipath>:
# === Wiki: path=mywiki, ShortURL=mywiki === location /<wikiname> { try_files $uri @do_<wikiname>_wikipage; } location @do_<wikiname>_wikipage { rewrite "^/<wikiname>$" /<wikiname>/ redirect; rewrite "^/<wikiname>/([^?]*)(?:\?(.*))?$" /<wikiname>/index.php?title=$1&$args last; } location /<wikiname>/media { location ~ ^/<wikiname>/media/thumb/(archive/)?[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ { try_files $uri @thumb_<wikiname>; } } location @thumb_<wikiname> { rewrite ^/<wikiname>/media/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /<wikipath>/thumb.php?f=$1&wi$ rewrite ^/<wikiname>/media/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /<wikipath>/thumb.php$ include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/<wikipath>/thumb.php; fastcgi$ }
Test the configuration
nginx -t
Then restart nginx
/usr/sbin/apache2ctl -k graceful && sudo service nginx restart && sudo service php5-fpm restart
Testing the installation
You should now be able to see your wiki at: http://servername/wikiname/index.php?title=Main_Page
Debugging
If it doesn't work, you can enable logging:
In LocalSettings.php, add:
$wgDebugLogFile = "$IP/debug.log";
In the wiki's directory, do
touch debug.log chown www-data:www-data debug.log
To see log output, do
tail -n300 -f debug.log
Please remember to disable logging once you have solved the problem.