Building a Wiki
Full Title or Meme
Building of a Wiki on Microsoft Azure with Minimal Effort
This should help anyone wanting to enable MediaWiki on Azure.
A team that is working on a single problem or area of expertise but is separated by time or distance yet still needs to share information quickly with little extra effort is given a wiki to collect information as it is generated. Sharing is then automatic. Specifically this present site was created to establish community for any interested in online sharing of a user's identifiers, attributes, behaviors and inferences established thereby.
Author: Tom Jones 2018-05-08
Constructing a set of description pages on a site that can be modified by any person that is willing to establish a persistent identity.
At first it seemed like the logical choice was to build a MediaWiki instance that was part of the tomjones.us web site, but there were multiple challenges that were related to the manner that MediaWiki is designed, or evolved, into its present form. Specifically MediaWiki is a unified web site that depends upon a tight integration with a SQL data base during its entire lifecycle from initial create and updating as determined by Wikipedia from which is was derived. In that mode it can easily be built on an wide variety of infrastructures which are known in current jargon as IaaS, or Infrastructure as a Service. The current tomjones.us site was created as a SaaS, or Software as a Service from the Azure cloud. One example of the problems is found in the way that fulltext catalogs are trouble in Wikimedia. Not only is the initial creation with a default value of , but all the data placed in the table is character data installed in a varbinary field. After a great deal of effort to integrate MediaWiki into that site, it was abandon in favor of a separate IaaS implementation of MediaWiki without the use of Azure SQL services as described below.
The choice of MediaWiki as the solution (or infrastructure platform) was not a requirement for such a sharing environment. The Wikipedia model is well-known and used by many in the computer industry, but it has evolved over time and does not reflect what a new, "clean room" design might provide. Besides the lack of any modularity, as noted above, some of the internal structures are not user friendly. For example the method for building an maintaining a table is bizarre. Other solutions, like Google Docs, work well for an office environment, but not for collaboration. There are good collaboration tools, like git hub where code from this site is posted. A wiki can be established there for collaboration, but it is project based, while this site is more general.
Parts of the details this solution were described by CGillum in his Dev Blog. Where MediaWiki is installed on Azure, but SQLite is used as the data base. In this solution we start with authenticaiton from MediaWiki itself and plan to move to authentication based on OpenID Connect.
Creating the Wiki
- Create a Web "App Service" on the Azure Portal.
- Download code from MediaWiki site. This page is based on the most recent release of long term support, 1.27.4.
- Determine how you want to maintain the code. This site loaded the MediaWiki to WebPI and then migrated to Visual Studio to enable publication to Azure.
- An alternate approach from the link above is to just extract the MediaWiki code directly to the Azure site.
- Once the code is on Azure, just run it. If there is no LocalSettings.php file, then an install will be initiated.
- The one way that seems to work is to select SQLite as the data base file, you will need storage on Azure to enable that.
- Once you have a LocalSettings.php file, put it in the web site root and start the site again.
Maintaining the Wiki
- Viewing the files on the site is described in the Kudu Service Wiki.
- It is easier to use the Kudu services if you have installed a json viewer on a desktop browser, like this Awesome Viewer from Rahul Barun.
Authenticating the Users
- IPBLoginAuth a MediaWiki extension which authenticates users through an IPB forums database.