MediaWiki-Vagrant/cs





MediaWiki-Vagrant je přenosné vývojové prostředí MediaWiki. Skládá se ze sady konfiguračních skriptů pro Vagrant software a VirtualBox, které automatizují vytvoření virtuálního počítače, na kterém běží MediaWiki. Protože konfigurace je zaměřena spíše na snadný vývoj než na bezpečnost, MediaWiki-Vagrant se nedoporučuje pro veřejně přístupné wiki!

Virtuální 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 jsou speciálně nastaveny 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.

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ů.)


 * 1) S Git-em
 * 2) (Pouze Linux) Nainstalujte  NFS, pokud ještě není nainstalován. V Ubuntu použijte  . Fedora obvykle přichází s nainstalovaným NFS; pokud není spuštěn.
 * 3) S VirtualBox-em
 * 4) Získejte nejnovější Vagrant
 * 5) Získejte kód a vytvořte svůj stroj:
 * (Tím se klonuje do vašeho domovského adresáře uživatele.)
 * 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í
 * 1) Povolte další funkce MediaWiki, např.:
 * 2) Po dokončení konfigurace počítače Vagrant přejděte na adresu http://dev.wiki.local.wmftest.net:8080/ a vyhledejte instanci MediaWiki. Můžete se přihlásit pomocí uživatele Admin a hesla vagrant.
 * 1) Povolte další funkce MediaWiki, např.:
 * 2) Po dokončení konfigurace počítače Vagrant přejděte na adresu http://dev.wiki.local.wmftest.net:8080/ a vyhledejte instanci MediaWiki. Můžete se přihlásit pomocí uživatele Admin a hesla vagrant.
 * 1) Po dokončení konfigurace počítače Vagrant přejděte na adresu http://dev.wiki.local.wmftest.net:8080/ a vyhledejte instanci MediaWiki. Můžete se přihlásit pomocí uživatele Admin a hesla vagrant.
 * 1) Po dokončení konfigurace počítače Vagrant přejděte na adresu http://dev.wiki.local.wmftest.net:8080/ a vyhledejte instanci MediaWiki. Můžete se přihlásit pomocí uživatele Admin a hesla vagrant.

Pokud používáte Windows
Získejte Git for Windows a spusťte příkazy  v jeho shellu Git Bash. Namísto  spusťte   z shellu.

Pokud používáte prostředí kompatibilní s WSL Linux na Windows 10: spusťte příkazy s  namísto. Spusťte  namísto , který v bash shellu 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í
Pokud zde vaše problémy nejsou zodpovězeny, je IRC dobrá volba, konkrétně kanál.

Jakýkoli hostitel
Možná 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; Pokud se zdá, že někde visí, ale nedochází k žádným chybám, chvíli počkejte. Například:
 * Můžete zkusit 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.
 * Pokud se zobrazí chybová zpráva typu nelze otevřít soubor „Couldn't open file $CLONED_REPOSITORY/trusty-cloud“, zkuste následující příkaz: vagrant up --provider=virtualbox
 * Pokud máte nějaké loutkové chyby, možná budete muset iniciovat loutkové submodulů, ve vagrantovém adresáři spusťte git submodule update --init
 * Pomocí http://127.0.0.1:8080/info.php zkontrolujte, zda je Apache / PHP funkční.
 * Pomocí http://127.0.0.1:8080/info.php zkontrolujte, zda je Apache / PHP funkční.
 * Pokud se zobrazí upozornění, že váš dodatek hosta VirtualBox je nesprávná verze, můžete zkusit nainstalovat plugin vagrant-vbguest, který se aktualizuje automaticky.
 * Vagrant zřídka ztrácí párování s vaším VM. This thread 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ě  je aktuální:
 * 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.


 * Někdy můžete opravit nefunkční instalace např.: "Nebyla nalezena žádná wiki..." spuštěním , který obnoví virtuální počítač bez opakování časově nejnáročnější části instalačního procesu.

