MediaWiki-Vagrant

From mediawiki.org
This page is a translated version of the page MediaWiki-Vagrant and the translation is 100% complete.
Zobrazení jak asi funkuje Vagrant
Zobrazení jak asi funkuje Vagrant
Logo MediaWiki Vagrant
Logo MediaWiki Vagrant
Bryan Davis v rozhovoru na Wikimanii vysvětluje, co to MediaWiki Vagrant vlastně je
Prezentace TechTalk o MediaWiki-Vagrantu od Bryana Davise a Dana Duvalla
Prezentace z TechTalku o MediaWiki-Vagrant od Bryana Davise a Dana Duvalla

MediaWiki-Vagrant je přenosné vývojové prostředí MediaWiki. Skládá se ze sady konfiguračních skriptů pro programy Vagrant a virtuální schránky, které automatizují vytvoření virtuálního počítače (v dalším textu VM (virtual machine)), na kterém běží MediaWiki. Konfigurace je zaměřena především na snadný vývoj než na bezpečnost. Z tohoto důvodu nedoporučujeme používat MediaWiki-Vagrant jako veřejně přístupnou wiki!

Virtuální nástroj (dále v textu jako "VM"), který MediaWiki-Vagrant vytváří, usnadňuje získávání informací, úpravy a vylepšování kódu MediaWiki. Ve výchozím nastavení se zobrazují užitečné informace o ladění a různé vývojářské nástroje speciálně nastavené pro kontrolu a spojení s kódem MediaWiki, včetně výkonného debuggeru a interaktivního tlumočníka. Je nejlepší ze všech, protože konfigurace je automatizovaná a obsažená ve virtuálním prostředí. Chyby lze snadno vrátit zpět.

Systémové požadavky

CPU
64bitový procesor x86
OS
Linux, macOS nebo Windows
Paměť
Celkem 4 GB RAM ve vašem systému, nejlépe 8 GB případně i více, aby bylo možné spustit hostitelský operační systém i VM. Nepokoušejte se spustit systém s pouhými 2 GB RAM, protože to nakonec vždy selže.
Disk
U složitých instalací musíte mít na primární jednotce 10–12 GB volného místa (/home partition pro Linux, C: drive pro Windows). Zejména mějte na paměti, že obsahy disků VM budou ve výchozím nastavení uloženy ve vašem domovském adresáři.
Síť
Aktivní síťové připojení s dostatečnou šířkou pásma pro stahování aktualizací systému Debian Linux a zdrojového kódu MediaWiki.
Čas pro nastavení
20 minut až 2 hodiny, v závislosti na podmínkách a případných potížích.

Rychlý start

(Pokud instalujete MediaWiki-Vagrant z distribuce USB, místo prvních pěti kroků postupujte podle kroků v README.)

  1. Stáhněte si Git
  2. (Pouze Linux) Nainstalujte NFS, pokud ještě není nainstalován. V Ubuntu použijte sudo apt-get install nfs-kernel-server. Fedora obvykle přichází s nainstalovaným NFS. Pokud není spuštěn sudo dnf install nfs-utils.
  3. Stáhněte si VirtualBox[1]
  4. Získejte nejnovější Vagrant[2]
  5. Získejte kód a vytvořte svůj nástroj:
    $ git clone --recursive https://gerrit.wikimedia.org/r/mediawiki/vagrant
    
    (Tím se spustí klonování do vašeho domovského adresáře.)
    $ cd vagrant
    $ ./setup.sh
    
    Až budete vyzváni, zadejte své uživatelské jméno Gerrit (doporučeno) nebo stačí stisknout ↵ Enter.
    Pokud chcete místo nejnovější verze použít jinou větev vydání, můžete ji nyní zadat pomocí vagrant hiera mediawiki::branch REL1_27
    $ vagrant up
    
  6. Povolte další funkce MediaWiki, např.:
    $ vagrant roles list
    $ vagrant roles enable monobook --provision
    
  7. Po dokončení konfigurace počítače Vagrant, zadejte příkaz vagrant open nebo přejděte na http://dev.wiki.local.wmftest.net:8080/ a vyhledejte instanci MediaWiki. Můžete se přihlásit jako uživatel Admin s heslem vagrant.
vagrant up selže, pokud je použit výchozí poskytovatel VirtualBox a počet virtuálních CPU na hostiteli přesahuje 32. Pomocí vagrant config vagrant_cores <number of cores> (počet jader) přiřaďte VM méně než 32 jader.
Dokončení instalace prvního vagrant up může trvat déle než hodinu.

Pokud používáte Windows

Získejte Git pro Windows a spusťte příkazy git v jeho schránce Git Bash. Namísto setup.sh spusťte setup.bat ze schránky cmd.exe.

Pokud používáte prostředí kompatibilní s WSL Linux na Windows 10: spusťte příkazy s vagrant.exe namísto vagrant. Spusťte vagrant.exe config --required namísto ./setup.bat, který v bash schránce Linuxu nefunguje.

Účet, ve kterém běží Vagrant, bude pravděpodobně potřebovat oprávnění "Vytvořit symbolické odkazy" (Create Symbolic Links) (snadný způsob, jak toho dosáhnout, je být spuštěn jako správce).

MediaWiki out-of-the-box will likely run slow (page loads take 5+ seconds). This is because the virtual machine uses a shared file system that retrieves the files very slowly. Enabling NFS on Windows by installing the Vagrant WinNFSd plugin with vagrant plugin install vagrant-winnfsd, enabling NFS shares with vagrant config nfs_shares true, and restarting the machine with vagrant reload should significantly speed up page load times. You should make sure that the plugin is installed every time you run the machine as well.[3]

Odstraňování potíží při spouštění

Vaše problémy nejsou níže zodpovězeny? Využijte IRC, konkrétně kanál #wikimedia-tech připojit se.

  • Nefunkční instalace např.: "Nebyla nalezena žádná wiki..."(No wiki found...) můžete opravit spuštěním vagrant destroy; vagrant up, který obnoví virtuální počítač bez opakování časově nejnáročnějších části instalačního procesu.

