MediaWiki-Vagrant
MediaWiki-Vagrant je přenosné vývojové prostředí MediaWiki. Skládá se ze sady konfiguračních skriptů pro programy Vagrant a VirtualBox, 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 spíše 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 interakci 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. Best of all, because the configuration is automated and contained in a virtual environment, mistakes are easy to undo.
Systémové požadavky
- CPU
- 64bitový procesor x86
- OS
- Linux nebo 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 nakonec to vždy selže.
- Disk
- Na primární jednotce musí být volných několik gigabajtů (/home partition pro Linux, C: drive for 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, postupujte podle kroků v README místo prvních pěti kroků.)
- Stáhněte Git
- (Pouze Linux) Nainstalujte NFS, pokud ještě není nainstalován. V Ubuntu použijte
$nfsinstall
. Fedora obvykle přichází s nainstalovaným NFS; pokud není spuštěn$nfsfedora
. Install NFS if it is not already installed. In Ubuntu, usesudo apt-get install nfs-kernel-server
. Fedora usually come with NFS installed; if not runsudo dnf install nfs-utils
. - Stáhněte VirtualBox[1]
- Získejte nejnovější Vagrant[2]
- Získejte kód a vytvořte svůj 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 větev vydání, můžete ji nyní zadat pomocí
$hiera
$ vagrant up
- Povolte další funkce MediaWiki, např.:
$ vagrant roles list $ vagrant roles enable monobook --provision
- 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 config vagrant_cores <number of cores>
(počet jader) přiřaďte VM méně než 32 jader.Pokud používáte Windows
Získejte Git for 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“ (snadný způsob, jak toho dosáhnout, je být spuštěn jako správce).
Odstraňování potíží při spuš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
$destroy
, 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.
- If you get errors from vagrant up, instead install the most recent versions of VirtualBox and 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 ve 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.
You might want to compare the output of the initial run of vagrant up in your terminal with this sample. The initial setup may take a long time; if it seems to hang somewhere but there are no errors, just give it a while.
- Když se zobrazí upozornění, že je verze programu VirtualBox Guest Additions nesprávná, můžete zkusit nainstalovat plugin vagrant-vbguest, který se aktualizuje automaticky.
- Párování Vagrantu s vaším VM se zřídkakdy rozbije. Toto vlákno popisuje některé způsoby, jak to 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í:
- Make sure that
vagrant/mediawiki
repository is up to date:
$ 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“, 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
/etc/exports
: zadejte sudo rm -i /etc/exports
Vagrant znovu při příštím spuštění vytvoří soubor /etc/export
.
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 odpojili napájecí kabel a baterii na 30 sekund [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> Předvolby systému> Zabezpečení a soukromí > Firewall > Možnosti brány Firewall (Apple > System Preferences > Security & Privacy > Firewall > Firewall Options). Budete muset zrušit zaškrtnutí políčka „Blokovat všechna příchozí připojení“ (Block all incoming connections) a pravděpodobně také zrušit zaškrtnutí políčka „Povolit tajný režim“ (Enable stealth mode), pro akceptování následujících: netbiosd, nfsd, rpc.lockd, rpc.rquotad, rpcbind, VBoxHeadless. Během několika vagrant up
vteřin budete možná muset restartovat počítač a změnit stav na „Povolit příchozí připojení“ (Allow incoming connections). Po instalaci, jakmile jsou pravidla brány firewall aktualizována, budete pravděpodobně muset znovu zkontrolovat "Blokovaní všechna příchozí připojení" (Block all incoming connections) a "Povolit tajný režim" (Enable stealth mode).
- 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 Ubuntu instructions. 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, pokudsudo rpcinfo -p
nespustí služby „nfs“. Přidání domovského adresáře jako posledního řádku do/etc/export
a poté /etc/init.d/nfs-kernel-server restart bude stačit pro odstranění tohoto problému. - 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
).
- Před spuštěním
- Alternativně můžete vypnout sdílení NFS pomocí
vagrant config nfs_shares off
- Alternativně můžete vypnout sdílení NFS pomocí
- Nastavení NFS někdy uvízne (počáteční
vagrant up
visí na "Připojování sdílených složek NFS"). Restartování démona NFS na hostiteli pomáhá. (Viz #5802.)
- NFS setup seems to get stuck sometimes (initial
vagrant up
hangs at "Mounting NFS shared folders"). Restarting the NFS daemon on the host helps. (See #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 virtuální box, úplně odebrat virtuální počítač a akci opakovat.
vagrant up
may tell you that "The executable 'bsdtar' Vagrant is trying to run was not found in the PATH variable." You can fix this on Ubuntu withsudo apt install libarchive-tools
.- On Ubuntu with Secure Boot enabled, you will have a difficult time installing VirtualBox. Your machine may give you guff when you run
/sbin/vboxconfig
. If it does, you can rectify the situation by signing the associated kernel module. Step-by-step instructions can be found in this askubuntu post.
Fedora
- Zobrazí-li se Vám hláška, že síť není k dispozici Network 10.11.12.13 is not available. po spuštění
vagrant up
, 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ímvagrant destroy
a potévagrant up --provider=virtualbox
- 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řipojte se k serveru NFS '10 .11.12.13: adresář ke stažení nelze přijmout), spusťte
vagrant config nfs_shares
.
Základní použití
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 spusť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 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í 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 zpravidla heslo vagrant
.
Po přihlášení byste měli vidět barevný banner MediaWiki a připomenutí několik užitečných příkazů.
Příkaz phpsh spustí interaktivní PHP interpret 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í:
- git pull v adresáři
core
a všech adresářích rozšíření a vzhledů - composer update, zajišťuje, že jsou k dispozici nejnovější knihovny spravované Composrem
- spuštění skriptu
update.php
.
- git pull in
core
and all extension and skin directories
- composer update to ensure that the latest Composer-managed libraries are available
- finally the
update.php
script.
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.
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řeba.Z virtuálního počítače se odhlaš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 a vypnout virtuální počítač. Příkazm vagrant up ho můžete znovu spustit. Příkazem vagrant destroy můžete smazat všechny soubory virtuálního počítače. Příkaz je užitečný, pokud chcete vrátit svou instanci do původního stavu. Now that you're back in a standard command prompt, you can run vagrant halt to shut down the virtual machine and vagrant up to bring it back up. vagrant destroy will delete the virtual machine's files; this command is useful if you want to return your instance to a pristine state. (You'll need to follow up with vagrant up to provision a fresh instance.)
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. These optional software stacks are collectively known as 'roles', and MediaWiki-Vagrant offers an easy and powerful command-line interface for managing them.
$ vagrant roles list
# Zobrazit seznam dostupných rolí.
$ vagrant roles enable role
# Zapněte pro tento stroj roli.
$ vagrant roles disable role
# Vypněte roli tohoto stroje.
$ vagrant provision
# Poté, co jste dokončili povolení nebo zakázání rolí, spusťte toto, aby se změna projevila.
Podívejte se na krátkou ukázku screencast demonstrující, jak používat role. Roles obsahuje více informací o některých rolích. Roles has more information about some roles.
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é, uvolnite paměť ve virtuálním počítači nebo zvýšte přidělenou paměť (bug 53864).In particular, setting up the "browsertests" role involves compiling the
ffi
ruby Gem which is a memory-hungry task; if it fails try freeing some memory in the VM or increasing its memory allocation (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ý importuje 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 k
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 volá 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. Odstraněním celého adresáře vagrant nebo vyčištěním adresáře 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 čisté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í Vagrant
Pokud změníte konfiguraci (např. $Ram) váš web VM/MediaWiki zamrzne/zatuhne nebo se vyskytne jiný problém, může to vyřešit vagrant reload. Tím se váš host restartuje. 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é errors (chyby). Nainstalujte vagrant-proxyconf. Je to plugin, který umožňuje vašemu virtuálnímu počítači používat určené proxy. Toto je rychlý průvodce nastavením. Podrobnou dokumentaci najdete na stránce zde.
Nainstalujte plugin:
vagrant plugin install vagrant-proxyconf
Chcete-li nakonfigurovat nastavení proxy pro všechny programy ve všech vagrantových virtuálních počítačích, přidejte následující řádky do $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
# ... other stuff
end
Nahraďte adresy číslem ip a portem vašeho proxy serveru. Pomocí config.proxy.no_proxy vyjmenujte všechny weby / 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 kód vagrant up, neměla by se objevit žádná varování.
Chcete-li zakázat plugin, 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 spuštění můžete ladit spuštěním
PUPPET_DEBUG=1 vagrant provision
PHP
Můžete ladit PHP pomocí Xdebugu. Ladění v PHP se liší od ostatních ladění na straně klienta. Vaše IDE poslouchá příchozí připojení a když přistoupíte k serveru pomocí prohlížeče, dá PHP hlavičce pokyn, aby se připojil k vašemu IDE. Další informace viz MediaWiki-Vagrant/Advanced usage#MediaWiki debugging using Xdebug and an IDE in your host.
Chrome
- Pro uživatele prohlížeče Chrome byste měli získat XDebug Helper a volitelně Clear Cache, HTTP header a Mod Headers. Konfigurace 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í / vypnutí XDebuggeru)
Firefox
- Uživatelé Firefoxu by se měli podívat na easy Xdebug.
- Nainstalujte a nakonfigurujte [$compat xdebug-compatible] IDE na vašem počítači (Eclipse, PhpStorm, Emacs atd.)
- V IDE začněte poslouchat 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/...)
- Install and configure an xdebug-compatible IDE on your machine (Eclipse, PhpStorm, Emacs, etc)
- In IDE, start listening for the incoming debug connection
- In IDE, set break point at the spot that interests you
- Enable XDebug in the browser and navigate to your vagrant installation ( 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ě 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 php tests/phpunit/phpunit.php --wiki wiki
Spuštění testů jednotky pro jedno rozšíření:
$ sudo -u www-data env "PHP_IDE_CONFIG=serverName=mwvagrant" "CIRRUS_REBUILD_FIXTURES=yes" "XDEBUG_CONFIG=idekey=netbeans-xdebug" php tests/phpunit/phpunit.php --wiki=wiki --stop-on-failure --stop-on-error extensions/ExtensionName/tests/phpunit/
Můžete připojit cestu/k/testy/ke_spuštění.
Některé testy mohou vyžadovat spuštění oprávněným uživatelem pro vytvoření souborů zámku. 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í viz Návod: 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, dokud 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ářimediawiki
. 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ů
Viz Manual:JavaScript unit testing .
Tento odkaz ukazuje na zastaralou dokumentaci. Prosíme o aktualizaci někoho, kdo ví více o testování MediaWiki: Quality Assurance/Browser testing/Running tests#Running VisualEditor browser tests via Vagrant
Potlačení odevzdání
Pokud pro vývoj používáte MediaWiki-Vagrant, pravděpodobně budete chtít poslat nějaké potvrzení 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
.
Troubleshooting
- ; Zkontrolujte verzi a nastavení PHP
- http://127.0.0.1:8080/info.php
- http://127.0.0.1:8080/info.php
- Upravte 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.
- Aktualizovat 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 gitfetch
,pull
atd. Vvagrant/mediawiki
avagrant/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.
- Spusťte překladač MediaWiki PHP
- ssh pro vagrant a spusťte
mwscript eval.php
. Možná jej budete muset spustit pomocísudo
- Spusťte interpretátor SQL MediaWiki
- ssh pro vagrant a spuštění
mwscript sql.php
. Možná jej budete muset spustit pomocísudo
- Aktualizovat 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.
Aktualizace 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ůsobte 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
avagrant forward-port --help
. Můžete tedy například spustitvagrant 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.
- Základní nastavení (uživatel git, porty, RAM, IP, přeposílání portů) lze upravit pomocí souboru .settings.yaml. Pokyny viz
- Přidat 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í vidličku. 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 vidlička 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 můžete vytvořit, pokud neexistuje.
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 kódvagrant
, abyste na svůj virtuální stroj použili všechny nové puppet změny.
- Spouštějte GUI aplikace na virtuálním 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í 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 soubor s názvem
Vagrantfile-extra.rb
ve složce kořenového úložiště, 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 stroje se objeví v okně na ploše.
- Upravit 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
- Změnit editor používaný pro zprávy git commit?
git config --global core.editor "vim"
- Nastavit vlastní název hostitele?
- Přejděte na Horizon, vyberte Web Proxies a zadejte název hostitele DNS, řekněte <hostname>
Zobrazit novou wiki na "http://<hostname>/wiki/"
- Nastavit vlastní název hostitele, aby místo domovské stránky 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 můžete vytvořit, pokud neexistuje.
mediawiki::branch: "wmf/1.24/wmf18"
vagrant destroy -f
, odstraňte stávající checkout na Mediawiki a nakonec vytvořte nový virtuální počítač s vagrant up
.Pokročilá využití
Nastavení MediaWiki
Zvažte seskupení vašich konfigurací jako alternativu ke správě všech nastavení MediaWiki v jednom velkém souboru LocalSettings.php. Konfigurace můžete seskupit podle komponenty nebo tématu a vytvořit pro každou skupinu samostatný soubor PHP v settings.d/
. Zjednodušíte si takto údržbu vašich nastavení, dočasné deaktivovace konkrétní konfigurace a sdílní nastavení s ostatními.
MediaWiki automaticky načte všechny soubory PHP v $code v lexikálním pořadí. Pořadí, ve kterém jsou vaše konfigurace nastaveny, můžete ovládat tak, že budete přidávat dvoumístnou předponu ke každému názvu souboru.
This makes it quite easy to keep your settings organized, to temporarily disable specific configurations, and to share settings with others.
MediaWiki will automatically load any PHP files in settings.d/
in lexical order.
You can control the order in which your configurations are set by adopting the habit of adding a two-digit prefix to each file name.
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 sem své vlastní nastavení, protože Puppet jej 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 flags.
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 prověřit frontu úloh, možná budete muset zvýšit počet běžících úloh. V současné době to není dostupné prostřednictvím LocalSettings.php, ale musí být toto nastaveno v konfiguračním souboru pro spouštěče úloh.
- Otevřít
puppet/modules/mediawiki/templates/jobrunner.json.erb
- Změňte hodnotu klíče $sode2 z $code3 na požadovanou hodnotu (řekněme $code4)
- Opětovné spuštění s $code5
- Pozor! Bude se to lišit od git masteru ve vašem kódu
- Change the value for the '
runners
' key from1
to the desired value (say,4
)
- Re-provision with
vagrant --provision
- Beware this will be a difference from the git master in your code
Viz 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 Nastavení
- V části Úložiště (Storage) vyberte „Řadič: SATA“ (Controller: SATA) a klikněte na ikonu „Přidat pevný disk“ (Add hard disk).
- Vyberte výchozí typ zobrazení disku.
- Pojmenujte disk 'VagrantImageSpace' nebo podobně a přidělte mu dostatek místa (řekněme 80 GB) - ve výchozím nastavení bude soubor malý a rozšíří se na velikost pro skutečné využití, takže poskytněte tolik místa, kolik byste mohli potřebovat
- Zavřete dialogy a restartujte VM (
vagrant up
)
- Spusťte
vagrant ssh
a získejte shell uvnitř terminálu- Spusťte
sudo fdisk /dev/sdb
a vytvořte nové oddíly ... - Zadejte
n
,p
,1
a pro výchozí velikost dvakrát stiskněte (enter - zadejte) - Chcete-li uložit tabulku oddílů, zadejte
w
- Spusťte
- Spusťte
sudo mke2fs /dev/sdb1
a vytvořte souborový systém - Spusťte
sudo vi /etc/fstab
a upravte seznam připojení- Přidejte řádek na konec:
/dev/sdb1 /srv/images ext4 errors=remount-ro 0 2
- Uložte
- Přidejte řádek na konec:
- 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 - Opusťte shell
exit
- Restartujte VM (
vagrant halt; vagrant up
)
- Shut down the VM (
vagrant halt
)
- Open VirtualBox Manager
- Select the VM and go into Settings
- Under Storage, select "Controller: SATA" and click the "Add hard disk" icon.
- Select the default disk image type.
- Name the disk 'VagrantImageSpace' or similar, and give it enough space (say, 80GB) -- by default the file will start small and expand to actual usage, so give as much space as you might need
- Close out the dialogs and restart the VM (
vagrant up
)
- Close out the dialogs and restart the VM (
- Run
vagrant ssh
to get a shell inside the terminal
- Run
sudo fdisk /dev/sdb
to set up new partitions...
- Run
- Type
n
,p
,1
, and hit (enter) twice for default size
- Type
- Type
w
to save the partition table
- Type
- Run
sudo mke2fs /dev/sdb1
to create the filesystem
- Run
sudo vi /etc/fstab
to edit the mounts list
- Add line at end:
/dev/sdb1 /srv/images ext4 errors=remount-ro 0 2
- Add line at end:
- save out
- Run
sudo mount /srv/images
to mount the filesystem
- Run
sudo chown www-data:www-data /srv/images
to set the file permissions
- Exit the shell
exit
- Reboot the 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í Wikimedia 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í kód Puppet se nazývají „manifesty“ (manifests). Když puppet běží, interpretuje projevy, které jí 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 odeslat 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 „pracuje na počítači“, 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 na to, 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:
- $ext: instalace a konfigurace rozšíření ([$ext-example example])
- $doc: vytvořte dokumentaci nebo testovací stránku na wiki (příklad: [$decl declaration], [$page page])
- $dump: import wiki dump ([$dump-example example])
- $pack: nainstalujte systémový balíček ([$pack-example example])
- $exec: provedení shellového příkazu ([$exec-example example])
- mediawiki::extension - install and configure an extension (example)
- mediawiki::import::text - create a documentation or test page on the wiki (example: declaration, page)
- mediawiki::import::dump - import a wiki dump (example)
- require_package - install a system package (example)
- exec - execute a shell command (example)
Nastavení instance v cloudu VPS
Můžete použít MediaWiki-Vagrant in 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 on GitHub 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
- Project page on Ohloh
- [$github MediaWiki-Vagrant on GitHub]
- [$phab Issue tracker on Phabricator]
- Watch 2014-11-25 Tech talk on "Co je nového u MediaWiki Vagrant".
- Bash příkazy potřebné pro rychlý start na Ubuntu
Poznámky
- ↑ 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, nainstalujteakmods-VirtualBox
a spusťtesudo akmods
, abyste se ujistili, že příslušný modul funguje - ↑ 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 causesetup.sh
to fail. On Fedora, you can runsudo dnf install vagrant
instead. - ↑ Vagrant v závislosti na MediaWiki 1.21+