version=pmwiki-2.2.76 ordered=1 urlencoded=1 author=Peter Bowers charset=UTF-8 csum=markup typo (again) ctime=1142482306 name=PmWiki.WikiFarms rev=99 targets=Cookbook.FarmSetupByExample,Cookbook.WikiFarmAlternative,PmWiki.WikiFarms,PmWiki.WikiGroup,PmWiki.Installation,Cookbook.CookbookBasics,PmWiki.LocalCustomizations,PmWiki.WikiFarmTerminology,PmWiki.WikiFarmsAdvanced text=(:Audience: administrators (intermediate) :)%0a(:Summary:Running multiple wikis from a single installation:)%0aAlso see: [[Cookbook:Farm Setup By Example]], [[Cookbook:Wiki Farm Alternative]]%0a%0aA [[WikiFarm(s)]] is a collection of two or more wikis running on the same web server and sharing a set of common components. The term is based on the computing phrase "server farm".%0a%0aThis page provides some background information about [[WikiFarms]] and describes how to turn a "normal" configuration into a farm by adding a wiki. (Click [[#config|here]] to go directly to instructions on configuring a farm.) There are many ways to configure wiki farms; this page describes only one, in an effort to make it as simple as possible for the administrator who is creating a farm for the first time.%0a%0aThis page will discuss 3 ways to organize content:%0a# Use [[(PmWiki:)WikiGroup]]s%0a# Use independent wiki sites with a shared code base (a "farm")%0a# Use independent wiki sites with a complete PmWiki [[installation]] per site%0a%0a!! Choosing between separate wiki-sites and [[(PmWiki:)WikiGroup|WikiGroups]]%0a!!! Why use [[(PmWiki:)WikiGroup|WikiGroups]]?%0aWhen you divide content between independently installed wikis (i.e., with their own separate URL), it is difficult (but not impossible) to provide services that require access to more than one wiki. For example, the PmWiki search function can only search within one wiki. Using a farm as a way of subdividing related content is generally a bad idea. A much better way to subdivide content is to use [[(PmWiki:)WikiGroup | WikiGroups]].%0a%0a!!! Why use separate wiki-sites?%0aWhen content is largely unrelated and there will be little or no need for sharing the data between the sites, it makes sense to divide the wikis into independently installed sites.%0a%0a(:comment (not sure if this statement is general enough) As a general rule, if you will regularly reference one site from the other (and particularly if you want to view [[PageLists]] of information on one site and view it on the other site) then you probably want to use [[WikiGroup | WikiGroups]] rather than independent sites.:)%0a%0a!! Choosing between separate, independent installations of PmWiki and a [[WikiFarm(s)]]%0aOnce you have decided that you need a separate wiki (with its own URL), you have two basic choices:%0a# Do a complete [[installation]] of PmWiki in a new directory. This gives you two totally independent wikis that are completely self-contained. This is '''not''' a wiki farm.%0a# Create a wiki farm using an existing wiki as the "home wiki" where most of the shared PmWiki components will live.%0a%0a'''The primary motivation for using a wiki farm is to reduce the amount of administrative work involved in managing several wikis.''' In a farm, most of the PmWiki code is stored in one place and is shared by all the wikis. An administrator can (for example) upgrade to a new version of PmWiki on every wiki in the farm by simply updating the shared components in a single location.%0a%0aFrom a reader's point of view, there is no difference between separate, self-contained installations of PmWiki and separate wikis within a WikiFarm: each wiki in a farm is completely independent, and appears as a separate web site. Each wiki in a farm:%0a* has its own URL, and the URLs can be in different domains%0a* can have its own look and feel by using different skins%0a* can have its own add-ons or "recipes" from the [[(Cookbook:)Cookbook(Basics)]]%0a* can have its own administrator responsible for local configuration%0a%0a!!! Why to use independent, self-contained installations of PmWiki%0a* it is not a wiki farm, and requires no additional administrative knowledge - it's just two installations%0a* if you decide to move one of the wikis to another server, you can simply copy the wiki directory structure to the second server, and it will work (assuming there is a web server and PHP in place).%0a* you can run different versions of PmWiki on each wiki (good for testing new versions)%0a* no matter how badly you mess up one installation, it doesn't affect the other%0a%0a!!! Why to use a [[WikiFarm(s)]]%0a* you can upgrade all wikis in your farm by simply upgrading your home wiki%0a* recipes can be shared across all wikis%0a* portions of your configuration can be shared across wikis%0a* most code is stored in one location and shared by all wikis in the farm%0a%0a!!! I still can't decide if I need a farm ...%0aThe good news is that you don't have to decide in advance. In fact, the recommended procedure is to first do a "normal" or single [[installation]] of PmWiki. Use it for a while. Create pages and edit them. Get to know how to add recipes. Be sure to try out [[WikiGroup | WikiGroups]] (they may be all you need).%0a%0aIf you choose to create a wiki farm, then read on ...%0a%0a[[#config]]%0a!! Creating/Configuring a [[WikiFarm(s)]]%0a!!! Prerequisites%0aBefore you create a farm, make sure that:%0a* you have a working installation of PmWiki ready to become the home wiki for your farm%0a* all of the wikis in your farm will be on the same web server%0a* each wiki will have a unique URL, such as http://www.example.com/wiki1/, http://www.example.com/wiki2/, http://another.example.com/wiki1/ and so on.%0a%0a!!! Creating the home wiki%0aYou do have a working installation of PmWiki at this point, don't you? That's good, because your existing wiki is about to become the home wiki of your farm.%0a%0aIn the directory that contains your existing wiki, create the file ''local/farmconfig.php''. This file is used to hold any [[local customizations]] that apply across the whole farm. For example, you could assign an admin password in ''farmconfig.php'' that will be used by all of the wikis in your farm.%0a%0aIf the URL used to access your existing wiki is http://www.example.com/pmwiki/ then a minimal ''farmconfig.php'' file would look like this:%0a%0a-> [@%3c?php if (!defined('PmWiki')) exit();%0a$FarmPubDirUrl = 'http://www.example.com/pmwiki/pub';@]%0a%0aThis loads the variable $FarmPubDirUrl with the URL location of your home wiki's ''pub/'' directory. All of the wikis in your farm share this ''pub/'' directory. The ''pub/'' directory holds skin definitions and GUI-edit buttons to be shared by all the wikis in the farm.%0a%0aAmazing as it may sound, this completes all of the changes you need to make in order to turn your existing wiki into the home wiki of your farm.%0a%0a!!! Creating an additional wiki in your farm%0a-%3c 1. Create a directory to hold the new wiki. This directory must be web-accessible, just like the directory that holds your home wiki.%0a%0a-%3c 2. Create a file called ''index.php'' in the directory with the following contents:%0a%0a--> [@ %3c?php include_once('path/to/pmwiki.php'); @]%0a%0a-> This allows your new wiki to share the PmWiki code stored in your home wiki. The ''[@path/to/pmwiki.php@]'' is the file path to ''pmwiki.php'' in your home wiki. Use an absolute file path ([@/home/username/pmwiki/pmwiki.php@]) or a relative file path ([@../pmwiki/pmwiki.php@]). Do not use a url path - there should not be an '[@http://@]' in it anywhere. For a web server running under Windows, you need to use a complete file path as in [@C:/Apache Group/Apache2 /www/mynewwiki/@].%0a%0a-%3c 3. Open a web browser and browse the URL of the new wiki. This will be a web address starting with '[@http://@]'. PmWiki will attempt to automatically create a writable ''wiki.d/'' directory where the wiki's pages will be stored. If you see an error message, follow the instructions. If you choose the option for a "slightly more secure installation" be sure to execute both commands.%0a%0aYour new wiki is now set up, and your farm now contains 2 wikis. To add more wikis, just repeat these 3 steps.%0a%0a%0a!!! Customization%0aEach wiki in a farm inherits the settings stored in ''farmconfig.php''. Do any customization that you want to apply farm-wide (to all the wikis) in ''farmconfig.php''.%0a%0aCreate a ''local/'' directory within each wiki's directory to hold [[local customizations]] that apply only to that wiki. You should at least create the local/config.php file with a new title, like so : %0a%0a->[@%0a%3c?php if (!defined('PmWiki')) exit();%0a ## Title of your farmed wiki%0a $WikiTitle = 'New Wiki';%0a@]%0a%0aFarm-wide customizations are processed before the individual wiki local customizations.%0a%0aThe PmWiki variable ''$FarmD'' points to the directory in which pmwiki.php is installed, and your home wiki, and it is used as a prefix to allow the other wikis to share PmWiki components. For example:%0a* ''$FarmD/scripts/'' points to the shared ''scripts/'' directory%0a* ''$FarmD/pub/'' points to the shared ''pub/'' directory%0a* ''$FarmD/cookbook/'' points to the shared ''cookbook/'' directory%0a%0aAny [[Cookbook(:.)]] scripts you include in farmconfig.php must be included with a line such as:%0a-> @@include_once("$FarmD/cookbook/scriptfile.php");@@\\%0aNote the double quotes - single quotes may work for per farm inclusions, but they will not work for $FarmD.%0a%0a!!! Password use/authorization on farm wikis:%0a%0a''' How come when I switch to another wiki within a farm, I keep my same authorization?'''%0a%0aPmWiki uses PHP sessions to keep track of authentication/authorization information, and by default PHP sets things up such that all interactions with the same server are considered part of the same session.%0a%0aAn easy way to fix this is to make sure each wiki is using a different cookie name for its session identifier. Near the top of one of the wiki's local/config.php files, before calling authuser or any other recipes, add a line like:%0a%0a-> @@ session_name('XYZSESSID'); @@%0a%0aYou can pick any alphanumeric name for XYZSESSID; for example, for the cs559-1 wiki you might choose%0a%0a-> @@ session_name('CS559SESSID'); @@%0a%0aThis will keep the two wikis' sessions independent of each other.%0a%0a!! Notes%0a* The terminology used to describe wiki farms is not used consistently. See [[WikiFarmTerminology]] for more info.%0a* It is important to remember that not all of the recipes in the Cookbook have been written for or tested with farms. Be sure to look for instructions on how to use a recipe on a farm.%0a* There are many, many more things you can do with farms. Some are described on [[PmWiki:WikiFarmsAdvanced]] which also contains links to step-by-step examples of setting up a farm.%0a%0aCategories: [[(http://www.pmwiki.org/wiki/Category/)WikiFarms]] time=1433320784