X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;ds=sidebyside;f=Mediawiki_Setup_Guide;h=6acc2432992fd4978b098db1a47ce6a3237a3553;hb=2631a87ebcd3c7b743d968cf3d1f67fa2b0254db;hp=f060408fe457d852a70828a451b3ec0be8a95ea4;hpb=588d277988efb692ae76ed500ebd3727db386461;p=mediawiki-setup
diff --git a/Mediawiki_Setup_Guide b/Mediawiki_Setup_Guide
index f060408..6acc243 100644
--- a/Mediawiki_Setup_Guide
+++ b/Mediawiki_Setup_Guide
@@ -1,31 +1,31 @@
== Introduction ==
-'''tldr''': For Gnu/Linux (with a bit of Debian bias), a more concise, holistic and automated install than the official Mediawiki docs. Do some initial configuration then download this page and run it, or execute it as you read.
+'''tldr''': For GNU/Linux (with a bit of Debian bias), a more concise, holistic and automated install than the official Mediawiki docs. Do some initial configuration then download this page and run it, or execute it as you read.
''' Goals / Why use this guide? '''
* Good recommendations. Official docs mostly avoid recommendations among a myriad of possibilities
* Closely references & supplements official documentation
+* Automatic security updates
* Explicit automation support wherever practical
-* Used to setup this site (style optional)
-* Contributions welcome and will be updated/tested on this very site!
-* Support for multiple linux distros
-* Holistic scope (backups, server setup), but sections stand on their own
-* Explicit support for production & local testing instance. Additions for production like https and web analytics.
-* Edits to this page are closely monitored by the original author.
+* Used to setup this site (style is optional)
+* Support for multiple gnu/linux distros
+* Holistic scope (backups, server setup), but sections are independent
+* Code blocks are [https://en.wikipedia.org/wiki/Idempotent idempotent]
+* Edits to this page are tested on this site and reviewed by the main author.
'''Assumptions'''
-* Self hosting, single Linux system with Bash shell
-* Root shell is assumed throughout
-* Code blocks are [https://en.wikipedia.org/wiki/Idempotent idempotent]
+* Self hosting, single GNU/Linux system with root Bash shell
+
'''Version Support'''
Very minor adjustments needed for other distros. Help expand this list.
-* Mediawiki 1.27
-* Debian 8 (tested)
-* Debian testing (tested Aug 7, 2016)
+* Mediawiki 1.28, updated as new versions are released
+* Debian 8 + backports
+* Debian 8
+* Debian testing (last tested Aug 7, 2016)
Pre 5/2016 revisions ran Mediawiki 1.23, tested on Fedora 20 and Ubuntu 14.04.
@@ -35,9 +35,17 @@ Pre 5/2016 revisions ran Mediawiki 1.23, tested on Fedora 20 and Ubuntu 14.04.
The most common route and the one taken by this site is buying a domain name from a site like namecheap, and a cheap vps from companies like linode or digital ocean. They have good getting started guides which mostly apply beyond their own sites.
+'''Install Certbot'''
+
+For debian jessie with backports:
+
+For other distros, follow instructions at [https://certbot.eff.org/ certbot.eff.org].
+
'''Email Setup'''
-Setting up email can be an involved process. Mediawiki is perfectly happy to disable email with 1 setting (no password reminders or notifications), but it is a nice feature to have. You could run your own mail server (on the mediawiki server, or elsewhere), or use one of many services which sends mail for very cheap, or free within limits (popular examples [http://www.mailgun.com/ mailgun], [https://mandrillapp.com/ mandrill], [http://www.mailjet.com/pricing mailjet], [https://aws.amazon.com/ses/ aws]), or connect to a full featured send/receive mail provider like [https://fastmail.com fastmail] (this server is setup that way). How we did that is for a future wiki page.
+Setting up email can be an involved process, and this guide assumes that a some program (usually postfix or exim) is implementing a functional sendmail interface. Mediawiki uses email with to send password reminders or notifications, and this guide includes cronjobs for updating mediawiki and doing backups which will send mail in the case of an error. Email is also the recommended way to get notifications of package updates which require manual steps such as restarting of services.
If you are not setting up your server to send mail with a program that uses the default sendmail interface, see these pages when you are configuring mediawiki: [[mediawikiwiki:Manual:$wgEnableEmail|Manual:$wgEnableEmail]], [https://www.mediawiki.org/wiki/Configuration_settings#Email_settings Manual:Email_settings], [[mediawikiwiki:Manual:$wgSMTP|Manual:$wgSMTP]]
@@ -61,31 +69,31 @@ export wikipass=REPLACE_ME
# root password for the mysql database
export dbpass=REPLACE_ME
-# git branch for mediawiki + extensions.
-# This guide has only been tested with 1_27.
-# branch names: https://git.wikimedia.org/branches/mediawiki%2Fcore.git
-export mw_branch=REL1_27
+export mwdomain=REPLACE_ME # domain name. for this site, it's ofswiki.org
-# customize these questions to something your contributors would know,
-# and at least doesn't have the answer directly in the question
+# customize these questions. Try not to have the answer be a word in the question.
captchaArray() {
if ! grep -Fx '$localSettingsQuestyQuestions = array (' $mwc; then
tee -a $mwc <<'EOF'
$localSettingsQuestyQuestions = array (
"What is the name of the wiki software this site (and wikipedia) uses?" => "Mediawiki",
- "What does f in ofswiki.org stand for?" => "Free"
+ "REPLACE_ME with a question" => "REPLACE_ME with an answer"
);
EOF
fi
}
+# The rest of this section will work fine with no changes.
+
+# git branch for mediawiki + extensions. See intro for supported versions.
+# branch names: https://git.wikimedia.org/branches/mediawiki%2Fcore.git
+export mw_branch=REL1_28
+
# As set by gui installer when choosing cc by sa.
export mw_RightsUrl='https://creativecommons.org/licenses/by-sa/4.0/'
export mw_RightsText='Creative Commons Attribution-ShareAlike'
export mw_RightsIcon='$wgScriptPath/resources/assets/licenses/cc-by-sa.png'
-
-export mwdomain=REPLACE_ME # domain name. for this site, it's ofswiki.org
# Alphanumeric site name for pywikibot.
# Here we use the domain minus the dots, which should work fine without changing.
export mwfamily=${mwdomain//./}
@@ -139,7 +147,7 @@ mw-clone() {
local url=$1
local original_pwd="$PWD"
local name
- local re='[^/]*/[^/]*$'
+ local re='[^/]*/[^/]*$' # last 2 parts of path
[[ $url =~ $re ]] ||:
target=$mw/${BASH_REMATCH[0]}
if [[ ! -e $target/.git ]]; then
@@ -157,11 +165,10 @@ mw-clone() {
}
mw-ext () {
local ext
- for ext in "$@"; do
+ for ext; do
mw-clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/$ext
- if [[ -e $mw/ext/$ext/extension.json ]]; then
- # new style extension. remove old style declaration
- sed -i --follow-symlinks '#^require_once( "\\\$IP/extensions/\$ext/\$ext\.php" );#d' $mwc
+ if [[ -e $mw/extensions/$ext/extension.json ]]; then
+ # new style extension
teeu $mwc </dev/null; then
- # in debian wheezy time-frame distros, mediawiki was packaged.
- apt-get -y install php-apc mediawiki
+ # mediawiki is packaged in jessie backports.
+ DEBIAN_FRONTEND=noninteractive apt-get -y install php5-apcu mediawiki
else
# https://www.mediawiki.org/wiki/Manual:Installation_requirements
if apt-get install -s php7.0 &>/dev/null; then
# note, 7.0 is untested by the editor here, since it's not
# available in debian 8. it's listed as supported
# in the mediawiki page.
- # noninteractive to avoid mysql password prompt
- DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 mysql-server \
+ # noninteractive to avoid mysql password prompt.
+ DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 \
+ default-mysql-server \
php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-xml \
- php7.0-apcu
+ php7.0-apcu php7.0-mbstring
else
- DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 mysql-server \
+ # note: mbstring is recommended, but it's not available for php5 in
+ # debian jessie.
+ DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 \
+ default-mysql-server \
php5 php5-mysql libapache2-mod-php5 php5-apcu
fi
fi
@@ -296,6 +307,8 @@ fi
# git branch -r
git checkout -f origin/$mw_branch
git clean -ffxd
+# apply librejs patch
+curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-1.28-librejs.patch;hb=HEAD" | patch -r - -N -p1
# Get the php libraries wmf uses. Based on:
# https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries
if [[ ! -e vendor/.git ]]; then
@@ -373,14 +386,11 @@ the apache config.
temp=$(mktemp -d)
cd $temp
git_site=https://iankelling.org/git
-git clone $git_site/acme-tiny-wrapper
l=$mw/../../logs
mkdir -p $l
-acme-tiny-wrapper/acme-tiny-wrapper $mwdomain
-
git clone $git_site/basic-https-conf
-{ cat <\n $(< $line)\n";
done
-} | basic-https-conf/apache-site -r ${mw%/*} - $mwdomain
cd
rm -rf $temp
@@ -432,7 +441,7 @@ teeu $mwc<
-Settings I recommend which are different than the defaults.
+Settings asked by the gui setup which are different than the install script defaults. They different because the defaults are the most compatible and unobtrusive.
== Install and Configure Mediawiki Extensions ==
@@ -504,15 +517,18 @@ When installing extensions on a wiki with important content, backup first as a p
''' Extensions with no configuration needed '''
-{| class="wikitable"
+{| class="writable"
! Name
! Description
|-
| [[mediawikiwiki:Extension:Cite|Extension:Cite]]
- | Have references in footnotes.
+ | Have references in footnotes*
|-
| [[mediawikiwiki:Extension:CiteThisPage|Extension:CiteThisPage]]
- | Ability to generate citations to pages in a variety of styles.
+ | Ability to generate citations to pages in a variety of styles*
+ |-
+ | [[mediawikiwiki:CheckUser|Extension:CheckUser]]
+ | Get ip addresses from inside mediawiki so you can ban users''
|-
| [[mediawikiwiki:Extension:CSS|Extension:CSS]]
| Allows CSS stylesheets to be included in specific articles
@@ -521,36 +537,41 @@ When installing extensions on a wiki with important content, backup first as a p
| Notification subsystem for usage by other extensions
|-
| [[mediawikiwiki:Extension:Gadgets|Extension:Gadgets]]
- | UI extension system for users
+ | UI extension system for users*
|-
| [[mediawikiwiki:Extension:ImageMap|Extension:ImageMap]]
- | Links for a region of an image
+ | Links for a region of an image*
|-
| [[mediawikiwiki:Extension:Interwiki|Extension:Interwiki]]
- | Tool for nice links to other wikis
+ | Tool for nice links to other wikis*
|-
| [[mediawikiwiki:Extension:News|Extension:News]]
| Embed or rss recent changes
|-
| [[mediawikiwiki:Extension:Nuke|Extension:Nuke]]
- | Mass delete of pages, in the case of spam
+ | Mass delete of pages, in the case of spam*
|-
| [[mediawikiwiki:Extension:ParserFunctions|Extension:ParserFunctions]]
- | Useful for templates
+ | Useful for templates*
|-
| [[mediawikiwiki:Extension:Poem|Extension:Poem]]
- | Useful for formatting things various ways
+ | Useful for formatting things various ways*
+ |-
+ | [[mediawikiwiki:Extension:Renameuser|Extension:Renameuser]]
+ | Allows bureaucrats to rename user accounts*
|-
| [[mediawikiwiki:Extension:SyntaxHighlight_GeSHi|Extension:SyntaxHighlight_GeSHi]]
- | Source code highlighting
+ | Source code highlighting*
|-
| [[mediawikiwiki:Extension:Variables|Extension:Variables]]
| Define per-page variables
|}
+* = Comes with the MediaWiki default download.
+
@@ -563,15 +584,6 @@ sudo -u $apache_user php $mw/extensions/AntiSpoof/maintenance/batchAntiSpoof.php
-''' [[mediawikiwiki:CheckUser|Extension:CheckUser]]: Get ip addresses from inside mediawiki so you can ban users'''
-
-Requires special install steps or we can get into a bad state. Add a sleep like the default of update.php to avoid errors.
-
-
-
'''[[mediawikiwiki:Extension:Wikidiff2|Extension:Wikidiff2]]: Faster and international character supported page diffs'''
I used packaged version since this is a c++ and probably not very tied to the Mediawiki version. This isn't packaged in fedora, haven't gotten around to testing and adding the code to compile it for fedora.
@@ -626,6 +638,8 @@ There is no current list of package depencies so I took dependencies from mediaw
''' [[mediawikiwiki:Extension:SpamBlacklist|Extension:SpamBlacklist]]: Import/create IP blacklists, mainly for spam'''
+Comes with MediaWiki.
+