Difference between revisions of "Mediawiki installation/Version 1.25"
m (→Update local wmf git clone) |
|||
(7 intermediate revisions by 2 users not shown) | |||
Line 46: | Line 46: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ | ##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ | ||
− | + | # Update the git clone on biowikifarm: | |
− | + | if [ `ls /usr/share/mw-wmf-clone/core | wc --lines` -gt 0 ]; then | |
− | cd | + | echo "# Update git /usr/share/mw-wmf-clone/core … "; |
− | cd | + | cd /usr/share/mw-wmf-clone/core; sudo git pull; # subsequent times |
+ | else | ||
+ | echo "# Get git for the first time /usr/share/mw-wmf-clone/core … "; | ||
+ | cd /usr/share/mw-wmf-clone/core; sudo git fetch; # first time | ||
+ | fi | ||
+ | cd /usr/share/mw-wmf-clone/extensions; sudo git pull; sudo git submodule update --init --recursive; | ||
+ | sudo ./quick-update | ||
+ | cd /usr/share/mw-wmf-clone/skins; sudo git pull; sudo git submodule update --init --recursive; | ||
# OPTIONAL: list information on tags etc: | # OPTIONAL: list information on tags etc: | ||
Line 60: | Line 67: | ||
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ | ##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== “Global Variables” and installing/updating core == | == “Global Variables” and installing/updating core == | ||
Line 137: | Line 143: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
####################################### | ####################################### | ||
− | |||
# 2. Create MediaWiki extensions in usr/share | # 2. Create MediaWiki extensions in usr/share | ||
# Extract correct branch or tag of an extension for this usr-share-wiki. | # Extract correct branch or tag of an extension for this usr-share-wiki. | ||
Line 150: | Line 155: | ||
# "mediawiki/semantic-maps": "3.1.3", | # "mediawiki/semantic-maps": "3.1.3", | ||
# "mediawiki/vector-skin": "*" | # "mediawiki/vector-skin": "*" | ||
+ | ##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ | ||
+ | sudo chown www-data:www-data "${usr_share_extension_path}" -R | ||
EXTENSIONS=" | EXTENSIONS=" | ||
Arrays, origin/master | Arrays, origin/master | ||
Line 232: | Line 239: | ||
cd "/usr/share/mw-wmf-clone/extensions/${this_extension}"; | cd "/usr/share/mw-wmf-clone/extensions/${this_extension}"; | ||
AVAILABLE_CLONE_VERSIONS=`git branch -r | sort --version-sort`; | AVAILABLE_CLONE_VERSIONS=`git branch -r | sort --version-sort`; | ||
− | ##### FOLLOWING LINES CAUSE ERROR -> CHECKING | + | ##### FOLLOWING LINES CAUSE ERROR -> CHECKING code temporarily DISABLED |
##if [ "`echo "$AVAILABLE_CLONE_VERSIONS" | grep --count "$this_clone_version"`" == "0" ]; then | ##if [ "`echo "$AVAILABLE_CLONE_VERSIONS" | grep --count "$this_clone_version"`" == "0" ]; then | ||
## echo "Clone version $this_clone_version not available!! Check these (git branch -r | sort --version-sort):"; | ## echo "Clone version $this_clone_version not available!! Check these (git branch -r | sort --version-sort):"; | ||
Line 270: | Line 277: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Subversion step 3 (manual, not scripted): | |
− | + | <syntaxhighlight lang="bash"> | |
− | + | # Subversion step 3 (manual, not scripted): | |
− | + | # UPDATE THE PATH, e.g. mediawiki25! | |
− | + | # create post hook commit to the current MediaWiki version | |
− | + | # Open file: sudo vi /var/lib/svn/hooks/post-commit | |
+ | # and insert following text: | ||
+ | if [ -d "/usr/share/mediawiki25/extensions" ]; then | ||
echo -en "\n\npost-commit mediawiki25/extensions (r${REV})\n" >> "${LOGFILE}" | echo -en "\n\npost-commit mediawiki25/extensions (r${REV})\n" >> "${LOGFILE}" | ||
cd /usr/share/mediawiki25/extensions | cd /usr/share/mediawiki25/extensions | ||
Line 281: | Line 290: | ||
/usr/bin/svn update >> "${LOGFILE}" | /usr/bin/svn update >> "${LOGFILE}" | ||
echo -ne " (done)\n" >> "${LOGFILE}" | echo -ne " (done)\n" >> "${LOGFILE}" | ||
− | + | fi | |
+ | </syntaxhighlight> | ||
===== Skins ===== | ===== Skins ===== | ||
Line 299: | Line 309: | ||
</source> | </source> | ||
− | |||
=== USR_SHARE_MW → var/www-folder === | === USR_SHARE_MW → var/www-folder === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 390: | Line 399: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | # NOTES: Normally composer creates a "vendor" folder in the /var/www/.../w/ folder | + | # NOTES: Normally composer creates a "vendor" folder in the /var/www/.../w/ folder |
− | # On biowikifarm we create a vendor folder in /usr/share/mediawikiXX (linked into /var/www/.../w/). | + | # On biowikifarm we create a vendor folder in /usr/share/mediawikiXX (linked into /var/www/.../w/). |
− | # Problem: we also need composer.json and composer.lock files (created on first compopser install in the var-www-wikis). | + | # Problem: we also need composer.json and composer.lock files (created on first compopser install in the var-www-wikis). |
− | # However, /maintenance/update.php ... fails to run. Thus we need, from an earlier install, copy the files and add symlinks: | + | # However, /maintenance/update.php ... fails to run. Thus we need, from an earlier install, copy the files and add symlinks: |
'''TODO: use global vars AND put it into the template rather than into the example wiki v-on/w25!!!''' | '''TODO: use global vars AND put it into the template rather than into the example wiki v-on/w25!!!''' | ||
+ | <syntaxhighlight lang="bash"> | ||
# NOTE: 1. DO NOT RERUN THIS SCRIPT! 2. This uses an EXAMPLE wiki path, not the template path. TODO: test with a template wiki next time! | # NOTE: 1. DO NOT RERUN THIS SCRIPT! 2. This uses an EXAMPLE wiki path, not the template path. TODO: test with a template wiki next time! | ||
# rename composer.json to composer.distrib.json if updating from existing installs: | # rename composer.json to composer.distrib.json if updating from existing installs: | ||
Line 404: | Line 414: | ||
sudo ln -s ${usr_share_wiki_path}/composer.json /var/www/v-on/w25/composer.json | sudo ln -s ${usr_share_wiki_path}/composer.json /var/www/v-on/w25/composer.json | ||
sudo ln -s ${usr_share_wiki_path}/composer.lock /var/www/v-on/w25/composer.lock | sudo ln -s ${usr_share_wiki_path}/composer.lock /var/www/v-on/w25/composer.lock | ||
+ | </syntaxhighlight> | ||
Notes: | Notes: | ||
* Update the /usr/share/mediawikiXX/composer.json file with the desired composer-installed extensions | * Update the /usr/share/mediawikiXX/composer.json file with the desired composer-installed extensions | ||
Line 410: | Line 421: | ||
Run composer (EXAMPLE WIKI!): | Run composer (EXAMPLE WIKI!): | ||
+ | <syntaxhighlight lang="bash"> | ||
# First time (writing both into vendor and extension folders): | # First time (writing both into vendor and extension folders): | ||
# cd /var/www/v-on/w25; sudo php /usr/local/bin/composer.phar install | # cd /var/www/v-on/w25; sudo php /usr/local/bin/composer.phar install | ||
# Later (harmless to re-run): | # Later (harmless to re-run): | ||
cd /var/www/v-on/w25; sudo php /usr/local/bin/composer.phar update | cd /var/www/v-on/w25; sudo php /usr/local/bin/composer.phar update | ||
− | sudo chown | + | sudo chown www-data:www-data -R "${usr_share_extension_path}" |
+ | </syntaxhighlight> | ||
OTHER WORK | OTHER WORK | ||
Line 432: | Line 445: | ||
* SMW-updates partly work with new rebuildData.php script and conf= syntax and use option --dbuser=wikiadmin (because certain tables may need to be created anew): | * SMW-updates partly work with new rebuildData.php script and conf= syntax and use option --dbuser=wikiadmin (because certain tables may need to be created anew): | ||
+ | <syntaxhighlight lang="bash"> | ||
cd /var/www/v-on/w25; | cd /var/www/v-on/w25; | ||
sudo -u www-data php ./maintenance/runJobs.php -v --procs 4 --conf=./LocalSettings.php | sudo -u www-data php ./maintenance/runJobs.php -v --procs 4 --conf=./LocalSettings.php | ||
Line 446: | Line 460: | ||
sudo -u www-data php ./maintenance/runJobs.php -v --procs 4 --conf=./LocalSettings.php | sudo -u www-data php ./maintenance/runJobs.php -v --procs 4 --conf=./LocalSettings.php | ||
sudo /usr/sbin/apache2ctl -k graceful && sudo service nginx restart && sudo service php5-fpm restart | sudo /usr/sbin/apache2ctl -k graceful && sudo service nginx restart && sudo service php5-fpm restart | ||
+ | </syntaxhighlight> | ||
== Installation Issues, Problems, Transition from older Wikis == | == Installation Issues, Problems, Transition from older Wikis == | ||
Line 499: | Line 514: | ||
[[Category:MediaWiki Extensions]] | [[Category:MediaWiki Extensions]] | ||
[[Category:Semantic Mediawiki]] | [[Category:Semantic Mediawiki]] | ||
+ | [[Category:Upgrade]] |
Latest revision as of 14:02, 21 April 2016
MediaWiki version 1.25 installation notes (On 2015-02-26 installed as alpha version)
General note: the present code may NOT allow updating. On trial it failed on updating the extensions. Instead, an update was created in a new folder, and then the existing folder overwritten.
Contents
Architecture
See also http://biowikifarm.net/meta/Mediawiki_installation#Cloning_a_new_wiki
Schema:
MW_WMF_CLONE /usr/share/mw-wmf-clone ├ core (Git) ─────────git-archive-export───┐ /usr/share/mw-wmf-clone/core └ skins (Git) ───git-archive-export─→ ) ─┐ /usr/share/mw-wmf-clone/skins └ extensions (Git) ───git-archive-export─→ ) ─┐ /usr/share/mw-wmf-clone/extensions │ │ Active installation (e.g. REL1_25) │ │ ┌ core-files (local git archive-export) ←┘ │ /usr/share/mediawiki25 ├ skins │ /usr/share/mediawiki25/skins ├ extensions (mixed: │ /usr/share/mediawiki25/extensions │ svn biowikifarm, (repo: as svn-post-commit) │ git-archive-export) ←──────────────────┘ │ some svn extensions from MediaWiki esp. Extension:StringFunctions ↓ │ var-www-Wiki ├─→ core-files (linked) /var/www/v-xxx/w/ └─→ extensions (linked) /var/www/v-xxx/w/extensions composer-extensions /var/www/v-xxx/w/composer.json
Git short help
#↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
git checkout <branch>
git checkout <tag-name>
git checkout -b <create-new-branch>
git branch -r|--remotes # list all branches
git tag -l|--list # list all tags
git tag -l|--list <pattern> # list tags matching the pattern
git archive <tag-or-branch-or-tree-ish> # extract an archive
#↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
Update local wmf git clone
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# Update the git clone on biowikifarm:
if [ `ls /usr/share/mw-wmf-clone/core | wc --lines` -gt 0 ]; then
echo "# Update git /usr/share/mw-wmf-clone/core … ";
cd /usr/share/mw-wmf-clone/core; sudo git pull; # subsequent times
else
echo "# Get git for the first time /usr/share/mw-wmf-clone/core … ";
cd /usr/share/mw-wmf-clone/core; sudo git fetch; # first time
fi
cd /usr/share/mw-wmf-clone/extensions; sudo git pull; sudo git submodule update --init --recursive;
sudo ./quick-update
cd /usr/share/mw-wmf-clone/skins; sudo git pull; sudo git submodule update --init --recursive;
# OPTIONAL: list information on tags etc:
cd /usr/share/mw-wmf-clone/core;
git branch -r | sort --version-sort # list branches
git tag -l | sort --version-sort # list tags
cd /usr/share/mw-wmf-clone/extensions;
git branch -r | sort --version-sort # list branches
git tag -l | sort --version-sort # list tags
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
“Global Variables” and installing/updating core
# Set global variables (UPDATE this for diff. versions!)
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
usr_share_wiki_path="/usr/share/mediawiki25"
git_branch="origin/master" ## OR "origin/wmf/1.25wmf19" for wmf version, OR REL1_25
git_tag="origin/master" ## OR "1.25.9"
vhost_path="/var/www/zzz-temp-overwrite4mw25template" # in web base dir
# version independent:
usr_share_extension_path="${usr_share_wiki_path}/extensions"
vhost_wiki_path="${vhost_path}/w"
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
# Note: if wiki is not directly in the vhost path, add the necessary subfolder, e.g. .../en/w
# End of global variables
# Create MediaWiki core for specific version
if ! [ -d "${usr_share_wiki_path}" ]; then
sudo -u root -g mwadmin mkdir --parent "${usr_share_wiki_path}"
echo -e "Create wiki directory ($git_branch): '${usr_share_wiki_path}'"
else
echo -e "Wiki wiki directory ($git_branch) exits already: '${usr_share_wiki_path}'"
fi
# Extract MediaWiki core files from git to usr-share-folder
### EXAMPLE without vars:
### cd /usr/share/mw-wmf-clone/core; sudo git archive origin/REL1_23 | sudo -u root -g mwadmin tar --extract --overwrite --directory=/usr/share/mediawiki23
cd /usr/share/mw-wmf-clone/core && sudo git archive $git_tag | sudo -u root -g mwadmin tar --extract --overwrite --directory="${usr_share_wiki_path}"
sudo chown root:www-data -R "${usr_share_extension_path}"
# for composer on wikifarm: create a vendor folder in usr-share-wiki
sudo mkdir "${usr_share_wiki_path}"/vendor
# TO UPDATE JUST USE:
cd /usr/share/mw-wmf-clone/core && sudo git archive $git_tag | sudo -u root -g mwadmin tar --extract --overwrite --directory="${usr_share_wiki_path}"
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
Install wiki extensions
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# 1. INFORMATION ONLY:
# LIST (and write to file) git tags / git branches of all extensions
# Write into file in the user's home folder
# (Note: Ignore error about /mw-wmf-clone/extensions/extensions)
sudo printf "\n" > ~/"ext_tags_and_branches.txt";
IFS=$'\n'; # change internal Field Separator to newline only; test: printf %q "$IFS"; default $' \t\n'
for ext in `find /usr/share/mw-wmf-clone/extensions -maxdepth 1 -type d -printf "%f\n" | sort`; do
printf "\n%s" "$ext" >> ~/"ext_tags_and_branches.txt";
cd "/usr/share/mw-wmf-clone/extensions/$ext";
tags=""; tags=`git tag -l | sed ':anchor;N;$!banchor;s@\n@, @g; s@ \{2,\}@ @g;'` ;
if [ "$tags" != "" ]; then
printf "\n tags: %s" "$tags" >> ~/"ext_tags_and_branches.txt";
else
printf "\n" >> ~/"ext_tags_and_branches.txt";
fi
done;
# List all extensions with their branches, write into same file
for ext in `find /usr/share/mw-wmf-clone/extensions -maxdepth 1 -type d -printf "%f\n" | sort`; do
printf "\n%s" "$ext" >> ~/"ext_tags_and_branches.txt";
cd "/usr/share/mw-wmf-clone/extensions/$ext";
branches=""; branches=`git branch --remotes | sed ':anchor;N;$!banchor;s@\n@, @g; s@ \{2,\}@ @g;'`
if [ "$branches" != "" ]; then printf "\n branches: %s" "$branches" >> ~/"ext_tags_and_branches.txt"; else printf "\n" >> ~/"ext_tags_and_branches.txt"; fi
done;
cd /usr/share/mw-wmf-clone/extensions
IFS=$' \t\n';
# end list extensions' tags and branches
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
#######################################
NOTE: If git_branch is set to something like REL1_24, code below is broken, QUICKFIX: Put a version after EVERY extension!
#######################################
# 2. Create MediaWiki extensions in usr/share
# Extract correct branch or tag of an extension for this usr-share-wiki.
# IMPORTANT: extensions managed by PHP script composer.phar and
# their dependencies must not be included here, presently these are:
# "mediawiki/graph-viz": "*",
# "mediawiki/image-map": "@dev",
# "mediawiki/semantic-media-wiki": "~2.1",
# "mediawiki/semantic-breadcrumb-links": "1.0.0",
# "mediawiki/semantic-result-formats": "2.0",
# "mediawiki/semantic-forms": "3.1",
# "mediawiki/semantic-maps": "3.1.3",
# "mediawiki/vector-skin": "*"
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
sudo chown www-data:www-data "${usr_share_extension_path}" -R
EXTENSIONS="
Arrays, origin/master
BetaFeatures, origin/master
CategoryTree, origin/master
CharInsert, origin/master
Cite, origin/master
Collection, origin/master
ConfirmAccount, origin/master
ConfirmEdit, origin/master
ContactPage, origin/master
DataTransfer, 0.6
DismissableSiteNotice, origin/master
ExternalData, 1.8
Gadgets, origin/master
HeaderTabs, 1.0.1
InputBox, origin/master
Interwiki, origin/master
LiquidThreads, origin/master
LocalisationUpdate, origin/master
Lockdown, origin/master
MassEditRegex, origin/master
Math, origin/master
MediaFunctions, origin/master
MwEmbedSupport, origin/master
MultimediaViewer, origin/master
Nuke, origin/master
OpenID, origin/master
PageTools, REL_2_0
ParserFunctions, origin/master
Poem, origin/master
PdfExport, origin/master
PdfHandler, origin/master
Quiz, origin/master
Renameuser, origin/master
ReplaceText, origin/master
SemanticCompoundQueries, origin/master
SemanticDrilldown, origin/master
SemanticFormsInputs, origin/master
SemanticInternalObjects, 0.8.1
SpamBlacklist, origin/master
SyntaxHighlight_GeSHi, origin/master
TimedMediaHandler, origin/master
TitleBlacklist, origin/master
TitleKey, origin/master
UploadWizard, origin/master
Variables, origin/master
Widgets, origin/master
WikiEditor, origin/master
WikimediaMessages, origin/master
"
# --
# split line on ", ". If only one value, export HEAD, else first value is branch/tag. Example:
# SemanticMediaWiki, 1.8
# ↓ ↓
# $extension, $this_clone_version
# will export tag 1.8
# NOTE: check the line (similar to ternary operator: if condition ? dothis : dootherthings)
# $( … ) substitutes/returns the command's output
# → if ext-check-with-comma == ext then (&&) "HEAD" else (||) version-string-from-above-list-of-EXTENSIONS
# ${ext%,*} from back of $ext → delete shortest (%) or longest (%%) match
# ${ext#*,* } from front of $ext → delete shortest (#) or longest (##) match
# --------------------------------------
this_ext_update_status=""
IFS=$'\n';
for ext in $EXTENSIONS; do
if [ "${ext}" ];then
this_extension=$([ "${ext%,*}" == "$ext" ] && echo "$ext" || echo "${ext%%,*}");
this_clone_version=$([ "${ext%,*}" == "$ext" ] && echo "$git_branch" || echo "${ext#*, *}");
if ! [ -d "/usr/share/mw-wmf-clone/extensions/${this_extension}" ]; then
echo "/usr/share/mw-wmf-clone/extensions/${this_extension} DOES NOT EXIST AS GIT SOURCE, check the extension's name or path!! (extension was skipped)";
else
if [ ! -d "${usr_share_extension_path}/${this_extension}" ]; then
this_ext_update_status="+";
sudo mkdir --parents "${usr_share_extension_path}/${this_extension}";
sudo chown www-data:www-data "${usr_share_extension_path}/${this_extension}";
else
this_ext_update_status="u";
fi;
printf "git archive export: %1s %-30s %s\n" $this_ext_update_status $this_extension $this_clone_version;
if [ -d "/usr/share/mw-wmf-clone/extensions/${this_extension}" ]; then
cd "/usr/share/mw-wmf-clone/extensions/${this_extension}";
AVAILABLE_CLONE_VERSIONS=`git branch -r | sort --version-sort`;
##### FOLLOWING LINES CAUSE ERROR -> CHECKING code temporarily DISABLED
##if [ "`echo "$AVAILABLE_CLONE_VERSIONS" | grep --count "$this_clone_version"`" == "0" ]; then
## echo "Clone version $this_clone_version not available!! Check these (git branch -r | sort --version-sort):";
## echo "$AVAILABLE_CLONE_VERSIONS";
##else
## echo "OK";
##fi;
# EXAMPLE: sudo git archive --prefix=AdminLinks/ HEAD | sudo -u www-data tar --extract --overwrite --directory=/usr/share/mediawiki25/extensions
echo "sudo git archive --prefix=\"${this_extension}/\" \"$this_clone_version\""
sudo git archive --prefix="${this_extension}/" "$this_clone_version" | sudo -u www-data tar --extract --overwrite --directory="${usr_share_extension_path}";
else
echo "Source not found: \"/usr/share/mw-wmf-clone/extensions/${this_extension}\" ";
fi;
fi;
fi;
done;
cd ..
IFS=$' \t\n';
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
#######################################
Subversion extensions (svn)
## Subversion step 1: some string functions still needed (Check?) ##
# https://www.mediawiki.org/wiki/Extension:StringFunctions
cd "${usr_share_extension_path}"
sudo -u www-data -g www-data svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/StringFunctions/
# subversion step 2: biowikifarm extensions
cd "${usr_share_extension_path}"
sudo -u www-data -g www-data svn checkout file:///var/lib/svn/LocalSVNextensions "${usr_share_extension_path}"
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
#######################################
Subversion step 3 (manual, not scripted):
# Subversion step 3 (manual, not scripted):
# UPDATE THE PATH, e.g. mediawiki25!
# create post hook commit to the current MediaWiki version
# Open file: sudo vi /var/lib/svn/hooks/post-commit
# and insert following text:
if [ -d "/usr/share/mediawiki25/extensions" ]; then
echo -en "\n\npost-commit mediawiki25/extensions (r${REV})\n" >> "${LOGFILE}"
cd /usr/share/mediawiki25/extensions
echo "try to get /usr/bin/svn update >> \"${LOGFILE}\"" >> "${LOGFILE}";
/usr/bin/svn update >> "${LOGFILE}"
echo -ne " (done)\n" >> "${LOGFILE}"
fi
Skins
Since Mediawiki V1.25 the default skins are in separate Git respositories. To be installed manually, OR via composer (Vector).
Note: Vector uses COMPOSER! BUT STILL RUN FOR mwSkinNaturkunde.git
# variables
cd ${usr_share_wiki_path}/skins
# get default skins from separate skin git
## NEXT TIME: extract (git archive) from /usr/share/mw-wmf-clone/skins!
##DISABLED, IS IN COMPOSER## sudo git clone https://git.wikimedia.org/git/mediawiki/skins/Vector.git
# optionally get special skins from separate git(s)
sudo git clone https://github.com/MfN-Berlin/mwSkinNaturkunde.git
USR_SHARE_MW → var/www-folder
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# STEP 1 create web wiki folder
if ! [ -d "${vhost_wiki_path}" ]; then
sudo -u root -g mwadmin mkdir --parent "${vhost_wiki_path}"
else
echo -e "folder already exits: '${vhost_wiki_path}'"
fi
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
OpenMedia Symlink
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# STEP create symlink to openmedia
if ! [ -d "${vhost_path}/o" ]; then
echo -e "Create Openmedia-symlink '${vhost_path}/o' → '../v-species/o'"
sudo ln -s "../v-species/o" "${vhost_path}/o"
sudo mkdir "${vhost_path}/o = Openmedia-symlink"
else
echo -e "Openmedia-symlink already exits"
fi
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# symbolic links of folders
# for $vhost_wiki_path to $usr_share_wiki_path
cd "${usr_share_wiki_path}"
# \( ! -name '.*' \) avoids finding hidden directories
for current_folder in `find . -maxdepth 1 \( ! -name '.*' \) -type d -printf "%f\n"`; do
if ! [ -e "${vhost_wiki_path}/${current_folder}" ]; then
echo "symbolic link to ${vhost_wiki_path}/${current_folder}"
sudo ln -s "${usr_share_wiki_path}/${current_folder}" "${vhost_wiki_path}/${current_folder}"
fi
done
# Remove some symlinks, which should not be overwritten in existing wikis
sudo rm ${vhost_wiki_path}/cache
sudo rm ${vhost_wiki_path}/images
sudo rm ${vhost_wiki_path}/mw-config
# symbolic links of files
cd "${usr_share_wiki_path}"
# \( ! -name '.*' \) avoids finding hidden directories
for mw_wiki_file in `find . -maxdepth 1 \( ! -name '.*' \) -type f -printf "%f\n"`; do
if ! [ -e "${vhost_wiki_path}/${mw_wiki_file}" ]; then
echo "symbolic link to ${vhost_wiki_path}/${mw_wiki_file}"
sudo ln -s "${usr_share_wiki_path}/${mw_wiki_file}" "${vhost_wiki_path}/${mw_wiki_file}"
fi
done
# remove links no longer present in 1.25:
sudo rm /var/www/v-on/w25/bin
sudo rm /var/www/v-on/w25/redirect.php
sudo rm /var/www/v-on/w25/redirect.php5
sudo rm /var/www/v-on/w25/redirect.phtml
## it may be that a profiler was defined, delete!
sudo rm /var/www/v-on/w25/StartProfiler.php
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
- COPY over existing installation. EXAMPLE:
sudo mkdir /var/www/v-on/w25 sudo chown root:mwadmin /var/www/v-on/w25 sudo cp /var/www/zzz-temp-overwrite4mw25template/w/* /var/www/v-on/w25 -pr
Install composer extensions
Newer extensions must be dealt with at level of /var/www-wiki. Documentation
- https://www.mediawiki.org/wiki/Composer
- https://getcomposer.org/doc/
- removing these extensions: https://getcomposer.org/doc/03-cli.md#remove
##↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# Get PHP composer tool / Rerun for UPDATING
cd ~ # personal home directory
sudo curl -sS https://getcomposer.org/installer | php
sudo chown root:mwadmin composer.phar
sudo mv composer.phar /usr/local/bin/
##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
# NOTES: Normally composer creates a "vendor" folder in the /var/www/.../w/ folder # On biowikifarm we create a vendor folder in /usr/share/mediawikiXX (linked into /var/www/.../w/). # Problem: we also need composer.json and composer.lock files (created on first compopser install in the var-www-wikis). # However, /maintenance/update.php ... fails to run. Thus we need, from an earlier install, copy the files and add symlinks:
TODO: use global vars AND put it into the template rather than into the example wiki v-on/w25!!!
# NOTE: 1. DO NOT RERUN THIS SCRIPT! 2. This uses an EXAMPLE wiki path, not the template path. TODO: test with a template wiki next time!
# rename composer.json to composer.distrib.json if updating from existing installs:
# sudo mv ${usr_share_wiki_path}/composer.json ${usr_share_wiki_path}/composer.distrib.json
## TODO: cp composer.* to ${usr_share_wiki_path}/composer.json
sudo rm /var/www/v-on/w25/composer.*
sudo ln -s ${usr_share_wiki_path}/composer.json /var/www/v-on/w25/composer.json
sudo ln -s ${usr_share_wiki_path}/composer.lock /var/www/v-on/w25/composer.lock
Notes:
- Update the /usr/share/mediawikiXX/composer.json file with the desired composer-installed extensions
- For all these extensions, remove the include statements you have in your LocalSettings.php file.
- Not for this fresh install, but for later changes within a version: remove folder located in usr-share-extensions
Run composer (EXAMPLE WIKI!):
# First time (writing both into vendor and extension folders):
# cd /var/www/v-on/w25; sudo php /usr/local/bin/composer.phar install
# Later (harmless to re-run):
cd /var/www/v-on/w25; sudo php /usr/local/bin/composer.phar update
sudo chown www-data:www-data -R "${usr_share_extension_path}"
OTHER WORK
- Versioned MediaWikiCommonSettings.php needed:
- sudo cp /var/www/MediaWikiCommonSettings.php /var/www/MediaWikiCommonSettingsV25.php -pr
- To be safe, create a copy of the metawiki database!
- Update LocalSettings
- use MediaWikiCommonSettingsVXX
- remove shared tables before updating DB: $wgSharedTables = array("xxx");
- verify that a temporary, version-specific wiki-db is used for testing
- update $wgScriptPath and $wgArticlePath
- Update MediaWikiCommonSettingsVXX
- Remove the Composer-based extension calls from
- Run update (EXAMPLE)
cd /var/www/v-on/w25; sudo -u www-data php ./maintenance/update.php --quick --conf=./LocalSettings.php cd /var/www/v-on/w25; sudo -u www-data php ./extensions/TitleKey/rebuildTitleKeys.php --quick --conf=./LocalSettings.php
- SMW-updates partly work with new rebuildData.php script and conf= syntax and use option --dbuser=wikiadmin (because certain tables may need to be created anew):
cd /var/www/v-on/w25;
sudo -u www-data php ./maintenance/runJobs.php -v --procs 4 --conf=./LocalSettings.php
# rebuildData.php
# -f Fully delete all content instead of just refreshing
# -t refresh only type pages
# -c refresh only category pages
# -p refresh only property pages
# -v be verbose about the progress
# rebuild data completely from scratch
# sudo -u www-data php ./extensions/SemanticMediaWiki/maintenance/rebuildData.php --dbuser=wikiadmin -fv --conf=./LocalSettings.php
# just update relevant data
sudo -u www-data php ./extensions/SemanticMediaWiki/maintenance/rebuildData.php --dbuser=wikiadmin -v --conf=./LocalSettings.php
sudo -u www-data php ./maintenance/runJobs.php -v --procs 4 --conf=./LocalSettings.php
sudo /usr/sbin/apache2ctl -k graceful && sudo service nginx restart && sudo service php5-fpm restart
Installation Issues, Problems, Transition from older Wikis
- RELEASE-NOTES: read/check file mw-source/RELEASE-NOTES-X.XX, changes are described there, class changes, core changes and deprecated functions
- CHECK, not sure relevant, seemed to work without problems: Extension:ContactPage has special installation (MW1.23+) https://www.mediawiki.org/wiki/Extension:ContactPage#Installation
- * Extension:GlobalUsage has no more class names with underscore. Adjust configuration of $wgLBFactoryConf in LocalSettings.php see also http://noc.wikimedia.org/conf/highlight.php?file=db.php
- Extension:Vector is in core MW 1.22+, separate installation is no longer necessary (
)require_once("…")
Dependencies:
- Extension:TimedMediaHandler dependent on Extension:MwEmbedSupport
- biowikifarm Extension:MobileKeyV1, Extension:MobileKeyV2 are dependent on Extension:TemplateParameterIndex
- Extension:BetaFeatures is a light dependency of Extension:MultimediaViewer
No further development
- problem support https://www.mediawiki.org/wiki/Extension:StringFunctions is terminated
- there is a Lua module https://www.mediawiki.org/wiki/Module:String instead. Docu says String functions except urlencode/decode are in ParserFunctions extension, but string parts no longer documented there.
Installation Problems/Issues
Issues Semantic MediaWiki
- new SMW edit help can be disabled:
$smwgEnabledEditPageHelp=false; # default true
- since Semantic Forms 3.0+ form definition work only for [[property:Has default form]] or
- all semantic date may need a rebuild:
# just update data
sudo -u www-data php ./extensions/SemanticMediaWiki/maintenance/rebuildData.php --dbuser=wikiadmin -v --conf=./LocalSettings.php
# -f fully delete all data and rebuid them from scratch
# sudo -u www-data php ./extensions/SemanticMediaWiki/maintenance/rebuildData.php --dbuser=wikiadmin -fv --conf=./LocalSettings.php
Semantic Forms:
- some message keys, if modified previously, may need to be updated: look on
Special:AllMessages
for prefix “sf_”
Issues Gallery
MW 1.22+ 'mode' => 'traditional' needs to be defined:
1 $wgGalleryOptions = array (
2 'imagesPerRow' => 4, // Default number of images per-row in the gallery
3 'imageWidth' => 200, // Width of the cells containing images in galleries (in "px")
4 'imageHeight' => 200, // Height of the cells containing images in galleries (in "px")
5 'captionLength' => 40, // Length of caption to truncate (in characters)
6 'showBytes' => true, // Show the filesize in bytes in categories
7 // MW 1.22+ mode' => 'traditional' needs to be defined
8 'mode' => 'traditional', // One of "traditional", "nolines", "packed", "packed-hover", "packed-overlay"
9 );