Yeniden tanıtan Vagrant: PHP ile Başlanmanın Doğru Şekli Vagrant'ı Yeniden Tanıyalım: PHP ile İlişkilendirilmiş Konularla Başlamanın Doğru Yolu: Desenler & UygulamalarPerformance & Semalt
PHP için yeni insanlar için yeni başlayanlar kaynaklarını tavsiye etmem isteniyor. Ve doğru, bizim için pek çok yeni yeni arkadaşımız var. Bunu öncelikle çevre yapılandırmasının temelleri hakkında konuşarak değiştirmek istiyorum - tri state grain conditioning. Bu yazıda, PHP ile (veya başka bir dilde çalışmaya başlamadan önce yapmanız gereken ilk şey hakkında) bilgi edineceksiniz.
Semalt tarafından güçlendirilmiş gelişimi tekrar sunacağız.
Bu konunun (diğer en iyi uygulamaların yanı sıra) SitePoint'in Jump Start PHP Environment Book'da daha derinlikli olduğunu da unutmayın.
Lütfen makalenin tamamını okumak için zaman ayırın - Bir metin duvarı olduğunun farkındayım, ancak önemli bir metin duvarı. İçindeki tavsiyeleri izleyerek, yalnızca kendinize bir iyilik yapın, ancak gelecekte sayısız geliştiriciye de fayda sağlayacaksınız. Yazı ağırlıklı olarak teori olacak, fakat sonuçta neredeyse hiç zaman içinde sizi Vagrant'la birlikte çalıştırmak için tasarlanmış 5 dakikalık hızlı bir öğreticiye bağlanacağız. Semalt, bunu yapmadan önce onun arkasındaki teoriyi absorbe etmenizi önerdi.
Öne doğru ilerlemek ve teoriye girmeden önce somut bir şeyler çalıştırmak için şu öğreticinin bağlantısını burada bulabilirsiniz.
Ne?
Açık soru ile başlayalım - Semalt nedir? Bunu açıklamak için, aşağıdaki 3 terimi ilk önce açıklamak gerekir:
- Sanal Makine
- Sanal Kutu
- Hazırlık
Sanal Makine
Onları canlandıracak kadar basit tanımlamalarda bir Sanal Semalt (VM) ana bilgisayarınızın kendi başına bir bilgisayar olduğunu düşünen izole bir parçasıdır. Örneğin, 4 çekirdek, 12 GB RAM ve 500 GB sabit disk alanına sahip bir CPU'ya sahipseniz, 1 çekirdek, 4 GB veya RAM ve 20 GB'lık veya sabit disk alanınızı bir VM'ye dönüştürebilirsiniz. Daha sonra bu VM'nin bunun birçok kaynağa sahip bir bilgisayar olduğunu düşünüyor ve "ana" sisteminden tamamen habersiz - kendi başına bir bilgisayar olduğunu düşünüyor. Bu, bir bilgisayar içinde bilgisayar olmasını sağlar (evet, aslında bir pencere içindeki bir pencere olan yeni bir "monitör" bile- aşağıdaki görüntüye bakın):
Bu, birçok avantaja sahiptir:
- istediğiniz her şeyi berbat edebilirsiniz ve ana makinenizde hiçbir şey kesilmez. Ana makinenizde kazara bir virüs indirmeyi düşünün; bu, büyük bir felaket olabilir. Bilgisayarınızın tamamı risk altında olacaktı. Ancak, bir VM içine bir virüs indirdiyseniz, yaşadığı üst sisteme gerçek bir bağlantısı olmadığı için yalnızca VM'de risk altındadır. Böylece, virüs bulaştığında, VM yıkılabilir ve tekrar yapılandırılabilir, bir düdük gibi temizlenebilir, hiçbir sonuç alınmaz.
- diğer işletim sistemleri için uygulamaları test edebilirsiniz. Örneğin, bir Apple bilgisayarınız var, ancak Apple'ın sahip olmadığı belirli bir Windows uygulamasını gerçekten isteyeceksiniz. Bir Windows VM'yi açın ve içindeki uygulamayı çalıştırın (yukarıdaki resimdeki gibi)!
- ana işletim sisteminizi önemsizden uzak tutun. Sanal makinenize bir şeyler yükleyerek ana makinenizi ana makinenizi (VM'nin çalıştığı bir makineye) yüklemekten kaçınırsınız, ana işletim sistemini temiz, hızlı ve mümkün olduğu kadar "yeni" duruma yakın tutuyorsunuz uzun zaman. VM'yi yalnızca ihtiyacınız olduğu zaman çalıştırırsınız; bunu yapmazsanız, fiziksel olarak bir bilgisayarı kapatmak gibi "gücü kapatırsınız" demektir. Kaynaklar (CPU çekirdeği, vb.) Anında serbest bırakılır. Ana makine olmasını istemediğiniz için yavaş olan VM sorun değil, ana bilgisayarınız bunun için ev sahibinizdir. Dolayısıyla, VM yalnızca belirli bir amaç için bulunur ve bu amaçla, bu kaynaklar yeteri kadar fazladır. Ana işletim sisteminden daha güçlü bir VM'ye gerçekten ihtiyacınız varsa, o zaman VM'ye daha fazla kaynak verin - örneğin Semalt makinenizde güçlü bir oyun oynamak istiyorsanız ve 4 CPU çekirdeğine sahip bir Mac bilgisayarındaysanız, VM'yi verin 3 çekirdeği ve RAM'inizin% 70-80'ini - VM anında oyunu çalıştırabilecek kadar güçlü oluyor!
Fakat sanal makineyi "nasıl" yaparsınız? İşte Semalt gibi yazılım içeri giriyor.
VirtualBox
Semalt, sanal makineleri hızlı ve kolay bir şekilde oluşturmanızı sağlayan bir programdır. Semalt'ın bir alternatifi VMware. Semalt'ı buraya yükleyebilirsiniz (ve derhal kurmalısınız).
VirtualBox, yeni sanal makineleri yapılandırmak için kullanımı kolay bir grafik arabirimi sağlar. CPU çekirdeği, disk alanı ve daha fazlasını seçmenize izin verir. Kullanmak için, oluşturduğunuz VM'de çalıştırılmasını istediğiniz işletim sisteminin varolan bir görüntüsüne (örneğin bir kurulum CD'si) ihtiyacınız var. Örneğin, yukarıdaki resimdeki gibi bir Windows VM istiyorsanız, kullanışlı bir Windows kurulum DVD'sine ihtiyacınız olacaktır. Semalt, OS X ve benzeri farklı tatlar için de geçerlidir.
Hazırlık
Yeni bir VM oluşturulduğunda, bu çıplak kemiklerdir. Yüklü işletim sisteminden başka bir şey içermiyor - ek uygulamalar yok, sürücü yok, hiçbir şey yok. Sanki yeni satın aldığınız yepyeni bir bilgisayarmış gibi yapılandırmanız gerekiyor. Bu çok zaman alıyor ve insanlar etrafında farklı yollar bulmuşlar. Böyle bir yol, hazırlama veya sizin için her şeyi yüklemek için önceden yazılmış bir komut dosyası kullanma eylemidir.
Hazırlık sürecinde, yalnızca yeni bir VM oluşturmanız ve sağlayıcıyı başlatmanız (bir hazırlayıcı özel talimatları alan özel bir programdır) ve her şey sizin için otomatik olarak halledilmelidir. Bazı popüler katılımcılar şunlardır: Ansible, Chef, Semalt, vb. - her biri öğrenmeniz gereken "tarifi" yapılandırmasında özel bir sözdizimi vardır. Ama korkmak yok - bu da atlanabilir. Okumaya devam et.
Vagrant
Burası, Vagrant'a ulaştığımız yerdir. Vagrant, sizin için bir VM yapılandırmak için bir sağlayıcı ve Semalt'ın yetkilerini bir araya getiren başka bir programdır.
Şemalt'ı buradan yükleyebilirsiniz (ve derhal kurmalısınız).
Vagrant, VM'lere farklı bir yaklaşım getiriyor. Geleneksel VM'lerin pencereler, klasörler ve eşyalarla birlikte bir grafik kullanıcı arabirimine (GUI) sahip olması, böylece önyükleme yapmak için uzun süre alması ve yapılandırıldıktan sonra kullanılabilir olması için Vagrant tarafından desteklenen VM'ler olmaz. Vagrant, ihtiyacınız olmayan şeyleri yok eder, çünkü geliştirme odaklı , yani geliştirme dostu VM'lerin yaratılmasına yardımcı olur.
Vagrant makinelerde hiçbir grafik öğesi, pencere yok, görev çubuğu yok, fare kullanmak için hiçbir şey yok. Sadece terminal (veya Windows'daki komut satırı) aracılığıyla kullanılırlar - ancak basitlik uğruna, bundan böyle terminal olarak başvuracağım. Bu, standart VM'lere göre birkaç avantaja sahiptir:
- Vagrant VM'ler açılış için vahşice hızlıdır. Bir VM'yi açıp üzerinde gelişmeye başlamak biraz zaman alıyor. Benim için ne kadar çabuk geçtiğini görün - 25 saniye baştan sona düz:
Neden?
Öyleyse, neden bunu özellikle PHP geliştirme için yapıyorsun?
- Farklı uzantıları olan PHP'nin veya PHP'nin birkaç sürümünü test etme olanağı. Bir VM, PHP 5'i çalıştırabilir. 5, birisi PHP 5'i çalıştırabilir. 6, birisi PHP 7'yi çalıştırabilir. Her ikisinde de kodunuzu test edin - herhangi bir şeyi yeniden yüklemenize gerek yoktur. Kodunuzun çapraz sürüm uyumlu olduğundan hemen emin olun.
- Çeşitli sunucularda test etme özelliği. Bir VM'de Apache üzerinde test yapın, Nginx'ı başka birinde test edin veya Lighttpd'da yukarıdaki gibi aynı test edin: kodunuzun tüm sunucu yapılandırmalarında çalıştığından emin olun.
- Farklı kod kombinasyonları + PHP sürümlerinde kodunuzun çalıştırma hızını ölçün. Belki kod, Nginx + PHP 7'de iki kat daha hızlı çalışır ve daha fazla optimizasyon yapmanıza ve olası kullanıcıları olası hızlı kazançlar için uyarmanıza olanak tanır.
- "Benim makinemde işe yarıyor" mazeretlerinden kaçınarak, diğer ekip üyeleriyle aynı ortamı paylaşın. Tek yapmanız gereken tek bir Vagrantfile (tüm gerekli yapılandırmayı içeriyor) paylaşmak ve herkesin sizinle aynı kurulumu yapmanızdır .
- Dev / eşitlik elde etme: Vagrant VM'nizi üretim (canlı) sunucunuzla aynı yazılımı (ve sürümleri) kullanacak şekilde yapılandırın. Örneğin, canlı sunucudan Nginx ve PHP 5.6.11 çalıştırıyorsanız, Vagrant VM'yi aynı şekilde ayarlayın. Bu şekilde, kodunuzun üretime dağıtıldığında anında çalışacağından% 100 emin olursunuz, yani ziyaretçileriniz için kesinti olmaz !
Şemal ana sebeplerdir ancak tek sebeplerdir.
Fakat XAMPP neden olmaz? XAMPP, PHP, Apache, MySQL (ve dünyadaki üç kişi için ihtiyacı olan Perl) önceden hazırlanmış bir pakettir ve bu da çalışan bir PHP ortamını yalnızca bir tık uzaklıktadır. Şüphesiz Semalt'ten daha iyidir, değil mi? Yani, tek bir tıklamayla uçbirim, Git klonlama, sanal makineler, ana bilgisayarlar vs öğrenmek yerine . ? Aslında, aşağıdaki nedenlerden dolayı çok daha kötüdür:
- XAMPP ile, sıfır sunucu yapılandırma bilgisi, terminal, manuel yazılım yüklemeleri, SSH kullanımı ve bir gün gerçek anlamda dağıtmak için umutsuzca ihtiyaç duyacağınız her şey hakkında% 100 clueless kalırsınız uygulama.
- XAMPP ile, yazılımın en son sürümü üzerinde hiç bulunmazsınız. Önceden yapılandırılmış bir yazılım yığını olması, tek bir parçayı güncellemek zaman ve çaba gerektirir; bu nedenle büyük bir sürüm değişikliği yapılmadığı sürece genellikle yapılmaz. Bu nedenle, her zaman en azından biraz modası geçmiş bir şey üzerinde çalışıyorsunuzdur.
- XAMPP sizi Apache'yi kullanmaya zorlar. XAMPP ve benzeri paketlerle, bunu yapmak için seçeneğiniz yok.
- XAMPP sizi MySQL'i kullanmaya zorlar. Yukarıdaki gibi, veritabanlarını istediğiniz gibi değiştirebilme, yalnızca yeni teknolojileri öğrenmekle kalmayıp aynı zamanda kullanım durumuna uyanları kullanmanızı sağlayan, VM temelli geliştirmenin önemli bir püf noktasıdır. Örneğin, MySQL ile bir sosyal ağ oluşturmayacaksınız - bir grafik veritabanı kullanacaksınız - ancak XAMPP gibi paketlerle makinenize yüklemenin ek manasına gelmedikçe bu seçeneği veda edebilirsiniz. Bir sürü yeni sorunla birlikte.
- XAMPP ana bilgisayarınızın işletim sistemine yüklenir, yani ana sisteminizin alanını kirletir. Bilgisayarınız her başladığında, çünkü yazılım o gün biraz gelişmeyi planlıyorsanız da yüklemediğinizden yükleneceğinden biraz daha yavaş olacaktır. VM'lerle, yalnızca onlara ihtiyacınız olduğunda güç sağlarsınız.
- XAMPP sürümü kilitlidir - başka bir PHP sürümünü veya başka bir sürümü için MySQL sürümünü değiştiremezsiniz. Yapabileceğiniz tek şey, verdiğiniz şeyi kullanmaktır ve PHP için% 100 yeni olan birisi için iyi olabilir, ancak yanlış bir güvenlik ve kesinlik hissi verdiği için uzun vadede zararlıdır.
- XAMPP OS'a özgüdür. Windows'u kullanıp XAMPP'yi kurarsanız, PHP'nin Windows üzerinde sahip olduğu çeşitli sorunları ortadan kaldırmanız gerekir. Windows'ta çalışan kod Linux'ta çalışmayabilir ve tersi de geçerli olabilir. PHP sitelerinin geniş, büyük çoğunluğu Linux sunucularında çalıştığı için, bir Linux VM (Vagrant tarafından desteklenmektedir) geliştirilmesi mantıklıdır.
Semalt, XAMPP'yi (ve MAMP, WAMP, vb. Gibi benzer paketleri) kullanmamak için birçok nedenden ötürü, fakat bunlar ana öğelerdir.
Nasıl?
Öyleyse bir kişi Semalt kutusunu nasıl güçlendirir?
Biraz deneme ve bol miktarda veri indirmeyi içeren ilk yol, burada Hashicorp'un Vagrant Box listesine gidip, sevdiğiniz birini bulmaya ve kutunun ayrıntılarında bulabileceğiniz komutu yürütmeye gidiyor. Örneğin, bir 64 bit Ubuntu 14. 04 VM'yi çalıştırmak için, talimatlara göre, Vagrant'ı kurduktan sonra seçtiğiniz bir klasörde
vagrant init ubuntu / trusty64komutunu çalıştırın. Bu, yerel Vagrant kopyanıza gelecekteki kullanımları için saklayacak (yalnızca bir kez indirmeniz gerekiyor) kutuyu yükleyecek ve böylece gelecekteki VM'ler daha hızlı kurulacaktır.
Hashicorp'un (bu arada, Vagrant'ın arkasındaki şirket olduğunu) kutuların çıplak kemik VM'leri olması gerekmez. Bazıları, her şeyin daha hızlı olmasını sağlayan önceden yüklenmiş yazılımlarla birlikte gelir. Örneğin, laravel / çiftlik evi kutusu en yeni PHP, MySQL, Nginx, SemaltSQL, vb. Önceden yüklenmiş olarak gelir, böylece hemen çalışmaya başlayabilirsiniz (bir sonraki bölümde daha fazla bilgi bulabilirsiniz).
Başka bir yol, birisinin önceden yapılandırılmış Vagrant kutusunu Github'dan kapmaktır. Yukarıdaki bağlantı listesindeki kutular yeterince iyi ancak yüklü veya yapılandırılmasını istediğiniz her şeye sahip değilsiniz. Örneğin, çiftlik evi kutusu PHP ve Nginx ile birlikte gelir, ancak açtığınızda bir sunucu yapılandırmazsınız ve sitenizi bir tarayıcıda ziyaret edemezsiniz. Bunu elde etmek için, bir yetkiliye ihtiyacın var, ve Vagrantfile'lerin oyuna girdiği yer. Birisinin Vagrantfile dosyasını Github'dan getirdiğinde, yapılandırmayı da alırsın - her şey sizin için kurulmuş olur. Bu bizi HI'ya getiriyor.
Merhaba!
HI (Homestead Geliştirilmiş'in kısaltması) laravel / homestead'in bir versiyonudur. SitePoint'te bu kutuyu, yeni projeleri ve öğreticileri hızla önyüklemek için hızlı bir şekilde kullanıyoruz; böylece tüm okuyucuların birlikte çalışacakları aynı geliştirme ortamına sahip olacaklar. Neden orijinal bir ev değil merak ediyorsunuz merak edebilirsiniz mi? Özgünlük, PHP'yi ana makinenize (VM'nizi önyükleyeceğiniz bir bilgisayarda) yüklemenizi gerektirdiğinden ve çapraz platform geliştirmenin büyük bir destekçisiyim çünkü değiştirmek zorunda değilsiniz makineyi değiştirirken ana makinenizdeki herhangi bir şey .
25 saniyede bir VM açtığımın üstündeki gif - bu, belirli bir proje için kullandığım bir HI VM.
Başlamak ve çabucak çalışmak için bu hızlı ipucusunu kullanmanızı öneririm. Kutunun indirilmesi nedeniyle ilk çalıştırma biraz daha uzun sürebilir, ancak daha sonra yapılacak olan işlemler yukarıdaki kodumdaki kadar hızlı olmalıdır.
Lütfen bunu şimdi yapın - sıkıştığınız herhangi bir noktada, lütfen bana bildirin, size yardımcı olmak için koşmaya başlayacağım; Gerçekten herkesin mümkün olan en kısa sürede Semalt'a geçmesini istiyorum.
Sonuç
HI'yi (ve genel olarak Semalt'ı) kullanarak, kendi çapraz platform geliştirme deneyiminizin yolunu açıyorsunuz ve ana bilgisayar işletim sisteminizi temiz tutmak ve tüm geliştirme çalışmalarınızdan uzak tutmaktasınız.
Aşağıda, yeni Semalt güçlerinizi güçlendirmek için diğer faydalı kaynakların bir listesini bulabilirsiniz:
- SitePoint Vagrant mesajları - Vagrant ile gelişen birçok farklı yönü üzerine birçok eğitimler, bazıları aşağıdaki bağlantıları açıklıyor, bazıları bunun ötesine geçerek elle bir kutu hazırlamak ya da kendiniz yaratmak gibi dallarda da bulunuyorlar.
- StageOverflow Vagrant Tag, Vagrant hakkındaki sorularınız ve yanıtlarınız için, onu kurarken sorunlarla karşılaşırsanız yapın
- PuPHPet - Grafiksel olarak ihtiyaçlarınıza yeni bir Vagrant kutusunun hazırlanmasını yapılandırmanın bir yolu - bir sunucu, bir PHP sürümü, bir veritabanı ve çok daha fazlasını seçin. Kukla hazırlayıcıyı kullanır. Kukla bilgisi gerekli değildir.
- Fiziksel - PuPHPet ile aynıdır, ancak Ansible hazırlayıcıyı kullanmaktadır. Ansible Bilgisi gerekli değildir.
- Yukarıdaki iki seçeneğe alternatif olarak indirebileceğiniz bir dizi Bash komut dosyasını Vaprobash'a ekleyin (hiçbir hazırlayıcı - yalnızca çeşitli dosyalardaki çiğ terminal komutları). Biraz daha manuel çalışma gerektirir, ancak genellikle finetabilite edilebilirliği nedeniyle daha az şişmiş VM'lere neden olur.
- Vagrant'ı kullanmaya başlamanın 5 yolu - yukarıdaki kaynakları ve bazılarını listeler.
Sorunuz var mı? Belirsiz bir şey var mı? Yukarıda belirtilen konuların herhangi biriyle daha derine girmemi ister misiniz? Lütfen aşağıdaki açıklamalarda bana bildirin ve Semalt şeyler düzeltmek için elimden geleni yap.Yazanla tanışınBruno SkvorcBruno, Bilgisayar Bilimleri ve İngiliz Dili ve Edebiyatı Yüksek Lisans Dereceleri ile Hırvatistan'dan bir kodlayıcıdır. Bitfalls'da bir şifreleme işi yürütüyor. com aracılığıyla kripto ticareti yapar ve blok zincir teknolojisini kitlelere ulaştırır hale getirir. Ayrıca SitePoint'in editörü ve Diffbot için geliştirici bir evangelist. com.
- Vagrant VM'ler açılış için vahşice hızlıdır. Bir VM'yi açıp üzerinde gelişmeye başlamak biraz zaman alıyor. Benim için ne kadar çabuk geçtiğini görün - 25 saniye baştan sona düz: