MediaWiki-Vagrant/tr





MediaWiki-Vagrant taşınabilir bir MediaWiki geliştirme ortamıdır. MediaWiki çalıştıran bir sanal makinenin oluşturulmasını otomatikleştiren Vagrant ve VirtualBox için bir dizi yapılandırma betiğini oluşur. Yapılandırma güvenlikten ziyade kolay gelişime yönelik olduğundan, MediaWiki-Vagrant herkese açık vikiler için önerilmez.

MediaWiki-Vagrant'ın oluşturduğu sanal makine, MediaWiki'nin kodunu öğrenmeyi, değiştirmeyi ve geliştirmeyi kolaylaştırır: varsayılan olarak kullanışlı hata ayıklama bilgileri görüntülenir ve güçlü bir hata ayıklayıcı da dahil olmak üzere MediaWiki kodunu incelemek ve etkileşime girmek için özel olarak çeşitli geliştirici araçları ayarlanır. En iyisi, yapılandırma otomatik olduğu ve sanal bir ortamda bulunduğu için hataların geri alınması kolaydır.

Sistem gereksinimleri

 * CPU: 64-bit x86 işlemcisi
 * OS: Linux, macOS, veya Windows
 * Bellek: Hem ana bilgisayar işletim sistemini hem de VM'yi çalıştırmak için sisteminizde toplamda en az 4 GiB RAM, tercihen 8 GiB veya daha fazla. Sadece 2 GiB RAM ile bir sistemde çalıştırmayı denemeyin, sonunda başarısız olacaktır.
 * Disk: Birincil sürücüde birkaç gigabayt boş olmalıdır (/home Linux bölümü, C: Windows için sürücü). Özellikle, VM disk görüntülerinin varsayılan olarak ana dizininizde saklanacağını unutmayın.
 * Ağ: Debian Linux güncellemelerini ve MediaWiki kaynak kodunu indirmek için yeterli bant genişliğine sahip aktif ağ bağlantısı
 * Kurulum saati: Koşullara ve herhangi bir sorun yaşamanıza bağlı olarak 20 dakika ila 2 saat

Hızlı başlangıç
(MediaWiki-Vagrant'ı USB dağıtımından yüklüyorsanız, ilk beş adım yerine README'deki adımları izleyin.)


 * 1) Git alın
 * 2) (Yalnızca Linux) Yüklü değilse NFS yazılımını yükleyin. Ubuntu'da   kullanın. Fedora genellikle NFS kurulu olarak gelir; değilse   çalıştırın.
 * 3) VirtualBox alın
 * 4) En son Vagrant'i alın
 * 5) Kodu alın ve makinenizi oluşturun:
 * (Bu, kullanıcı ana dizininize kopyalanır.)
 * İstendiğinde, Gerrit kullanıcı adınızı girin (önerilir) veya sadece Enter tuşuna basın.
 * En son sürüm yerine bir sürüm dalı kullanmak istiyorsanız, şimdi  ile belirtebilirsiniz.
 * 1) Ek MediaWiki özelliklerini etkinleştirin, örn.:
 * 2) Vagrant makinenizi yapılandırmayı tamamladığında,   komutunu verin veya MediaWiki örneğinizi bulmak için http://dev.wiki.local.wmftest.net:8080/ gidin. Admin kullanıcısı ve vagrant parolasını ile giriş yapabilirsiniz.
 * 1) Ek MediaWiki özelliklerini etkinleştirin, örn.:
 * 2) Vagrant makinenizi yapılandırmayı tamamladığında,   komutunu verin veya MediaWiki örneğinizi bulmak için http://dev.wiki.local.wmftest.net:8080/ gidin. Admin kullanıcısı ve vagrant parolasını ile giriş yapabilirsiniz.
 * 1) Vagrant makinenizi yapılandırmayı tamamladığında,   komutunu verin veya MediaWiki örneğinizi bulmak için http://dev.wiki.local.wmftest.net:8080/ gidin. Admin kullanıcısı ve vagrant parolasını ile giriş yapabilirsiniz.
 * 1) Vagrant makinenizi yapılandırmayı tamamladığında,   komutunu verin veya MediaWiki örneğinizi bulmak için http://dev.wiki.local.wmftest.net:8080/ gidin. Admin kullanıcısı ve vagrant parolasını ile giriş yapabilirsiniz.