Specifické pro Windows

 * If you are on Windows and you get "guest machine entered an invalid state" - "poweroff", try downloading a 4.3.15 build of VirtualBox (there is a known problem with 4.3.14 on Windows). If that does not help, make sure you enable Hardware Virtualization Technology (VT-x or AMD-V) in BIOS. Hardware Virtualization is required. It is not an optional performance enhancement. (Some laptops require you to remove the power cable and battery for 30 seconds )
 * VirtualBox není kompatibilní s Hyper-V společnosti Microsoft. Pokud máte povolenou technologii Hyper-V (což může být výchozí, pokud jste nainstalovali aplikaci Visual Studio), zobrazí se výše uvedené chyby při spouštění virtuálního počítače ve VirtualBoxu. Existují 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 na auto místo na off
 * 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 použijte Hyper-V poskytovatel pro Vagrant namísto VirtualBoxu. Tohle 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), abyste akceptovali následující: netbiosd, nfsd, rpc.lockd, rpc.rquotad, rpcbind, VBoxHeadless. Během pár  sekund 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ány budete pravděpodobně muset znovu zkontrolovat "Blokovat 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í

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 počítačem (vaším počítačem). Počítač musíte nastavit jako „server NFS“, viz např. Ubuntu pokyny Ubuntu instructions. Na Debianu bude fungovat sudo apt-get install nfs-kernel-server ; možná budete muset také . Server NFS Debianu se nespustí bez položky v  . Pokud   neukáže spuštěné služby „nfs“, je pravděpodobné, že se to děje. Přidání domovského adresáře jako posledního řádku do   a poté /etc/init.d/nfs-kernel-server restart bude stačit, abyste tento problém vyřešili.


 * Sdílení NFS, které používá MediaWiki-Vagrant, nelze spouštět z šifrovaného adresáře. Což 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  přesuňte adresář MediaWiki-Vagrant na nezašifrovaný svazek (např.  ).
 * Alternativně můžete vypnout sdílení NFS pomocí
 * Nastavení NFS někdy uvízne (počáteční  visí na "Připojování sdílených složek NFS"). Restartování démona NFS na hostiteli pomáhá. (Viz #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.

Fedora

 * Pokud dostanete síť Network 10.11.12.13 is not available. po spuštění, deaktivujte SELinux pomocí   nebo opravte nastavení SELinux.
 * Pokud dostanete Poskytovatel tohoto stroje řízeného Vagrantem 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). po spuštění, ujistěte se, že je správně nastaven poskytovatel, například prostřednictvím   následovaně
 * If you get mount.nfs: mount to NFS server '10.11.12.13:download-directory/vagrant' failed: RPC Error: Unable to receive, run

Základní použití
Nástroj příkazového řádku vagrant na hostitelském počítači poskytuje několik dílčích příkazů pro ovládání virtuálního počítače. Již jste použili jeden: vagrant up, který zapne virtuální počítač. Stejně jako většina dílčích příkazů vagrant je třeba jej spustit 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 obraz systému a nastaví potřebný software pro spuštění MediaWiki. Může to trvat 1–2 hodiny času procesoru a nástěnných hodin na širokopásmovém připojení, ale pouze jednou. Když příště spustíte vagrant up, jednoduše se spustí počítač.

vagrant ssh spustí interaktivní přihlašovací shell na virtuálním počítači. Přihlásí se jako uživatel vagrant ; root přístup je dostupný prostřednictvím sudo, což je bez hesla. Protože je 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.

Po přihlášení byste měli vidět barevný banner MediaWiki a několik připomenutí 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 nějaký kód, stisknout 'enter' a kód bude okamžitě vyhodnocen. Pokud začnete řádek s '=', jeho vypočítaná hodnota bude vytištěna. Zadejte ? pro rychlou pomoc nebo help start (pomoc při spuštění) pro další pokyny.

Složka  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. To vám umožní použít normální prostředí editoru na hostitelském počítači k úpravě kódu MediaWiki, který běží na vašem virtuálním počítači.

Aktualizace
Pomocí vagrant git-update můžete své úložiště git, externí knihovny a databázové schéma aktualizovat. Tento příkaz odpovídá spuštění
 * 1) git pull v   a všech adresářích rozšíření a vzhledu
 * 2) composer update, aby bylo zajištěno, že jsou k dispozici nejnovější knihovny spravované skladatelem
 * 3) nakonec skript.

Měli byste také příležitostně (nebo v případě potřeby pro novou funkci) aktualizovat samotnou MediaWiki-Vagrant, což vagrant git-update nezahrnuje. Běh:

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

… (dříve nebo později).

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č a vagrant up a zavést ho zpět. Příkaz vagrant destroy odstraní soubory virtuálního počítače. Příkaz je užitečný, pokud chcete vrátit svou instanci do původního stavu. (Budete muset navázat s vagrant up, abyste zajistili novou instanci.)

Používání rolí
MediaWiki-Vagrant sets up a basic MediaWiki instance by default, but it also knows how to configure a range of complementary software, including some popular MediaWiki extensions and their dependencies. 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


 * 1) Zobrazit seznam dostupných rolí.

 $ vagrant roles enable role


 * 1) Zapněte pro tento stroj "roli".

 $ vagrant roles disable role


 * 1) Vypněte "roli" tohoto stroje.

 $ vagrant provision


 * 1) 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. Role obsahuje více informací o některých rolích.

Pokud přidáte mnoho rolí, možná budete muset zvětšit paměť dostupnou pro Vagrant VM. Zejména nastavení role „browsertests“ zahrnuje kompilaci  ruby Gem, což je úkol vyčerpávající paměť; pokud se to nezdaří, zkuste uvolnit paměť ve virtuálním počítači nebo zvýšit přidělenou paměť.

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

centralauth
Existují některé role, které vyžadují zvláštní pozornost, role centralauth nespustí migrace db automaticky přes loutku 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 na příponě 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  (umožňující wikidata jejichž poskytování vagrant 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 Odhlaste se z Vagrantu a poté můžete šťastně 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, který  , zpracovává pouze výchozí wiki (viz phab:T183274). Spusťte skript  ve skříni Vagrant.

Zde je postup importu výpisů XML.

$ mkdir wikidata_dumps $ cd wikidata_dumps $ wget https://dumps.wikimedia.org/wikidatawiki/latest/wikidatawiki-latest-pages-articles10.xml-p5264684p6341661.bz2 $wgWBRepoSettings['allowEntityImport'] = true;
 * stáhněte jakékoli . Například:
 * Povolte import entit Wikibase (viz phab:T72898). Připojte následující řádek k :
 * Následující skript BASH vám pomůže monitorovat proces. Můžete jej vložit do souboru . Zvýrazněný řádek volá skutečný skript pro import:

$ vagrant ssh $ cd /vagrant $ sudo chmod +x import_wikidata.sh $ ./import_wikidata.sh   $ tail -f wd_import.log
 * přihlaste se do pole Vagrant a spusťte skript. Zde by se měly zobrazovat ladící zprávy:
 * můžete sledovat průběh protokolu mimo box Vagrant:

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 za předpokladu, že klonujete repozitáře MediaWiki do ~/projects/mediawiki/ :

Aktualizování klonovaného úložiště
Aktualizujte klonovaný repozitář tak často, jak jen je to možné případně nutné.

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

Opětovné načtení Vagrant
Pokud změníte konfiguraci (např. $Ram, váš web VM/MediaWiki zamrzne) nebo se vyskytne problém. vagrant reload to může vyřešit. 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
Povolit role 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:

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  (výchozí  ).

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,

Nyní, když spustíte kód vagrant up, neměla by být žádná varování.

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

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.

Poskytování
Proces zajišťování můžete ladit spuštěním

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.

HHVM
See Manual:How to debug#HHVM for debugging under HHVM.

Chrome

 * For Chrome users, you should get XDebug Helper, and optionally Clear Cache, HTTP headers, and Mod Headers. Configure clear cache to automatically reload after clearing, and set up keyboard shortcuts (e.g. Ctrl+R for clear&reload, Ctrl+Shift+D to switch XDebugger on/off)

Firefox

 * Firefox users should check out easy Xdebug.
 * 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/... )