Jakýkoli počítač

  • Zkuste nainstalovat verze VirtualBox a Vagrant, které vaše distribuce Linuxu poskytuje. Pokud používáte nejnovější Debian nebo Ubuntu, zkuste sudo apt-get install virtualbox vagrant a nainstalujte balíčky pro VirtualBox a Vagrant.
  • Pokud se vám objeví chyby z vagrant up, nainstalujte nejnovější verze VirtualBox a Vagrant.
  • Při zobrazení chybové zprávy jako je "Couldn't open file $CLONED_REPOSITORY/trusty-cloud", zkuste následující příkaz: vagrant up --provider=virtualbox
  • Pokud narazíte na nějaké puppet chyby, možná budete muset iniciovat puppet submoduly. V adresáři s Vagrantem spusťte příkaz git submodule update --init.
    • Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class
  • Pomocí odkazu http://127.0.0.1:8080/info.php zkontrolujte, zda je Apache/PHP funkční.

Jestliže budete chtít porovnat výstup prvního spuštění aplikace vagrant up na vašem terminálu s tímto vzorkem. Počáteční nastavení může trvat dlouho! Jestli se zdá, že někde "visí", ale nedochází k žádným chybám, chvíli počkejte.

  • Když se zobrazí upozornění, že je verze programu VirtualBox Guest Additions nesprávná, můžete zkusit nainstalovat plugin vagrant-vbguest, který se automaticky aktualizuje.
  • Párování Vagrantu s vaším VM se zřídkakdy rozbije. Toto vlákno popisuje některé způsoby, jak toto obejít (např. připojit starý pevný disk VM k novému profilu)
  • Ujistěte se, že úložiště vagrant/mediawiki je aktuální:
$ cd vagrant/mediawiki
$ git pull
  • Ujistěte se, že jste povolili virtualizaci v systému BIOS. Někdy je to v nastavení zabezpečení.
  • Ujistěte se, že vaše nastavení kódování jazyka je UTF-8. Pokud se zobrazí "invalid byte sequence in US-ASCII" (neplatná sekvence bajtů v US-ASCII), zkuste (znovu) nastavit proměnné prostředí LANG a LC_ALL na něco vhodnějšího. Například:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
Pokud jste smazali nějaké staré virtuální počítače, zobrazí se chybová zpráva jako "...path contains non-directory or non-existent components..." (...cesta obsahuje neadresářové nebo neexistující komponenty...) a vagrant up se nedokončí. Pokud používáte NFS (v hostitelském operačním systému mimo Windows), měli byste být schopni tento problém vyřešit odebráním exportů /etc/exports: zadejte sudo rm -i /etc/exports Vagrant znovu při příštím spuštění vagrant up vytvoří soubor /etc/exports.
MediaWiki-Vagrant se nespustí na hostiteli, který nepodporuje VT-X, protože určuje 64bitového hosta (virtuální počítač). MediaWiki-Vagrant musí běžet na 64bitovém virtuálním počitači, částečně také proto, že používá deb debety z produkce WMF, které jsou vytvořeny pouze pro architekturu amd64.

Specifické pro Windows

  • Pokud používáte Windows a zobrazí se "hostující stroj vstoupil do neplatného stavu" (guest machine entered an invalid state) - "poweroff", zkuste stáhnout sestavení VirtualBox 4.3.15 (je známý problém s 4.3.14 na Windows). Pokud to nepomůže, ujistěte se, že v systému BIOS povolíte technologii hardwarové virtualizace (VT-x nebo AMD-V). Hardwarová virtualizace je nutná. Nejedná se o volitelné vylepšení výkonu. (Některé notebooky vyžadují, abyste na 30 sekund odpojili napájecí kabel a baterii [1])
  • VirtualBox není kompatibilní s Hyper-V společnosti Microsoft. Pokud máte povolenou technologii Hyper-V (což může být výchozí nastavení při nainstalované aplikaci Visual Studio) a zobrazí se při spouštění virtuálního počítače ve VirtualBoxu výše uvedené chyby. Máte tři možnosti:
    • V příkazovém řádku spusťte bcdedit/set hypervisorlaunchtype off. Tím vypnete Hyper-V a restartujete počítač. Chcete-li Hyper-V opět zapnout, přepněte jej zpět z off na auto.
    • Zakažte Hyper-V pomocí ovládacího panelu 'Přidat nebo odebrat funkce systému Window' (Add/Remove Windows Features) a restartujte počítač. Virtuální modul bude fungovat, ale znemožní vám používat jakékoli virtuální počítače Hyper-V, například emulátory Windows Phone.
    • Nebo pro Vagrant použijte systém Hyper-V namísto VirtualBoxu. Toto řešení může být nestabilní.

Specifické pro Mac

  • Chyby NFS Abyste se vyhnuli chybám NFS, během instalace, zajistěte aby firewall akceptoval připojení: Apple > System Preferences > Security & Privacy > Firewall > Firewall Options (Apple> předvolby systému> zabezpečení a soukromí > Firewall > Možnosti brány Firewall). Budete muset, pro akceptování následujících: netbiosd, nfsd, rpc.lockd, rpc.rquotad, rpcbind, VBoxHeadless, zrušit zaškrtnutí políčka "Block all incoming connections" (blokovat všechna příchozí připojení). A pravděpodobně také zrušit zaškrtnutí políčka "Enable stealth mode“ (povolit tajný režim). Během několika vagrant up budete možná muset restartovat počítač a změnit stav na "Allow incoming connections" (povolit příchozí připojení). Po instalaci, jakmile jsou pravidla brány firewall aktualizována, budete pravděpodobně muset znovu zkontrolovat "Block all incoming connections" (blokovaní všechna příchozí připojení) a "Enable stealth mode" (povolit tajný režim).
  • Alternativně můžete vypnout sdílení NFS pomocí vagrant config nfs_shares off.