Windows'u çalıştırırsanız
[$Git-scm Git for Windows]'u edinin ve Git Bash kabuğunda  komutlarını çalıştırın. yerine,  kabuktan   çalıştırın.

Windows 10'da WSL Linux uyumlu kabuk kullanılıyorsa: komutları  yerine   ile çalıştırın.Linux bash kabuğunda çalışmayan   yerine   komutunu çalıştırın.

Vagrant'ı çalıştıran hesabın muhtemelen "Sembolik Bağlantılar Oluştur" iznine (yönetici olarak çalıştırmanın kolay yolu) ihtiyacı olacaktır.

Başlangıç sorunlarını giderme
Sorunlarınız burada yanıtlanmazsa, IRC iyi bir seçenektir, özellikle de kanalı.

Herhangi bir ana bilgisayar
Terminalinizdeki ilk vagrant up çalışmasının çıkışını bu örnek ile karşılaştırmak isteyebilirsiniz. İlk kurulum uzun sürebilir; bir yere asılıyor gibi görünüyor, ancak hata yoksa, sadece bir süre verin. Örneğin:
 * Linux dağıtımınızın sağladığı VirtualBox ve Vagrant sürümlerini kurmayı deneyebilirsiniz. Son Debian veya Ubuntu çalıştırıyorsanız, VirtualBox ve Vagrant için paketleri yüklemek üzere sudo apt-get install virtualbox vagrant deneyin.
 * vagrant up üzerinden hata alırsanız, bunun yerine VirtualBox ve Vagrant'ın en son sürümlerini yükleyin.
 * "$CLONED_REPOSITORY/trusty-cloud dosyası açılamadı" gibi bir hata mesajı alıyorsanız, aşağıdaki komutu deneyin: vagrant up --provider=virtualbox
 * Kukla hatalarınız varsa, kukla alt modüllerini başlatmanız gerekebilir, vagrant dizininde git submodule update --init çalıştırın
 * Apache/PHP'nin çalışıp çalışmadığını kontrol etmek için http://127.0.0.1:8080/info.php kullanın.
 * Apache/PHP'nin çalışıp çalışmadığını kontrol etmek için http://127.0.0.1:8080/info.php kullanın.
 * VirtualBox Guest Additions'ınızın yanlış sürüm olduğuna dair uyarılar alırsanız, bunları otomatik olarak güncelleyen vagrant-vbguest eklentisini yüklemeyi deneyebilirsiniz.
 * Vagrant sanal makinenizle eşleşmeyi nadiren kaybeder. Bu iletiyi, bu soruna geçici bir çözüm bulmak için bazı yolları açıklar (örneğin, eski VM sabit sürücüsünü yeni profile bağlama)
 * deposunun güncel olduğundan emin olun:
 * BIOS'ta sanallaştırmayı etkinleştirdiğinizden emin olun. Bazen bu Güvenlik ayarları altındadır.
 * Dil kodlama ayarlarınızın UTF-8 olduğundan emin olun. "US-ASCII'de geçersiz bayt dizisi" alırsanız, LANG ve LC_ALL ortam değişkenlerinizi uygun bir şeye ayarlamayı (yeniden) deneyin.


 * Bazen bozuk yüklemeleri (örneğin "Viki bulunamadı...” diyerek  komutunu çalıştırarak sanal makineyi en çok zaman harcamadan yeniden oluşturarak düzeltebilirsiniz.

Windows'a özgü

 * Windows kullanıyorsanız ve "konuk makine geçersiz bir duruma girdi", "poweroff" alırsanız, 4.3.15 VirtualBox derlemesini indirmeyi deneyin (Windows'ta 4.3.14 ile ilgili bilinen bir sorun var). Bu yardımcı olmazsa, BIOS'ta Donanım Sanallaştırma Teknolojisini (VT-x veya AMD-V) etkinleştirdiğinizden emin olun. Donanım Sanallaştırması gerekiyor. İsteğe bağlı bir performans geliştirmesi değildir. (Bazı dizüstü bilgisayarlar güç kablosunu ve pili 30 saniye için çıkarmanızı gerektirir)
 * VirtualBox, Microsoft'un Hyper-V'si ile uyumsuz. Visual Studio yüklediyseniz varsayılan olabilecek Hyper-V etkinleştirilmişse, VirtualBox'da bir VM'yi başlatmaya çalışırken yukarıdaki hataları alırsınız. Üç olasılık vardır:
 * Komut isteminde Hyper-V'yi kapatmak ve yeniden başlatmak için bcdedit /hypervisorlaunchtype ayarını kapatın komutunu çalıştırın. Hyper-V'yi tekrar açmak için kapalı yerine otomatik olarak ayarlayın
 * Denetim Masası'ndaki 'Windows Özellikleri Ekle/Kaldır' ile Hyper-V'yi devre dışı bırakın ve yeniden başlatın. Bu, VirtualBox'ın çalışmasını sağlar, ancak Windows Phone emülatörleri gibi tüm Hyper-V VM'lerini kullanmanızı önler.
 * veya Vagrant için VirtualBox yerine Hyper-V sağlayıcısı kullanın. Bu kararsız olabilir.

Mac'a özgü

 * NFS hataları NFS hatalarını önlemek için, yüklerken güvenlik duvarının bağlantıları kabul edeceğinden emin olun: Apple > Sistem Tercihleri > Güvenlik ve Gizlilik > Güvenlik Duvarı > Güvenlik Duvarı Seçenekleri. Aşağıdakileri kabul etmek için "Tüm gelen bağlantıları engelle"'nin işaretini kaldırmanız ve muhtemelen "Gizli modu etkinleştir" seçeneğinin işaretini kaldırmanız gerekir: netbiosd, nfsd, rpc.lockd, rpc.rquotad, rpcbind, VBoxHeadless. Bir kaç  sırasında bilgisayarınızı yeniden başlatmanız ve durumu "Gelen bağlantılara izin ver" olarak değiştirmeniz gerekebilir. Kurulumdan sonra, güvenlik duvarı kuralları güncellendiğinden "Gelen tüm bağlantıları engelle ve "Gizli modu etkinleştir"'i tekrar kontrol edebilirsiniz.
 * Alternatif olarak NFS paylaşımlarını  ile kapatabilirsiniz

Debian ve Ubuntu

 * MediaWiki-Vagrant, bazı klasörleri ana bilgisayarla (bilgisayarınız) paylaşmak için NFS kullanır. Bilgisayarınızı "NFS sunucusu" olarak ayarlamanız gerekir, Ubuntu talimatlarına bakın. Debian'da, sudo apt-get install nfs-kernel-server çalışacaktır;  de kullanmanız gerekebilir. Debian'ın NFS sunucusunun   içine giriş yapılmadan başlamayacağını unutmayın.   "nfs" hizmetlerinin çalıştığını göstermiyorsa, muhtemelen olan budur. Ana dizininizi   da son satır olarak eklemek ve ardından /etc/init.d/nfs-kernel-server restart sizi almak için genellikle yeterli olacaktır bu tavuk ve yumurta sorununu aştı.


 * MediaWiki-Vagrant tarafından kullanılan NFS paylaşımları, Ubuntu üzerinde çalışıyor ve şifrelenmiş bir giriş dizini kullanıyorsanız olduğu gibi şifreli bir dizinden çalıştırılamaz. MediaWiki-Vagrant'ı çalıştırmak için:
 * çalıştırmadan önce MediaWiki-Vagrant dizinini parola edilmemiş bir birime (örn. ) taşıyın
 * Alternatif olarak NFS paylaşımlarını  ile kapatabilirsiniz
 * NFS kurulumu bazen takılıyor gibi görünüyor (ilk  "NFS paylaşılan klasörlerini bağlama" bölümünde asılı duruyor). Ana bilgisayarda NFS arka plan programının yeniden başlatılması yardımcı olur. (#5802 sayfasına bakın.)


 * Bağlantı noktalarının kullanımda olduğunu belirten bağlantı noktası yönlendirme hataları alıyorsanız, sanal kutuyu açmanız, sanal makineyi tamamen kaldırmanız ve tekrar denemeniz gerekebilir.

Fedora

 * Network 10.11.12.13 is not available.  çalıştırdıktan sonra,   aracılığıyla SELinux'u devre dışı bırakın veya SELinux kurulumunuzu düzeltin.
 * The provider for this Vagrant-managed machine is reporting that it is not yet ready for SSH.,  ile çalıştırdıktan sonra, açıkça belirttiğinizden emin olun sağlayıcıyı, örneğin   ve ardından   ile ayarlayın
 * mount.nfs: mount to NFS server '10.11.12.13:download-directory/vagrant' failed: RPC Error: Unable to receive alırsanız,  çalıştırın

Temel kullanım
Ana makinedeki vagrant komut satırı aracı, sanal makinenizi kontrol etmek için çeşitli alt komutlar sağlar. Zaten bir tane kullandınız: sanal makineyi açan vagrant up. Çoğu vagrant alt komutu gibi, MediaWiki-Vagrant dizininden veya alt öğelerinden birinden çalıştırmanız gerekir. İlk kez çalıştırdığınızda, Vagrant bir sistem görüntüsü alır ve MediaWiki'yi çalıştırmak için gerekli yazılımı kurar. Bu, geniş bant bağlantıda 1-2 saat CPU ve duvar saati süresi alabilir, ancak yalnızca bir kez gerçekleşmesi gerekir. Gelecekte vagrant up çalıştırdığınızda, makineyi açacaksınız.

vagrant ssh sanal makinede etkileşimli bir giriş kabuğu başlatır. Sizi vagrant kullanıcısı olarak oturum açar; root erişimi, parolasız sudo üzerinden kullanılabilir. Sanal makine tamamen bilgisayarınızda korumalı olduğundan, güvenlik için değil kolaylık için yapılandırılmıştır. Kural olarak, bir parola istemiyle karşılaştığınızda parola   olur.

Oturum açtığınızda, renkli bir MediaWiki şeridi ve birkaç yararlı komut hatırlatıcısı görmelisiniz.

phpsh komutu, MediaWiki'nin kod tabanı önceden yüklenmiş olarak etkileşimli bir PHP yorumlayıcısı başlatır. Bir kod yazıp 'enter' tuşuna bastığınızda kod hemen değerlendirilir. Bir çizgiyi '=' ile başlatırsanız, hesaplanan değeri güzel yazdırılır. Hızlı yardım için ? veya ek talimatlar için help start yazın.

klasörü, ana makinenizdeki MediaWiki-Vagrant klasörüne karşılık gelir ve içeriği paylaşılır. MediaWiki'nin kodu  içine kurulur. Bu, sanal makinenizde çalışan MediaWiki kodunu düzenlemek için ana makinenizdeki normal düzenleyici ortamınızı kullanmanıza olanak tanır.

Güncelleme
Git depolarınızı, harici kitaplıklarınızı ve veritabanı şemanızı güncel tutmak için vagrant git-update kullanın. Bu komut çalıştırmaya eşdeğerdir
 * 1) git pull içinde   ve tüm uzantı ve görünüm dizinleri
 * 2) En yeni Composer tarafından yönetilen kitaplıkların kullanılabilir olmasını sağlamak için composer update
 * 3) son olarak   betiği.

