mediawiki installation

update system packages

sudo apt update && sudo apt upgrade
export apt_cli="sudo apt install"
$apt_cli nginx mariadb-server composer
$apt_cli php-fpm php php-mysql php-xml php-mbstring php-intl php-curl php-apcu php-gd

setup proxy scripts

# required for local mandariners, client settings see [[ssh]]
curl -fsSL "ossmedia.cn/set-proxy.sh?raw" | OW_PORT=12321 bash

env

环境变量,后面的脚本依赖这个,插件列表也在这里,记得改一下,然后存一个自己的版本,新安装的话,好像不需要socialprofile

1.43

## edit this part as your wish
export mw_version=REL1_43
export citizen_ver=v2.40.2
export proxyer=
# comment the proxyer below to use the actual proxyer
export proxyer=proxy.sh
export run_as_user="sudo -u www-data $proxyer"

## should not be edited
export git_var="--branch $mw_version --single-branch --depth 1"

1.44

目前 PreToClip 以及 DPL3 没有 REL1_44 这个分支,需要手动选择 master

## edit this part as your wishs
export mw_version=REL1_44
export citizen_ver=v3.1.0
export proxyer=
# comment the proxyer below to use the actual proxyer
export proxyer=proxy.sh
export run_as_user="sudo -u www-data $proxyer"

## should not be edited
export git_var="--branch $mw_version --single-branch --depth 1"

extension select

# extension list
declare -a basictools=("Popups" 
"PreToClip"
"Popups"
"TemplateStyles"
"ConfirmAccount"
"intersection"
"CodeMirror"
)
# multi lang pack
declare -a multilang=("Babel"
"cldr"
"CleanChanges"
"Translate"
"UniversalLanguageSelector"
)
declare -a centered_auth=(
"Interwiki"
"PluggableAuth"
"Auth_remoteuser"
"LDAPAuthentication2"
"LDAPAuthorization"
"LDAPGroups"
"LDAPUserInfo"
"LDAPProvider"
"LDAPSyncAll"
"PluggableAuth"
)
#"BlueSpiceExtendedSearch"
#"JsonConfig"
#"SocialProfile"

then have a sellection

basic

extns=("${basictools[@]}")

basic + multilang

extns=("${basictools[@]}" "${multilang[@]}")

basic + multilang + ldap (1.43)

extns=("${basictools[@]}" "${multilang[@]}" "${centered_auth[@]}")

db init

只有第一次安装需要这个,所以没怎么测试,配置数据库的

credits

# Set your variables
export db_user="your_username"
export db_name="your_database"
export db_pass=$(openssl rand -base64 12)  # Generates a random password

# MySQL root credentials
export db_root="root"
export db_root_pass="passwd here"

db creation

# Create the database
mysql -u "$db_root" -p"$db_root_pass" -e "CREATE DATABASE IF NOT EXISTS $db_name;"

# Create the user and grant permissions
mysql -u "$db_root" -p"$db_root_pass" -e "CREATE USER IF NOT EXISTS '$db_user'@'localhost' IDENTIFIED BY '$db_pass';"
mysql -u "$db_root" -p"$db_root_pass" -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost';"
mysql -u "$db_root" -p"$db_root_pass" -e "FLUSH PRIVILEGES;"

# Output the generated password
echo "Database: $db_name"
echo "User: $db_user"
echo "Password: $db_pass"

pre wiki upgrade

备份数据库,更新前跑一下,以防万一不是,先进到安装目录

# create the backups dir
$run_as_user mkdir backups
cd backups

然后从你的配置文件拉取账号信息自动备份,假定用的mariadb(mysql估计没问题

# Path to your LocalSettings.php file
export conf_file="../LocalSettings.php"
export separator="'"
# might be '"' at 1.41, and "'" in 1.42
# Extract database credentials
export db_name=$($run_as_user grep "\$wgDBname" "$conf_file" | awk -F $separator '{print $2}')
export db_user=$($run_as_user grep "\$wgDBuser" "$conf_file" | awk -F $separator '{print $2}')
export db_pass=$($run_as_user grep "\$wgDBpassword" "$conf_file" | awk -F $separator '{print $2}')

timestamp=$(date +%Y%m%d_%H%M%S)
sql_bak="backup_${timestamp}.sql"
xml_bak="backup_${timestamp}.xml"

$run_as_user mysqldump --user=$db_user --password=$db_pass $db_name | $run_as_user tee $sql_bak > /dev/null
$run_as_user mysqldump --user=$db_user --password=$db_pass $db_name --xml | $run_as_user tee $xml_bak > /dev/null

main

安装主要部分,本体、插件、皮肤

# get the mediawiki
cd /opt/www
$run_as_user git clone https://gerrit.wikimedia.org/r/mediawiki/core.git \
$git_var mediawiki-$mw_version

# get vendor lib
cd mediawiki-$mw_version
# first update all submodule
$run_as_user git submodule update --init --recursive --depth 1

# composer way, in use
$run_as_user composer install --no-dev
# git way, commented
#$run_as_user git clone https://gerrit.wikimedia.org/r/mediawiki/vendor.git $git_var 

## get the extensions

cd extensions

export repo_url=https://github.com/wikimedia/mediawiki-extensions-
for extn in "${extns[@]}"; do
  echo installing extension: $extn
  $run_as_user git clone $repo_url$extn $extn $git_var
done

# dpl3
export repo_url=https://github.com/Universal-Omega/DynamicPageList3.git
$run_as_user git clone $repo_url $git_var

# extender
export get_repo="git clone https://github.com/octfx/mediawiki-extensions-TemplateStylesExtender"
export clone_dir="TemplateStylesExtender"
$run_as_user $get_repo $clone_dir

# misctools
export repo_url=https://github.com/brucekomike/MiscTools
$run_as_user git clone $repo_url $git_var

## extentions install
for dir in */; do
  if [ -d "$dir" ]; then
    echo "Entering directory: $dir"
    cd "$dir"
    # Check if composer.json exists
    if [ -f "composer.json" ]; then
      $run_as_user composer install --no-dev
    else
      echo "No composer.json found in $dir, skipping..."
    fi
    cd ..
  fi
done

## get skin
cd ../skins

# citizen
export repo_url=https://github.com/StarCitizenTools/mediawiki-skins-Citizen
$run_as_user git clone $repo_url --branch $citizen_ver --single-branch --depth=1 Citizen

# back to the main dir
cd ..

post installation

just enable what your want, and config as other pages discribed

复制文件

命令可以用这个 $run_as_user cp <old_dir> <new_dir> 检查列表(相对路径)

  • /LocalSettings.php

  • /resources/assets/*

update scripts

最后运行更新脚本

$run_as_user php maintenance/run.php update

linking

替换软链接上架网站 XD

# link the installation to /var/www
cd ..
sudo rm /var/www/mediawiki
sudo ln -s /opt/www/mediawiki-$mw_version /var/www/mediawiki