Log files
The mediawiki logs can be found in /vagrant/logs. There are log files for Apache in /var/log/apache2/, but it seems they are not written to. There is a log file for HHVM in /var/log/hhvm/. The PHP notices, warnings, errors, uncaught exceptions are logged by HHVM to the syslog which you can see in /var/log/syslog. The MySQL query log can be obtained by issuing SET GLOBAL general_log = 'ON'; in a client and then looking at /var/lib/mysql/*.log.

Running and debugging unit tests
To run the tests for ALL extensions:

To run unit tests for a single extension:

You can append path/to/tests/to/run.

Some tests may require running as the proper user to create lock files and such, hence this command runs as the "user"  that handles web requests.

For building coverage reports, see Manual:PHP unit testing/Code coverage.

Debugging phpunit tests is a little more complex. This method is a bit hacky, but can be used until debugging remote interpreter improves (e.g. in phpStorm 8 EAP). This workaround lets you run MediaWiki unit tests from the browser.
 * Download phpunit.phar file to the root of your vagrant directory.
 * Create a php file  in the root of the   directory. Do not commit this file to the repository. Paste the following code into it:


 * In the above file, change argv parameter to the name of your test file
 * Apache maps the root of the mediawiki directory to . So navigate to http://127.0.0.1:8080/w/unittest.php to run this file
 * Follow #Debugging instructions to attach your debugger

Running browser tests
See.

This link is pointing to deprecated documentation, someone who knows more about testing MediaWiki should update:

Pushing commits
If you're using MediaWiki-Vagrant for development you'll probably want to push some commits to MediaWiki core or an extension's repository using git review. By default, all remotes point to the  URLs. To avoid overriding this on a case by case basis, run:

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

You also need to have your ssh keys in.

How do I...?

 * Check PHP version and settings
 * http://127.0.0.1:8080/info.php


 * Edit LocalSettings.php?
 * First, check that there is no role ( vagrant list-roles ) that already does what you need. If not, create a file in  directory. See README and 00-debug.php-example file.


 * Update MediaWiki code?
 * The easiest is to use  from the host.  Or, to just update the code without dependencies, you can use regular git ,  , etc. commands in   and   directories. You can run these commands on the virtual machine, but the file access will be faster on the host machine. MediaWiki-Vagrant pulls code from git master when you initially set up and/or add a role, but doesn't automatically update code after that.


 * Run MediaWiki PHP interpreter
 * ssh to vagrant and run . You might need to run it with


 * Run MediaWiki SQL interpreter
 * ssh to vagrant and run . You might need to run it with

''NN packages can be updated. NN updates are security updates.'' In vagrant ssh:
 * Update virtual machine software packages?
 * does not update system packages in the VM. When you connect with vagrant ssh the login message will inform that you:
 * to update all packages, enter
 * for "automatic installation of security (and other) upgrades", similar to Cloud VPS instances, enter
 * to update to the same packages that are on production WMF servers... TODO


 * Customize Vagrant
 * You should never need to change Vagrantfile directly. There are several aspects of vagrant you can customize:
 * Core settings (git user, ports, ram, ip, port forwarding) can be customized via .settings.yaml file. See  and   for instructions. So for example you may run   to enable port forwarding from host:1234 to guest:80.
 * Perform additional steps after Vagrantfile load by creating a file called Vagrantfile-extra.rb and placing it in the same folder as Vagrantfile - it will be automatically loaded. In case of conflict, values in the 'extra' file will supersede values in this file. See example in support/ directory.


 * Add custom Puppet code?
 * This is ideal if you want to work on your own MediaWiki site locally and let the MediaWiki-Vagrant install your dependencies for you. It's ideal if you have your own fork.  There is a distinction between a role and this use case. Roles are meant to be installed in any order and without breaking. If your fork needs different calls and get in trouble with roles, create your own class and call what you need, including roles.
 * To do so, place your custom puppet code in  with your own class, like so:

To apply your class, add it to the "classes" key in. You can create the file if it doesn't exist.

Then run  to apply the change via Puppet.


 * Update MediaWiki-Vagrant itself?
 * (For example, to use new roles.) In a terminal, change to the vagrant directory on the host computer and enter a regular git command such as . You will typically want to run   after updating to apply any new puppet changes to your virtual machine.


 * Run GUI applications on the virtual machine?
 * If you have an X server installed, SSH into the virtual machine using  to enable X forwarding. (Mac users should update to the latest version of XQuartz.)


 * As an alternative, you can run the virtual machine in GUI mode, which allows you to interact with the VM as though it had a physical display. To enable GUI mode, create a file called  in the root repository folder, with this as its content:


 * Save the file and run  followed by  . The virtual machine's display will appear in a window on your desktop.


 *  Adjust the resources allocated to the VM?
 * If you'd like to allocate more or less CPU / RAM to the VM, see  for instructions.

Alternatively, you can do it by creating Vagrantfile-extra.rb (see support/ dir for an example):


 * Change the editor used for git commit messages?

Go to Horizon, choose Web Proxies, and enter a DNS hostname, say View your new wiki at " http:// /wiki/ "
 * Setup a custom hostname?

Create a local.yaml file in the /vagrant/puppet/hieradata directory. In it, add: Run.
 * Make the custom hostname point to homepage of my vagrant role instead of wiki homepage?


 * Run a branch of MediaWiki other than master?
 * Set the "" key in .  You can create the file if it doesn't exist.


 * Run MediaWiki under HHVM rather than Zend PHP?
 * To convert all wikis in your MediaWiki-Vagrant instance to HHVM:

MediaWiki settings
As an alternative to managing all MediaWiki settings in a single, large LocalSettings.php file, consider grouping your configurations by component or theme, and creating a separate PHP file in  for each group. 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  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.

For example:

 settings.d/   ├── 10-RunFirst.php ├── 20-SomeExtension.php └── 99-RunLast.php Note that the settings files in  are automatically created and destroyed in response to your Puppet configuration. Don't put your custom settings there, because Puppet will erase or override them. Keep your custom settings files in  instead.

Vagrant flags
vagrant config --list display a list of all current Vagrant flags.

After the initial, in your vagrant directory, you can then set one of the vagrant flags that appears in the config list, e.g.

Job queue
If you're testing something that needs to churn the job queue, you may need to increase the number of job runners. Currently this is not available through LocalSettings.php, but must be set in the config file for the job runner.


 * 1) Open
 * 2) Change the value for the ' ' key from   to the desired value (say,  )
 * 3) Re-provision with
 * 4) Beware this will be a difference from the git master in your code

See instructions above for adjusting CPU core count appropriately (highly recommended for CPU-bound task such as video transcoding).

Additional storage space
By default, there is relatively little free space on the root partition within the VM. If you plan to test uploading and processing of large image and video files, this may be insufficient.

Manual steps:
 * Shut down the VM
 * 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
 * Run  to get a shell inside the terminal
 * Run  to set up new partitions...
 * Type,  ,  , and hit (enter) twice for default size
 * Type  to save the partition table
 * Run  to create the filesystem
 * Run  to edit the mounts list
 * Add line at end:
 * save out
 * Run  to mount the filesystem
 * Run  to set the file permissions
 * Exit the shell
 * Reboot the VM

Authoring roles
The virtual machine created by MediaWiki-Vagrant resembles Wikimedia's production environment in key respects, and it uses the same tool—Puppet—that Wikimedia's technical operations team uses to manage production servers and Wikimedia Cloud VPS instances. Puppet is a configuration management tool that provides a domain-specific language for expressing software configurations in a declarative fashion. Files containing Puppet code are called 'manifests'. When Puppet runs, it interprets the manifests you feed it and configures the machine accordingly. A Vagrant role is a set of Puppet manifests.

MediaWiki-Vagrant's Puppet codebase contains abstractions that make it easy to automate the configuration of MediaWiki extensions and related software. If you are a developer working on a software project that relates to MediaWiki, you are encouraged to submit a patch with a Puppet role for your project. Adding a Vagrant role for your project makes it easy for other developers to check out your work. Using a managed virtual machine as a development sandbox for your project reduces the chance of "works-on-my-machine" errors that often result from geographically remote developers working in incompatible environments.

The easiest way to get started with custom roles is to look at how existing roles are implemented in. These roles depend on Puppet modules in  (usually,   translates to a call to  ) and use files and templates from the other   directories. The Puppet code is generally well-documented and contains examples that demonstrate its proper usage.

Some of the more useful puppet modules are:
 * 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)

Setting up an instance on Cloud VPS
You can use MediaWiki-Vagrant in Cloud VPS to install MediaWiki on a Wikimedia Cloud VPS instance and enable MediaWiki-Vagrant roles in it.

Bugs
If you spot a bug in MediaWiki-Vagrant, please report it. First, make sure the bug is not a known Vagrant or VirtualBox bug by searching the Vagrant issue tracker on GitHub and the VirtualBox bugtracker. If it is not, go ahead and submit the bug to Wikimedia Phabricator. Clearly describe the issue and include steps to reproduce, whenever possible.

Links

 * Project page on Ohloh
 * MediaWiki-Vagrant on GitHub
 * Issue tracker on Phabricator
 * HHVM/Vagrant steps necessary to enable the hhvm role on older MediaWiki-Vagrant installs
 * Bash commands needed for quick start on Ubuntu
 * Bash commands needed for quick start on Ubuntu