Ayrıca zaman zaman (veya yeni bir özellik için gerektiğinde) vagrant git-update içermeyen MediaWiki-Vagrant'ın kendisini güncellemelisiniz. Şunu çalıştırın:

… MediaWiki-Vagrant kök dizininizde. Bu, çalıştırdığınızda geçerli olacaktır:

Bu komutu git pull komutunu çalıştırdıktan hemen sonra veya bir süre sonra çalıştırabilirsiniz.

logout yazarak veya CTRL+D tuşlarına basarak sanal makinenizden çıkış yapın. Artık standart bir komut istemine geri döndüğünüze göre, sanal makineyi kapatmak için vagrant halt ve yeniden getirmek için vagrant up çalıştırabilirsiniz. vagrant destroy sanal makinenin dosyalarını silecek; örneğinizi bozulmamış bir duruma döndürmek istiyorsanız bu komut yararlıdır. (Yeni bir örnek sunmak için vagrant up ile devam etmeniz gerekir.)

Rolleri kullanma
MediaWiki-Vagrant varsayılan olarak temel bir MediaWiki örneği oluşturur, ancak bazı popüler MediaWiki uzantıları ve bağımlılıkları da dahil olmak üzere bir dizi tamamlayıcı yazılımı nasıl yapılandıracağını da bilir. Bu isteğe bağlı yazılım yığınları topluca 'roller' olarak bilinir ve MediaWiki-Vagrant bunları yönetmek için kolay ve güçlü bir komut satırı arabirimi sunar.

 $ vagrant roles list


 * 1) Kullanılabilir rollerin bir listesini görüntüler.

 $ vagrant roles enable role


 * 1) Bu makine için rolü açın.

 $ vagrant roles disable role


 * 1) Bu makine için rolü kapatın.

 $ vagrant provision


 * 1) Rolleri etkinleştirmeyi ve/veya devre dışı bırakmayı tamamladıktan sonra, değişikliğin geçerli olması için bunu çalıştırın.

