I'm running three MediaWiki sites, and I copy the PHP files from folder to folder. Can I run them somehow from the same PHP files, so I won't need to copy and update all the files three times? By the way, how do you do that in Wikimedia sites - copy the PHP files, or using the same ones? And how do you do that?
(Of course, using different LocalSettings.php for every site, and running from other folders.)
rotemliss
On 07/04/06, Rotem Liss mail@rotemliss.com wrote:
I'm running three MediaWiki sites, and I copy the PHP files from folder to folder. Can I run them somehow from the same PHP files, so I won't need to copy and update all the files three times? By the way, how do you do that in Wikimedia sites - copy the PHP files, or using the same ones? And how do you do that?
1. See http://meta.wikimedia.org/wiki/MediaWiki_FAQ#How_do_I_create_a_small_wiki_fa... 2. Wikimedia's wiki farm setup is described at http://wikitech.leuksman.com/view/Wiki_farm
Rob Church
We are working on this right now. NOTE: You must understand PHP to apply this approach.
Our basic idea is this:
1) within the MediaWiki install folder, we create a "wsu" folder, to contain all files we add to MW (that makes it easier to upgrade when a new version of MW comes out).
2) Within the "wsu" folder, we make a folder for each wiki. These folders are named with the "wikiname" (= sitename) for the wiki. They might contain images or whatever is needed by that particular wiki. They also contain a file "LocalSettings_".wikiname.".php" which contains any special settings for that wiki that override or extend the common LocalSettings.php in the main Mediawiki install folder. So for "joshwiki", we have a folder "wsu/joshwiki" which contains "LocalSettings_joshwiki.php". [The file doesn't logically need to have the wikiname in its filename, but it makes it easier to keep track when you're editing.]
2) At the end of LocalSettings.php in the main MW folder, we determine which wiki was called by parsing the request URI, and store the result in a superglobal. [Note that we have a different $wgArticlePath and $wgScriptPath, in order to manage pretty URL's via our load balancer. Incoming URL's point to the 'wikishortname' + 'wk'; outgoing URL's point to 'wikishortname' + 'wiki'.]
if (!isset($GLOBALS['wsuWikiname'])) { $uri = $_SERVER['REQUEST_URI'];
# find first element of called URI preg_match("|^/(.*)wk/|",$uri,$matches); if ($matches) { $GLOBALS['wsuWikiname'] = $matches[1].'wiki'; $GLOBALS['wsuWikiuri'] = $matches[1].'wk'; error_log("wikishortname = $matches[1]"); } else { error_log("malformed URL: $uri"); } }
Then we require_once Local_Settings_wikiname.php for that wiki, which contains any needed overrides or additions to the common settings in LocalSettings.php:
# Choose the appropriate LocalSettings file for per-wiki overrides # per-wiki LocalSettings is places in per-wiki directory in wsu/ # require_once 'wsu/'.$GLOBALS['wsuWikiname'] . '/LocalSettings_' . $GLOBALS['wsuWikiname'] . '.php';
3) You have to be quite careful about settings with dependencies on other settings. Here is the tree I developed of dependencies in LocalSettings.php:
[Mediawiki 1.5.6] *Request URI **$GLOBALS['wsuWikiname'] ***$wgSitename ****$wgLocalInterWiki ***$wgDBname (yes, we generate the DB name from the wikiname) ***$wgArticlePath ***$wgDebugLogFile (separate debug log file for each wiki) ***per-wiki directory ***per-wiki local settings name **$GLOBALS['wsuWikiuri'] ***$wgScriptPath ****$wgScript ****$wgRedirectScript ****$wgStylePath ****$wgUploadPath
You don't want to do an override on a setting without also overriding the things that depend on it.
NOTE THAT THIS IS NOT YET RUNNING except on a limited basis in development. Only you are responsible if you believe what you read here, put it on a machine, and get hurt.
HTH,
-- Joshua
On 4/7/06 1:24 PM, "Rotem Liss" mail@rotemliss.com wrote:
I'm running three MediaWiki sites, and I copy the PHP files from folder to folder. Can I run them somehow from the same PHP files, so I won't need to copy and update all the files three times? By the way, how do you do that in Wikimedia sites - copy the PHP files, or using the same ones? And how do you do that?
(Of course, using different LocalSettings.php for every site, and running from other folders.)
rotemliss
MediaWiki-l mailing list MediaWiki-l@Wikimedia.org http://mail.wikipedia.org/mailman/listinfo/mediawiki-l
mediawiki-l@lists.wikimedia.org