On Wed, Jan 20, 2016 at 7:56 AM, Ray Paseur <[email protected]> wrote:
> Colleagues:  I'm looking for some "best practices" advice here.
>
> I have three Wikis, Dev, Test, and Prod.  Dev is the sandbox.  Test is for 
> user-acceptance.  Prod is the public face - exactly what you would expect.
>
> For the most part, these Wikis share an identical code base on Git branch 
> "master."  Development is done in branches that are pulled into master as 
> user acceptance is completed.
>
> There are differences between the Wikis environments, and so I've got three 
> LocalSettings.php files.  I can't just pull the Dev into Test or the Test 
> into Prod because of differences in the LocalSettings (database connections, 
> error_reporting, etc).  Right now I'm doing a manual process outside of Git 
> control.  This makes me itch.
>
> I would like to keep LocalSettings.php under Git version control with the 
> rest of the code, but that means three files with the same name.
>
> Would I be on firm ground if I modified LocalSettings.php to automatically 
> detect which Wiki is in play and adjust its own settings?  How do others 
> handle issues like this?

One public and non-trivial example of wiki farm configuration is the
configuration system used for the Wikimedia production and beta wiki
farms [0]. The heart of this system is MWMultiVersion [1] and the
configuration files [2] that populate and use a SiteConfiguration [3]
object that chooses different settings based on the information
provided by MWMultiVersion. Besides the public configuration data
shown in the git repository [0] there are private settings [4] which
are only committed locally on the deployment server and distributed
from there to all of the MediaWiki servers. This system is pretty
complicated and likely to be overkill the majority of wiki farms, but
it does show some techniques for managing complex configuration.

A much more simple solution could be just to replace
LocalSettings.php's contents with an include of common settings and
conditional include of environment specific settings that you keep in
separate files (e.g. LocalSettings.dev.php).

[0]: https://phabricator.wikimedia.org/diffusion/OMWC/
[1]: 
https://wikitech.wikimedia.org/wiki/Heterogeneous_deployment#mediawiki-staging.2Fmultiversion
[2]: 
https://wikitech.wikimedia.org/wiki/Heterogeneous_deployment#mediawiki-staging.2Fwmf-config
[3]: 
https://doc.wikimedia.org/mediawiki-core/master/php/classSiteConfiguration.html
[4]: 
https://phabricator.wikimedia.org/diffusion/OMWC/browse/master/private/PrivateSettings.php.example

Bryan
-- 
Bryan Davis              Wikimedia Foundation    <[email protected]>
[[m:User:BDavis_(WMF)]]  Sr Software Engineer            Boise, ID USA
irc: bd808                                        v:415.839.6885 x6855

_______________________________________________
MediaWiki-l mailing list
To unsubscribe, go to:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

Reply via email to