Rollerin nasıl kullanılacağını gösteren kısa bir screencast izleyin. Roller bazı roller hakkında daha fazla bilgiye sahiptir.

Çok sayıda rol eklerseniz, Vagrant VM'nin kullanabileceği belleği artırmanız gerekebilir. Özellikle, "tarayıcı testleri" rolünü ayarlamak, belleğe aç bir görev olan, ruby Gem'in derlenmesini içerir; başarısız olursa sanal makinede bellek boşaltmayı veya bellek ayırmayı artırmayı deneyin.

MediaWiki-Vagrant'a rol eklemek istiyorsanız aşağıdaki Yazarlık rolleri bölümüne bakın.

centralauth
Özel dikkat gerektiren bazı roller vardır, centralauth rolü db geçişlerini kukla yoluyla otomatik olarak çalıştırmaz ve bunları elle çalıştırmayı gerektirir. Bu rolü sağlama konusunda hata alırsanız, uzantıda bu komut dosyasını çalıştırmayı ve çıktısını aldığınız hataları görmeyi deneyin:

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

Daha somut bir hata aldığınızda, muhtemelen buradaki göçlerden kaçınmanız gerektiğini bilmeniz gerekir:

extensions/CentralAuth/db_patches

wikidata
Basit bir  başarısız olmasını sağlar. İşte Vikiveri rolünü çalışır hale getirmek için eksiksiz bir komut seti.

$ 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 Vagrant'tan oturumu kapatın, sonra mutlu bir şekilde çalıştırabilirsiniz: $ vagrant roles enable wikidata $ vagrant provision

İlk hükmün şikayette bulunabileceğini, dolayısıyla bir başarısızlığa benzediğini unutmayın. Ancak, ikinci bir hüküm yürütürseniz, her şeyin yolunda gittiğini göreceksiniz.

Daha sonra tarayıcınızı http://wikidata.wiki.local.wmftest.net:8080/ ile yönlendirebilirsiniz. Yeni bir Vikiveri öğesi oluşturmak için http://wikidata.wiki.local.wmftest.net:8080/wiki/Special:NewItem yükleyin ve yeni bir özellik oluşturmak için http://wikidata.wiki.local.wmftest.net:8080/wiki/Special:NewProperty adresine gidin

Bir Vikiveri dökümü nasıl alınır
Vagrant komutu, varsayılandan farklı vikileri işlemez (T183274 sayfasına bakın). Vagrant kutusunun içindeki  betiğini çalıştırmanız gerekir.

İşte XML dökümlerini içe aktarma prosedürü.

$ mkdir wikidata_dumps $ cd wikidata_dumps $ wget https://dumps.wikimedia.org/wikidatawiki/latest/wikidatawiki-latest-pages-articles10.xml-p5264684p6341661.bz2 $wgWBRepoSettings['allowEntityImport'] = true;
 * parçalarını indirin. Örneğin:
 * Wikibase varlıklarının içe aktarılmasını etkinleştirin (T72898 sayfasına bakın). $Localsettings öğenize aşağıdaki satırı ekleyin:
 * Aşağıdaki BASH betiği işlemi izlemenize yardımcı olabilir. Bir  dosyasına yapıştırabilirsiniz. Vurgulanan satırın gerçek içe aktarma komut dosyasını çağırdığını unutmayın:

$ vagrant ssh $ cd /vagrant $ sudo chmod +x import_wikidata.sh $ ./import_wikidata.sh   $ tail -f wd_import.log
 * Vagrant kutusuna giriş yapın ve betiği çalıştırın. Hata ayıklama iletileri burada görünmelidir:
 * İlerleme günlüğünü Vagrant kutusunun dışından takip edebilirsiniz:

Yerel MediaWiki çekirdek kopyası
Bazen vagrant dizininin tamamını kaldırarak veya vagrant/mediawiki dizinini temizleyerek sıfırdan başlamak isteyebilirsiniz. Vagrant provizyon işlemini hızlandırmak için, vagrant/mediawiki içine kopyaladığınız MediaWiki çekirdeğinin yerel, güncellenmiş bir klonunu tutmayı düşünebilirsiniz.

örneğin, MediaWiki depolarını ~/projects/mediawiki/ içine kopyaladığınızı varsayarsak:

Klonlanmış depoları güncelleyin
Klonlanmış depoları olabildiğince sık/gerekli şekilde güncelleyin.

Veya tüm klonlanmış depoları güncellemek için:

Vagrant yeniden yüklemesi
If you change configuration (e.g. vagrant_ram, your VM/MediaWiki web site freezes, or you experience a problem, vagrant reload may resolve it. This will restart your guest. Some roles also require a reload, which should happen automatically.

When to enable roles
Enable roles only once you've successfully run your first vagrant up.

Note that vagrant destroy will not reset the enabled roles. Be sure to disable all roles after running vagrant destroy, then run vagrant up. Then you can re-enable any roles and run vagrant provision.

Vagrant behind proxy
If you are behind a proxy, Vagrant might throw some errors. You can install vagrant-proxyconf. It’s a plugin that allows your virtual machine to use specified proxies. This is a quick set up guide. For a detailed documentation you may check here.

Install the plugin:

To configure proxy settings for all softwares on all vagrant VMs, add following lines to your  (default  ).

Replace the addresses with the ip and port number of your proxy server. Use the config.proxy.no_proxy option to list out all the sites/domains for which you might want to bypass proxy. For example,

Now when you run a vagrant up, there shouldn’t be any warnings.

To disable the plugin set config.proxy.enabled to false or empty string (""). You can also disable it for specific applications. For example,

MediaWiki-Vagrant prep
You may want to consider using a shell script such as mw-vagrant-prep to prepare a directory for a MediaWiki-Vagrant install.

Provisioning
You can debug the provisioning process by running

PHP
You can debug PHP with Xdebug. Debugging in PHP is different from other client-side debugging. Your IDE listens for incoming connections, and when you access the server with a browser, a special header instructs PHP to connect to your IDE. See MediaWiki-Vagrant/Advanced usage for further information.

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#MediaWiki-Vagrant.

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