Debian a Ubuntu

  • MediaWiki-Vagrant používá systém síťových souborů NFS ke sdílení některých složek s hostitelským (vaším) počítačem. Počítač musíte nastavit jako "server NFS", viz např. příkazy Ubuntu. Na Debianu bude fungovat sudo apt-get install nfs-kernel-server. Možná budete muset také nastavit modprobe nfsv3. Server NFS Debianu se nespustí bez nastavení v /etc/export. Pravděpodobně se to děje, pokud sudo rpcinfo -p nespustí služby "nfs". Pro odstranění tohoto problému bude stačit přidání domovského adresáře jako posledního řádku do /etc/export a poté /etc/init.d/nfs-kernel-server restart.
  • Sdílení NFS, které používá MediaWiki-Vagrant, nelze spouštět z šifrovaného adresáře. Což se může stát, pokud používáte Ubuntu a používáte šifrovaný domovský adresář. Chcete-li spustit MediaWiki-Vagrant, můžete buď:
    • Před spuštěním vagrant up přesuňtte adresář MediaWiki-Vagrant do nezašifrované složky (např. /opt).
    • Alternativně můžete vypnout sdílení NFS pomocí vagrant config nfs_shares off.
  • Zdá se, že nastavení NFS se občas zasekne (počáteční vagrant up visí na "Připojení sdílených složek NFS"). Restartování démona NFS na hostiteli pomáhá. (Podívejte se na stránku #5802.)
  • Pokud dochází k chybám při přesměrování portů, kdy jsou porty používány, budete možná muset otevřít VirtualBox, úplně odebrat virtuální počítač a akci opakovat.
  • vagrant up vám může hlásit, že "Spustitelný soubor 'bsdtar', který se Vagrant pokouší spustit, nebyl nalezen v proměnné PATH". Na Ubuntu to můžete opravit pomocí sudo apt install libarchive-tools.
  • Na Ubuntu s povoleným Secure Boot budete mít s instalací VirtualBoxu problém. Když spustíte /sbin/vboxconfig, váš stroj vám může hlásit nesmysly. Pokud ano, můžete situaci napravit signováním příslušného modulu jádra. Pokyny krok za krokem naleznete v tomto příspěvku askubuntu.

Fedora

  • Zobrazí-li se Vám po spuštění vagrant up hláška, že síť není k dispozici Network 10.11.12.13 is not available., deaktivujte SELinux pomocí sudo setenforce 0 nebo opravte nastavení SELinux.
  • Jestliže poskytovatel tohoto nástroje řízeného Vagrantem po spuštění vagrant roles enable mediawiki --provision hlásí, že ještě není připraven na SSH "The provider for this Vagrant-managed machine is reporting that it is not yet ready for SSH.", ujistěte se, že je správně nastaven poskytovatel, například prostřednictvím vagrant destroy a poté vagrant up --provider=virtualboxu
  • Objeví-li se hláška mount.nfs: mount to NFS server '10.11.12.13:download-directory/vagrant' failed: RPC Error: Unable to receive (mount.nfs: připojení k serveru NFS '10.11.12.13:download-directory/vagrant' se nezdařilo: Chyba RPC: Nelze přijmout), spusťte vagrant config nfs_shares.

Základní použití

Snímek obrazovky

Nástroj příkazového řádku vagrant na hostitelském počítači poskytuje několik základních příkazů pro ovládání virtuálního počítače. Již jste použili jeden: vagrant up zapínající virtuální počítač. Stejně jako většinu příkazů vagrant je spustíte z adresáře MediaWiki-Vagrant nebo některého z jeho podřízených adresářů. Při prvním spuštění načte Vagrant nastavení systému a nastaví potřebný software pro spuštění MediaWiki. Může to trvat 1 až 2 hodiny času procesoru a nástěnných hodin na širokopásmovém připojení. Ale pouze jednou. Při následujícím spuštění vagrant up, se jednoduše spustí již jenom počítač.

Vagrant ssh spustí interaktivní přihlašovací schránku na virtuálním počítači. Přihlašte se jako uživatel Vagrant. Root přístup je dostupný prostřednictvím sudo. Přístup je bez hesla. Virtuální počítač, zcela izolovaný v počítači, je nakonfigurován pro pohodlí, nikoli pro zabezpečení. Kdykoli narazíte na výzvu k zadání hesla, je to zpravidla heslo vagrant.

Po přihlášení byste měli vidět barevný banner MediaWiki a připomenutí několika užitečných příkazů.

Příkaz phpsh spustí interaktivní PHP interpreter s již načtenou kódovou základnou MediaWiki. Můžete zadat jakýkoli kód, stisknout 'enter' a kód bude okamžitě vyhodnocen. Pokud začnete řádek s '=', jeho vypočítaná hodnota bude zobrazena. Pro rychlou pomoc zadejte ? nebo help start (pomoc při spuštění). Zobrazí se Vám další pokyny.

Složka /vagrant odpovídá složce MediaWiki-Vagrant na hostitelském počítači a její obsah je sdílen. Kód MediaWiki je nainstalován v /vagrant/mediawiki. To vám umožní k úpravě kódu MediaWiki použít normální prostředí editoru na hostitelském počítači, který běží na Vašem virtuálním počítači.

Aktualizace

Pomocí vagrant git-update můžete aktualizovat svůj git repozitář, externí knihovny a databázová schémata. Příkaz odpovídá spuštění:

  1. git pull v adresáři core a všech adresářích rozšíření a zobrazení.
  2. composer update, zajišťuje, že jsou k dispozici nejnovější knihovny spravované Composerem.
  3. Spuštění skriptu update.php.

Měli byste také příležitostně (nebo když budete potřebovat novou funkci) aktualizovat samotnou aplikaci MediaWiki-Vagrant, což příkaz vagrant git-update nezahrnuje. Můžete to udělat spuštěním:

git pull

… V kořenovém adresáři MediaWiki-Vagrant. Aktualizace se projeví při spuštění příkazu:

vagrant provision

Příkaz můžete spustit okamžitě po spuštění git pull nebo kdykoliv později.

Varování Varování: Pokud aktualizujete z gitu ručně, možná budete také muset spustit composer update, ke stažení externí knihovny vyžadované MediaWiki. Ke zjištění, zda je potřeba spustit composer update, můžete použít skript checkComposerLockUpToDate.php.
Některé projekty mají některé NPM závislosti, které jsou často potřebné jen pro vývoj. Ty nejsou nainstalované Composerem. Tyto knihovny můžete identifikovat pomocí příkazu find -not \( -name node_modules -prune \) -name package.json a ručně je nainstalovat podle potřeby příkazem npm install ve všech adresářích, kde jsou potřebné.

Z virtuálního počítače se odhlásíte zadáním logout nebo stisknutím Ctrl+D. Nyní, když jste zpět ve standardním příkazovém řádku, můžete spustit vagrant halt pro vypnutí virtuálního nástroje a vagrant up pro jeho opětovné spuštění. vagrant destroy smaže soubory virtuálního nástroje. Tento příkaz je užitečný, pokud chcete svou instanci vrátit do původního stavu. (Abyste mohli zřídit novou instanci, budete muset zadat vagrant up.)

Používání rolí

MediaWiki-Vagrant standardně nastavuje základní instanci MediaWiki, ale dokáže také nakonfigurovat řadu doplňkového softwaru, včetně některých oblíbených rozšíření MediaWiki a jejich závislostí. Tyto volitelné softwarové balíčky jsou souhrnně známé jako 'role' a MediaWiki-Vagrant nabízí snadné a výkonné rozhraní příkazového řádku pro jejich správu.

$ vagrant roles list # Zobrazit seznam dostupných rolí. $ vagrant roles enable role # Zapněte pro tento nástroj roli. $ vagrant roles disable role # Vypněte roli tohoto nástroje. $ vagrant provision # Poté, co jste dokončili povolení nebo zakázání rolí, spusťte tento příkaz, aby se změna projevila.

Podívejte se na krátkou ukázku screencast demonstrující, jak používat role. Role obsahuje více informací o některých rolích.

Pokud přidáte mnoho rolí, budete asi muset zvětšit paměť dostupnou pro Vagrant VM. Zejména nastavení role "browsertests" zahrnuje kompilaci ffi ruby Gem, což je úkol vyčerpávající paměť. Pokud to bude nutné, uvolněte paměť ve virtuálním počítači nebo zvyšte přidělenou paměť (bug 53864).

Pokud máte zájem o přidání rolí do MediaWiki-Vagrant, přečtěte si níže uvedenou část Autorské role.

Odstraňování konkrétních rolí

centralauth

Existují některé role, které vyžadují zvláštní pozornost. Role centralauth nespustí migrace db automaticky přes puppet a vyžaduje ruční spuštění. Pokud se při přidělování této role vyskytnou chyby, zkuste spustit tento skript za příponou a podívejte se na chyby, které z něj vyplynou:

mwscript extensions/CentralAuth/maintenance/migrateAccount.php --username 'Admin' --auto

Jakmile získáte konkrétnější chybu, budete pravděpodobně potřebovat vědět, kterou z těchto migrací musíte spustit:

extensions/CentralAuth/db_patches

wikidata

Jednoduché vagrantské role vagrant roles enable wikidata && vagrant provision (umožňující využívat wikidata jejichž poskytování Vagrantem by selhalo). Zde je kompletní sada příkazů, které zajistí, aby role Wikidata byla spuštěna a provozována.

$ vagrant up
$ vagrant git-update
$ vagrant ssh
$ sudo apt-get update && sudo apt-get upgrade
$ composer selfupdate --update-keys
$ composer config --global process-timeout 9600

Odhlašte se z Vagrantu a poté data můžete v pohodě spustit:

$ vagrant roles enable wikidata
$ vagrant provision

Upozorňujeme, že první příkaz může hlásit chybu, takže vypadá jako selhání. Pokud však provedete druhý příkaz, bude vše v pořádku.

Pak můžete svůj prohlížeč odkázat na http://wikidata.wiki.local.wmftest.net:8080/. Chcete-li vytvořit novou položku wikidata, načíst http://wikidata.wiki.local.wmftest.net:8080/wiki/Special:NewItem a vytvořit novou vlastnost, přejděte na http://wikidata.wiki.local.wmftest.net:8080/wiki/Special:NewProperty.

Jak importovat výpis z Wikidata

Příkaz Vagrant import-dump, kterým importujete soubor XML do MediaWiki, zpracovává pouze výchozí wiki (viz phab:T183274#3893785). Spusťte skript importDump.php v boxu Vagrant.

Zde je postup importu výpisů XML.

$ mkdir wikidata_dumps
$ cd wikidata_dumps
  • Stáhněte jakékoli pages-articles (stránky nebo články). Například:
$ wget https://dumps.wikimedia.org/wikidatawiki/latest/wikidatawiki-latest-pages-articles10.xml-p5264684p6341661.bz2
  • Povolte import entit Wikibase (viz phab:T72898#1588002). Připojte následující řádek v LocalSettings.php:
$wgWBRepoSettings[ 'allowEntityImport' ] = true;
  • Následující skript BASH vám pomůže monitorovat proces. Můžete jej vložit do souboru import_wikidata.sh. Zvýrazněný řádek vyvolá skutečný skript pro import:
#!/usr/bin/env bash

chunks=$(find wikidata_dumps -type f)
for chunk in $chunks
do
    now=$(date)
    echo "$now: started import of $chunk" >> wd_import.log
    echo "-------------------------------------------" >> wd_import.log
    bzcat $chunk | mwscript importDump.php --wiki=wikidatawiki --uploads --debug --report 10000 2>>wd_import.log
    now=$(date)
    echo "-------------------------------------------" >> wd_import.log
    echo "$now: completed import of $chunk" >> wd_import.log
    echo "===========================================" >> wd_import.log
done
  • Přihlaste se do pole Vagrant a spusťte skript. Zde by se měly zobrazovat ladící zprávy:
$ vagrant ssh
$ cd /vagrant
$ sudo chmod +x import_wikidata.sh
$ ./import_wikidata.sh
  • Můžete sledovat průběh protokolu mimo box Vagrant:
$ tail -f wd_import.log

Další návrhy

Základní kopie Local MediaWiki

Někdy můžete chtít začít od nuly. Odstraňte celý adresář vagrant nebo vyčistěte adresář vagrant/mediawiki. Chcete-li urychlit proces zajišťování vagrantu, zvažte zachování lokálního aktualizovaného klonu jádra MediaWiki, který zkopírujete do vagrant/mediawiki.

Například v případě, že klonujete repozitáře MediaWiki do ~/projects/mediawiki/:

# klonujte a uložte čistou kopii jádra MediaWiki do ~/projects/mediawiki/core
cd ~/projects/mediawiki/
git clone ssh://<your-gerrit-username>@gerrit.wikimedia.org:29418/mediawiki/core

# klonujte čistou kopii Vagrantu do ~/projects/mediawiki/vagrant
cd ~/projects/mediawiki
git clone ssh://<your-gerrit-username>@gerrit.wikimedia.org:29418/mediawiki/vagrant

# pokud neexistuje, vytvořte podadresář mediawiki
cd ~/projects/mediawiki/vagrant
mkdir ~/projects/mediawiki/vagrant/mediawiki

# zkopírujte čisté jádro MediaWiki do prázdného adresáře vagrant/mediawiki
cp -r ~/projects/mediawiki/core/ ~/projects/mediawiki/vagrant/mediawiki

Aktualizování klonovaného úložiště

Aktualizujte klonovaný repozitář tak často, jak jen je to možné, případně nutné.

cd ~/projects/mediawiki/core
git pull

cd ~/projects/mediawiki/vagrant
git pull
git submodule update --init --recursive

Nebo aktualizujte všechny klonované repozitáře:

vagrant git-update

Opětovné načtení Vagrantu

Pokud změníte konfiguraci (např. $Ram) a váš web VM případně MediaWiki zamrzne či zatuhne nebo se vyskytne jiný problém, může to vyřešit vagrant reload. Tím vašehp hosta restartujete. Některé úlohy také vyžadují opětovné načtení, ke kterému by mělo dojít automaticky.

Kdy povolit role

Role povolte pouze po úspěšném spuštění prvního vagrant up.

Všimněte si, že vagrant destroy neresetuje povolené role. Po spuštění vagrant destroy vypněte všechny role a poté spusťte vagrant up. Nyní můžete znovu povolit jakékoli role a spustit vagrant provision.

Vagrant za proxy

Pokud jste za proxy, Vagrant by mohl hlásit některé chyby. Nainstalujte vagrant-proxyconf. Je to plugin, který umožňuje vašemu virtuálnímu počítači používat určené proxy. Zde je rychlý průvodce nastavením. Podrobnou dokumentaci najdete na této stránce.

Nainstalujte plugin:

vagrant plugin install vagrant-proxyconf

Chcete-li nakonfigurovat nastavení proxy pro všechny části softwaru na všech virtuálních počítačích tuláků, přidejte následující řádky do svého $VAGRANT_HOME/Vagrantfile (výchozí ~/.vagrant.d/Vagrantfile).

Vagrant.configure("2") do |config|
  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.http     = "http://192.168.0.2:3128/"
    config.proxy.https    = "http://192.168.0.2:3128/"
    config.proxy.no_proxy = "localhost,127.0.0.1,.example.com"
  end
  # ... a další
end

Nahraďte adresy číslem IP a portem vašeho proxy serveru. Pomocí config.proxy.no_proxy vyjmenujte všechny weby případně domény, pro které byste mohli chtít obejít proxy. Například,

config.proxy.no_proxy = "localhost,127.0.0.1,.example.com,.someinternaldomain.com"

Nyní, když spustíte vagrant up, neměla by se objevit žádná varování.

Chcete-li plugin deaktivovat, nastavte config.proxy.enabled na false nebo prázdný řetězec (""). Můžete jej také zakázat pro konkrétní aplikace. Například,

config.proxy.enabled         # → všechny aplikace povoleny (výchozí)
config.proxy.enabled = true  # → všechny aplikace povoleny
config.proxy.enabled = { svn: false, docker: false }
                             # → konkrétní aplikace jsou zakázány
config.proxy.enabled = ""    # → všechny aplikace jsou deaktivovány
config.proxy.enabled = false # → všechny aplikace jsou deaktivovány

MediaWiki-Vagrant prep

Možná budete chtít zvážit použití shellového skriptu, například mw-vagrant-prep, k přípravě adresáře pro instalaci MediaWiki-Vagrant.

Ladění

Poskytování

Proces zřizování můžete ladit spuštěním

PUPPET_DEBUG=1 vagrant provision

PHP

PHP můžete ladit pomocí Xdebugu. Ladění v PHP se liší od ostatních ladění na straně klienta. Vaše IDE sleduje příchozí připojení a když přistoupíte k serveru pomocí prohlížeče, speciální hlavička dá pokyn PHP, aby se připojil k vašemu IDE. Další informace viz MediaWiki-Vagrant/Advanced usage#Ladění MediaWiki pomocí Xdebug a IDE ve vašem hostiteli.

Chrome

  • Pro uživatele prohlížeče Chrome byste měli získat XDebug Helper a volitelně Clear Cache, HTTP header a Mod Headers. Konfigurujte vymazání mezipaměti tak, aby se po vymazání automaticky znovu načítala, a nastavení klávesových zkratek (např. Ctrl+R pro vymazání a opětovné načtení, Ctrl+Shift+D pro zapnutí případně vypnutí XDebuggeru).

Firefox

  • Uživatelé Firefoxu by se měli podívat na jednoduchý Xdebug.
  • Nainstalujte a nakonfigurujte kompatibilní xdebug IDE na vašem počítači (Eclipse, PhpStorm, Emacs atd.).
  • V IDE začněte sledovat příchozí ladicí spojení.
  • V IDE stanovte bod zlomu na místě, které vás zajímá.
  • V prohlížeči povolte XDebug a přejděte k vagrantské instalaci (http://127.0.0.1:8080/...).

Soubory protokolu

Protokoly MediaWiki lze nalézt v /vagrant/logs. V /var/log/apache2/ jsou soubory protokolu pro Apache, ale zdá se, že na něm nejsou zapsány. Protokol dotazů MySQL lze získat vydáním SET GLOBAL general_log = 'ON'; v klientovi a poté prohlížením /var/lib/mysql/*.log.

Spouštění a ladění testů jednotek

Pro spuštění PHPUnit testů pro VŠECHNA rozšíření:

$ vagrant ssh
$ cd /vagrant/mediawiki
$ sudo -u www-data env "PHPUNIT_WIKI=wiki" php tests/phpunit/phpunit.php

Spuštění testů jednotky pro jedno rozšíření:

$ sudo -u www-data env "PHPUNIT_WIKI=wiki" "PHP_IDE_CONFIG=serverName=mwvagrant" "CIRRUS_REBUILD_FIXTURES=yes" "XDEBUG_CONFIG=idekey=netbeans-xdebug" php tests/phpunit/phpunit.php --stop-on-failure --stop-on-error extensions/ExtensionName/tests/phpunit/

Můžete připojit path/to/tests/to/run (cestu/k/testy/spuštění).

Některé testy mohou vyžadovat spuštění oprávněným uživatelem pro vytvoření souborů uzamčení. Proto se tento příkaz spustí jako "user" (uživatel) www-data, který zpracovává webové požadavky.

Informace o vytváření reportů o pokrytí vysvětluje Příručka:Testování jednotek PHP/pokrytí kódu#MediaWiki-Vagrant.

Ladění phpunit testů je trochu složitější. Tato metoda je trochu hackerská, ale lze ji použít, pokud se nezlepší možnosti vzdáleného interpretu (např. v phpStorm 8 EAP). Toto řešení umožňuje spustit unit testy MediaWiki přímo z prohlížeče.

  • Stáhněte soubor phpunit.phar do kořenového adresáře vagrant.
  • Vytvořte soubor php unittest.php v kořenovém adresáři mediawiki. Neukládejte tento soubor do repozitáře. Vložte do něj následující kód:
unittest.php 
<html><body><pre>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once 'includes/WebStart.php';
$_SERVER[ 'argv' ] = array(
	'--configuration', '/vagrant/mediawiki/tests/phpunit/suite.xml',
	'/vagrant/mediawiki/extensions/JsonConfig/tests/phpunit/JCObjContentTest.php',
);
require_once '/vagrant/mediawiki/tests/TestsAutoLoader.php';
require_once '/vagrant/phpunit.phar';
PHPUnit_TextUI_Command::main(false);


  • Ve výše uvedeném souboru změňte parametr argv na název souboru s testy.
  • Apache mapuje kořenový adresář MediaWiki na /w. Chcete-li tento soubor spustit, přejděte na http://127.0.0.1:8080/w/unittest.php.
  • Pro připojení debuggeru postupujte podle pokynů #Debugging.

Pouštění browser testů

Podívejte se na stránku Manual:JavaScript unit testing .

Tento odkaz ukazuje na zastaralou dokumentaci. Prosíme o aktualizaci někoho, kdo ví více o testování MediaWiki: Zajištění kvality/Testování prohlížeče/Spouštění testů#Spouštění testů prohlížeče VisualEditor přes Vagrant

Potlačení odevzdání

Pokud pro vývoj používáte MediaWiki-Vagrant, pravděpodobně budete chtít poslat nějaká hlášení do jádra MediaWiki nebo úložiště rozšíření pomocí git review. Ve výchozím nastavení všechny dálkové ovladače odkazují na URL https://. Chcete-li se vyhnout tomu, aby toto bylo případ od případu potlačeno, spusťte:

$ git config --global url."ssh://<username>@gerrit.wikimedia.org:29418/".insteadOf "https://gerrit.wikimedia.org/r/"

Musíte také mít nastaveny své ssh klíče v ~/.ssh.

Gerrit

Chcete-li odeslat změny, přejděte do složky rozšíření pomocí cd. Poté postupujte podle pokynů pro odeslání opravy přes gerrit.

Odstraňování problémů

Zkontrolujte verzi a nastavení PHP
http://127.0.0.1:8080/info.php
Upravujete LocalSettings.php?
Nejprve se ujistěte, že neexistuje žádná úloha (vagrant list-roles), která již dělá to, co potřebujete. Pokud ne, vytvořte soubor v adresáři settings.d/. Viz README a příklad souboru 00-debug.php.
Aktualizujete kód MediaWiki?
Nejjednodušší je použít vagrant git-update od hostitele. Nebo, chcete-li aktualizovat kód bez závislostí, můžete použít běžné příkazy git fetch, pull atd. V vagrant/mediawiki a vagrant/mediawiki/extensions/SomeExtension adresáře. Tyto příkazy můžete spouštět na virtuálním počítači, ale přístup k souborům bude na hostitelském počítači rychlejší. MediaWiki-Vagrant stahuje kód z hlavního serveru git, když jste původně nastavili nebo přidali úlohu, ale poté automaticky neaktualizuje kód.
Spouštíte překladač MediaWiki PHP
ssh pro vagrant a spusťte mwscript eval.php. Možná jej budete muset spustit pomocí sudo
Spouštíte interpretátor SQL MediaWiki
ssh pro vagrant a spuštění mwscript sql.php. Možná jej budete muset spustit pomocí sudo
Aktualizujete softwarové balíčky virtuálních strojů?
vagrant provision neaktualizuje systémové balíčky ve virtuálním počítači. Když se spojíte s vagrantem ssh, přihlašovací zpráva vás informuje, že:
Balíčky NN lze aktualizovat.
Aktualizací NN jsou aktualizace zabezpečení.

Ve vagrant ssh:
* Chcete-li aktualizovat všechny balíčky, zadejte sudo apt-get update && sudo apt-get upgrade
* pro automatickou instalaci bezpečnostních (a dalších) upgradů, podobně jako v případě cloudových VPS, zadejte sudo unattended-upgrade
* pro aktualizaci na stejné balíčky, které jsou na produkčních serverech WMF ... TODO
Přizpůsobujete Vagrant
Nikdy byste neměli měnit Vagrantfile přímo. Existuje několik aspektů, které můžete přizpůsobit:
  • Základní nastavení (uživatel git, porty, RAM, IP, přeposílání portů) lze upravit pomocí souboru .settings.yaml. Pokyny viz vagrant config --help a vagrant forward-port --help. Můžete tedy například spustit vagrant forward-port 1234 80 a povolit předávání portů z hostitele: 1234 na hosta:80.
  • Po načtení souboru Vagrantfile proveďte další kroky vytvořením souboru s názvem Vagrantfile-extra.rb a jeho umístěním do stejné složky jako Vagrantfile - bude automaticky načten. V případě konfliktu nahradí hodnoty v souboru 'extra' hodnoty v tomto souboru. Viz příklad v adresáři support/directory.
Přidáváte vlastní puppet kód?
To je ideální, pokud chcete pracovat na svém vlastním webu MediaWiki místně a nechat MediaWiki-Vagrant nainstalovat vaše závislosti za vás. Je ideální, pokud máte vlastní rozdělení. Existuje rozdíl mezi rolí a tímto případem použití. Role jsou určeny k instalaci v libovolném pořadí a bez přerušení. Pokud vaše rozdělení potřebuje různé hovory a dostane se do potíží s rolemi, vytvořte si vlastní třídu a zvolte, co potřebujete, včetně rolí.
Chcete-li, vložte svůj vlastní puppet kód do puppet/modules/local/manifests/myown.pp s vaší vlastní třídou, například:
class local::myown {
    include ::role::svg
}

Chcete-li použít svou třídu, přidejte ji do klíče "třídy" (classes) v souboru puppet/hieradata/local.yaml. Soubor, pokud neexistuje, můžete vytvořit.

classes:
  - local::myown

Poté spusťte vagrant provision a udělejte změnu prostřednictvím systému Puppet.

Aktualizujete MediaWiki-Vagrant sám?
(Například pro použití nových rolí.) V terminálu přejděte do hostitelského počítače do adresáře vagrant a zadejte příkaz git, například git pull --ff-only. Obvykle budete chtít po aktualizaci spustit vagrant, abyste na svém virtuálním nástroji použili všechny nové puppet změny.
Spouštíte GUI aplikace na virtuálním nástroji?
Pokud máte nainstalovaný X server, SSH do virtuálního počítače pomocí ssh -- -X pro povolení X forwardingu. (Uživatelé Mac by měli aktualizovat na nejnovější verzi XQuartz.)
Alternativně můžete spustit virtuální nástroj v režimu GUI, což vám umožní komunikovat s VM, jako by měl fyzický displej. Chcete-li povolit režim GUI, vytvořte ve složce kořenového úložiště soubor s názvem Vagrantfile-extra.rb, jehož obsah je:
Vagrant.configure('2') do |config|
    config.vm.provider :virtualbox do |vb|
        vb.gui = true
    end
end
Uložte soubor a spusťte vagrant halt následovaný vagrant up. Displej virtuálního nástroje se objeví v okně na ploše.
Upravujete zdroje přidělené VM?
Pokud chcete VM přidělit více či méně CPU / RAM, pokyny najdete v vagrant config --help.

Alternativně to můžete udělat vytvořením souboru Vagrantfile-extra.rb (příklad viz podpora / pro příklad):

Vagrant.configure('2') do |config|
    config.vm.provider :virtualbox do |vb|
        # See http://www.virtualbox.org/manual/ch08.html for additional options.
        vb.customize ['modifyvm', :id, '--memory', '768']
        vb.customize ['modifyvm', :id, '--cpus', '2']
    end
end
Měníte editor používaný pro zprávy git commit?
git config --global core.editor "vim"
Nastavujete vlastní název hostitele?
Přejděte na Horizon, vyberte Web Proxies a zadejte název hostitele DNS, zadejte <hostname>

Prohlédněte si svou novou wiki na "http://<hostname>/wiki/"

Nastavujete vlastní název hostitele, aby místo na domovskou stránku wiki ukazoval na domovskou stránku mého vanrant?
Vytvořte soubor local.yaml v adresáři /vagrant/puppet/hieradata. V něm přidejte:
<rolename>::vhost_name:<hostname>
role::mediawiki::hostname: localhost

Spusťte vagrant provision.

Provozujete pobočku MediaWiki jinou než master?
V klíči puppet/hieradata/local.yaml nastavte klíč "mediawiki::branch". Soubor, pokud neexistuje, můžete vytvořit.
mediawiki::branch: "wmf/1.24/wmf18"
Změnu je třeba provést PŘED prvním spuštěním vagrant up. Pokud se rozhodnete, že to chcete udělat později, proveďte změnu, zrušte svůj současný virtuální počítač pomocí vagrant destroy -f, odstraňte stávající checkout na Mediawiki a nakonec vytvořte nový virtuální počítač spuštěním vagrant up.
Vagrant je navržen tak, aby fungoval s hlavní větví! Nemusí fungovat dokonale nebo vůbec se staršími verzemi jádra a nebo rozšířeními [4].
Pro vydání MediaWiki 1.35 vyžaduje určité úpravy, aby se upravily požadavky na verzi PHP, které aktuálně nejsou splněny. Pokyny najdete na stránce Topic:W05qhsn58ztktod8.

Pokročilá využití

Nastavení MediaWiki

Jako alternativu ke správě všech nastavení MediaWiki v jediném velkém souboru LocalSettings.php zvažte seskupení konfigurací podle komponenty nebo tématu a vytvoření samostatného souboru PHP v settings.d/ pro každou skupinu. Díky tomu je docela snadné udržovat vaše nastavení uspořádané, dočasně deaktivovat konkrétní konfigurace a sdílet nastavení s ostatními.

MediaWiki automaticky načte jakékoli soubory PHP v settings.d/ v lexikálním pořadí. Pořadí, ve kterém jsou vaše konfigurace nastaveny, můžete lépe ovládat osvojením si zvyku přidávat ke každému názvu souboru dvoumístnou předponu.

Například:

    settings.d/
    ├── 10-RunFirst.php
    ├── 20-SomeExtension.php
    └── 99-RunLast.php

Mějte na paměti, že soubory nastavení v settings.d/puppet-managed jsou automaticky vytvořeny a zrušeny podle vaší konfigurace Puppet. Nenastavujte zde svá vlastní nastavení, protože Puppet je smaže nebo přepíše. Místo toho si ponechejte soubory vlastních nastavení v settings.d/.

Vagrantské příznaky

Příkaz vagrant config --list zobrazí seznam všech aktuálních vagrantských označení.

Po počátečním ./setup.sh můžete v adresáři vagrant nastavit vagrant flags, které se zobrazí v seznamu konfigurací, např. vagrant config nfs_shares no

Fronta úloh

V případě, že testujete něco, co potřebuje rozbít frontu úloh, budete možná muset zvýšit počet běžících úloh. V současné době to není dostupné prostřednictvím LocalSettings.php, ale musí to být nastaveno v konfiguračním souboru pro spouštěče úloh.

  1. Otevřete puppet/modules/mediawiki/templates/jobrunner.json.erb.
  2. Změňte hodnotu klíče 'runners' z 1 na požadovanou hodnotu (řekněme 4).
  3. Opětovné spusťte s vagrant --provision.
  4. Pozor! Bude se to lišit od git masteru ve vašem kódu.

Více najdete na stránce instrukce pro úpravu počtu jader CPU (velmi doporučeno pro úlohy vázané na CPU, jako je například video transkódování).

Další úložný prostor

Ve výchozím nastavení je v kořenovém oddílu v rámci VM relativně málo volného místa. Pokud plánujete otestovat nahrávání a zpracování velkých obrazových a video souborů, může to být nedostatečné.

Postup změny:

  • Vypněte VM (vagrant halt).
  • Otevřete VirtualBox Manager.
  • Vyberte VM a přejděte do Settings (nastavení).
    • V části Storage (úložiště) vyberte "Controller: SATA" (řadič:SATA) a klikněte na ikonu "Add hard disk" (přidat pevný disk).
    • Vyberte výchozí typ obrazu disku.
    • Pojmenujte disk "VagrantImageSpace" nebo podobně a dejte mu dostatek místa (řekněme 80 GB) – ve výchozím nastavení se soubor začne zmenšovat a rozšíří se podle skutečného využití, takže mu dejte tolik místa, kolik budete potřebovat.
    • Zavřete dialogová okna a restartujte VM (vagrant up).
  • Spusťte vagrant ssh a získejte shell uvnitř terminálu.
    • Spusťte sudo fdisk /dev/sdb a nastavte nové oddíly....
    • Zadejte n, p, 1 a dvakrát stiskněte (enter) pro výchozí velikost.
    • Chcete-li uložit tabulku oddílů, zadejte w.
  • Spusťte sudo mke2fs /dev/sdb1 a vytvořte souborový systém.
  • Spusťte sudo vi /etc/fstab a upravte seznam připojení.
    • Na konec přidejte řádek: /dev/sdb1 /srv/images ext4 errors=remount-ro 0 2.
    • Uložte.
  • Spusťte sudo mount /srv/images a připojte souborový systém.
  • Spusťte sudo chown www-data:www-data /srv/images a nastavte oprávnění souboru.
  • Ukončete shell exit.
  • Restartujte VM (vagrant halt; vagrant up).

Autorské role

Virtuální počítač vytvořený programem MediaWiki-Vagrant se v klíčových ohledech podobá produkčnímu prostředí Wikimedie a používá stejný nástroj—Puppet—tým technických operací Wikimedia používá ke správě produkčních serverů a Wikimedia Cloud VPS instance. Puppet je nástroj pro správu konfigurace, který poskytuje jazyk specifický pro doménu pro deklarativní vyjádření softwarových konfigurací. Soubory obsahující Puppet kód se nazývají 'manifesty' (manifests). Když puppet běží, interpretuje projevy, které zadáváte a podle toho nakonfiguruje VM. Vagrant role je soubor puppet manifestů.

Puppet codebase MediaWiki-Vagrant obsahuje abstrakce, které usnadňují automatizaci konfigurace rozšíření MediaWiki a souvisejícího softwaru. Pokud jste vývojář pracující na softwarovém projektu, který se vztahuje k MediaWiki, doporučujeme vám stáhnout záplatu s rolí puppet pro váš projekt. Přidáním role Vagrant do projektu usnadníte ostatním vývojářům kontrolu vaší práce. Použití spravovaného virtuálního počítače jako vývojové karantény pro váš projekt snižuje pravděpodobnost chyb "works-on-my-machine" (funguje na mém nástroji), které často vycházejí od geograficky vzdálených vývojářů pracujících v nekompatibilních prostředích.

Nejjednodušší způsob, jak začít s vlastními rolemi je, podívat se, jak jsou stávající role implementovány v puppet/modules/role/manifests/*.pp. Tyto role závisí na puppet modulech v puppet/modules (obvykle se foo::bar { ... } převádí na volání do puppet/modules/foo/manifests/bar.pp) a používají soubory a šablony z ostatních adresářů puppet/modules/role/*/rolename/. Puppet kód je obecně dobře zdokumentován a obsahuje příklady, které prokazují jeho správné použití.

Některé z užitečných puppet modulů jsou:

Nastavení instance v cloudu VPS

Můžete použít MediaWiki-Vagrant v Cloud VPS k instalaci MediaWiki na Wikimedia Cloud VPS instance a povolit v něm role MediaWiki-Vagrant.

Chyby

Jestliže narazíte v MediaWiki-Vagrant na chybu, nahlaste ji. Nejprve se ujistěte, že chyba není známou chybou produktu Vagrant nebo VirtualBox. Prohledejte Vagrant issue tracker na GitHubu a VirtualBox bugtracker. Pokud tam chybu nenajdete, pokračujte a odešlete chybu na Wikimedia Phabricator VirtualBox bugtracker. Jasně popište problém a zahrňte kroky k možnému zopakování.

Odkazy

Poznámky

  1. Pokud jste na systému Fedora, nepostupujte podle pokynů Oracle. Místo toho povolte repozitář RPMfusion (např. prostřednictvím konfigurace Apperu). Poté spusťte sudo dnf install VirtualBox VirtualBox-kmodsrc akmod-VirtualBox kmod-VirtualBox (poznámka: Citlivé na velikosti písmen! Pokud balíček nenajdete, podívejte se do Apperu.) Alternativně můžete postupovat podle této příručky. Může se stát, že vaše jádro bude příliš nové. Pokud tomu tak je, nainstalujte akmods-VirtualBox a spusťte sudo akmods, abyste se ujistili, že příslušný modul funguje
  2. If you are on Ubuntu 16.04, do not install Vagrant using apt-get. Instead, download it on the Vagrant web site. Using the version from APT will cause setup.sh to fail. On Fedora, you can run sudo dnf install vagrant instead.
  3. https://peshmerge.io/how-to-speed-up-vagrant-on-windows-10-using-nfs/
  4. Vagrant v závislosti na MediaWiki 1.21+