MediaWiki
To run the MediaWiki collaboration and documentation platform using Unit:
-
Install Unit with a PGP language module.
-
Install MediaWiki’s core files. Here we install them at /path/to/app; use a real path in your configuration.
-
Change ownership:
Run the following command (as root) so Unit can access the application directory (If the application uses several directories, run the command for each one):
# chown -R unit:unit /path/to/app/ # User and group that Unit's router runs as by default
The unit:unit user-group pair is available only with official packages , Docker images, and some third-party repos. Otherwise, account names may differ; run theps aux | grep unitd
command to be sure.For further details, including permissions, see the security checklist.
-
Next, prepare the MediaWiki configuration for Unit (use real values for share and root):
{ "listeners": { "*:80": { "pass": "routes" } }, "routes": [ { "match": { "uri": [ "!/tests/qunit/*", "/cache/*", "/includes/*", "/languages/*", "/maintenance/*", "/tests/*", "/vendor/*" ] }, "_comment_match": "Controls access to directories best kept private", "action": { "return": 404 } }, { "match": { "uri": [ "/api.php*", "/img_auth.php*", "/index.php*", "/load.php*", "/mw-config/*.php", "/opensearch_desc.php*", "/profileinfo.php*", "/rest.php*", "/tests/qunit/*.php", "/thumb.php*", "/thumb_handler.php*" ] }, "_comment_match": "Enables access to application entry points", "action": { "pass": "applications/mw/direct" } }, { "match": { "uri": [ "!*.php", "!*.json", "!*.htaccess", "/extensions/*", "/images/*", "/resources/assets/*", "/resources/lib/*", "/resources/src/*", "/skins/*" ] }, "_comment_match": "Enables static access to specific content locations", "_comment_negations": "The negations deny access to the file types listed here", "action": { "share": "/path/to/app$uri" }, "_comment_action": "Serves matching static files" }, { "action": { "pass": "applications/mw/index" } } ], "applications": { "mw": { "type": "php", "targets": { "direct": { "root": "/path/to/app/" }, "_comment_direct": "Path to the application directory; use a real path in your configuration", "index": { "root": "/path/to/app/", "script": "index.php" }, "_comment_index": "All requests are handled by a single script" } } } }
The difference between the pass targets is their usage of the script setting:
- The direct target runs the .php script from the URI or defaults to index.php if the w omits it.
- The index target specifies the script that Unit runs for any URIs the target receives.
-
Upload the updated configuration.
Assuming the JSON above was added to
config.json
. Run the following command as root:# curl -X PUT --data-binary @config.json --unix-socket \ /path/to/control.unit.sock \ # Path to Unit's control socket in your installation http://localhost/config/ # Path to the config section in Unit's control API
-
Browse to http://localhost/mw-config/index.php and set MediaWiki up using the settings noted earlier:
Download the newly generated LocalSettings.php file and place it appropriately:
$ chmod 600 LocalSettings.php
Run the following commands (as root) to set the correct ownership:
# chown unit:unit LocalSettings.php # Values from Step 3
# mv LocalSettings.php /path/to/app/ # Path to the application directory; use a real path in your configuration
-
After installation, add a match condition to the first step to disable access to the mw-config/ directory. Run the following command (as root):
# curl -X POST -d '"/mw-config/*"' \ --unix-socket /path/to/control.unit.sock \ # Path to Unit's control socket in your installation http://localhost/config/routes/mediawiki/0/match/uri/ # Path to the route's first step condition and the 'uri' value in it { "success": "Reconfiguration done." }\
After a successful update, MediaWiki should be available on the listener’s IP address and port: