Laravel Vale Tam Olarak Nasıl Çalışır?


Geliştiriciler, proje gereksinimlerine ve iş akışına en uygun olanı görmek için yerel geliştirme ortamlarıyla uğraşmayı severler. 2016'daki lansmanından bu yana, Laravel Valet hızla popüler bir seçim haline geldi ve kullanım kolaylığı ve hızı nedeniyle Mac'imde yerel olarak geliştirirken başvurduğum ortam haline geldi. Ne yazık ki, Laravel Valet sadece Mac içindir. Windows kullanıyorsanız, şansınız kalmadı ancak Matt'in Windows'ta WordPress geliştirme konusundaki gönderisine göz atmak isteyebilirsiniz.

Valet, ortamı bir sanal makineye veya Docker'a boşaltmak yerine yığınını doğrudan Mac'inizde çalıştırmayı seçtiği için diğer geliştirme ortamlarından farklıdır. Homebrew kullanılarak kurulan yerel PHP, Nginx, MySQL ve DnsMasq kurulumlarına dayanır, bu da onu bu kadar hızlı yapan şeydir.

Bu yazıda, Valet'in nasıl çalıştığını ve Valet komutlarını çalıştırdığınızda arka planda neler olduğunu görmek için perde arkasına bakacağız.

Kurulum

Vale kurulum sürecinin bir parçası olarak yapmanız gerekenler:

  • Homebrew kullanarak PHP'yi kurun ( brew install php )
  • laravel/valet Composer paketini kurun ( composer global require laravel/valet )
  • valet install komutunu çalıştırın

Peki valet install komutu çalıştırıldığında ne olur? Pekala, perde arkasında neler olduğunu keşfetmek için bu makaledeki Valet GitHub deposunu kullanacağız.

Ana valet bash dosyası, bir valet komutu çalıştırdığımızda ilk çağrılacak koddur. Share komutu kullanılıyorsa veya cli/valet.php share çalıştırmak için PHP kullanıyorsa, temel olarak Ngrok'un çağrılmasını yönetir. cli/valet.php dosyasına baktığımızda bu dosyanın bazı kurulum işleri yaptığını ve diğer tüm Valet komutlarını kaydettiğini görebiliriz. Bir göz atarsanız, install komutunun bir sürü şey yaptığını görebilirsiniz:

 $app->command('install', function () { Nginx::stop(); Configuration::install(); Nginx::install(); PhpFpm::install(); DnsMasq::install(Configuration::read()['tld']); Nginx::restart(); Valet::symlinkToUsersBin(); output(PHP_EOL.'<info>Valet installed successfully!</info>'); })->descriptions('Install the Valet services');

Nginx'ten başlayarak Laravel Valet'in nasıl kurulduğunun daha ilginç kısımlarından bazılarına göz atacağız.

Nginx

Nginx sınıfının kurulum yöntemlerine bakarsanız, /usr/local/etc/nginx/nginx.conf adresinde global bir nginx.conf oluşturduğunu görebilirsiniz. nginx.conf , tüm Vale sitelerine hizmet vermek için bu yapılandırma kullanıldığından önemli olan bir valet.conf dosyası içerir. Valet.conf dosyasına baktığınızda, valet.conf , tahmin edebileceğiniz gibi FastCGI kullanarak PHP'ye istekleri proxylediğini fark edeceksiniz:

 location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass "unix:VALET_HOME_PATH/valet.sock"; fastcgi_index "VALET_SERVER_PATH"; include fastcgi_params; fastcgi_param SCRIPT_FILENAME "VALET_SERVER_PATH"; }

VALET_SERVER_PATH , Valet kurulumunun kök dizininde bulunan server.php dosyasına çözümlenir. Nginx'i tek bir sankon ile yapılandırmak ve tüm istekleri server.php dosyasına iletmek, Laravel Valet'in benzersiz bir yönünü ele aldığı için önemlidir: sürücüler.

sürücüler

Laravel Vale'deki "Sürücüler" kavramı oldukça dahiyane bir fikir. Düzgün çalışması için farklı sitelerde Nginx yapılandırmalarını yapılandırmak yerine, bir "sürücü", belirli bir isteğin ne tür siteyi aradığını ve nasıl sunulacağını belirlemek için Valet tarafından kullanılan bir PHP dosyasıdır. Valet'in kutudan çıktığı gibi bir dizi popüler uygulama için sürücüleri vardır (örn. Laravel, WordPress, Drupal, Statamic, Craft, vb.).

Bir sürücü dosyası, aşağıdakileri belirlemek için üç yöntem kullanarak çalışır:

  1. Bu sürücünün mevcut isteği yerine getirmek için kullanılması gerekiyorsa
  2. İstek statik bir dosya içinse
  3. Sitenin ön denetleyicisine giden yol (genellikle index.php )

Örneğin, WordPressValetDriver , bir wp-config.php dosyasının varlığını kontrol etmek için serves() yöntemini kullanır:

 /** * Determine if the driver serves the request. * * @param string $sitePath * @param string $siteName * @param string $uri * @return bool */ public function serves($sitePath, $siteName, $uri) { return file_exists($sitePath.'/wp-config.php') || file_exists($sitePath.'/wp-config-sample.php'); }

server.php dosyasına geri döndüğünüzde, bu dosyanın bir isteği işlemek için birkaç şey yaptığını görebilirsiniz:

  • Valet config.json dosyasını (TLD'yi ve valet park komutu tarafından oluşturulan tüm yolları içeren) yükler.
  • Site yolunu, adını, URI'yi vb. oluşturur.
  • Daha sonra bu bilgiyi, statik bir dosya sunmak veya ön denetleyiciyi yüklemek için kullanan ilgili sürücüye iletir.

İlgileniyorsanız, sürücünün bir isteği işlemek için nasıl kullanıldığını görmek için ValetDriver sınıfına bakabilirsiniz.

DnsMasq

Valet'in bir başka güzel özelliği de *.test .test etki alanındaki tüm istekleri DnsMasq kullanarak yerel makinenize proxy olarak göndermesidir. Bu, /etc/hosts hosts'u sitelerinizi 127.0.0.1 yönlendirmek için güncelleme konusunda artık endişelenmenize gerek olmadığı anlamına gelir.

DnsMasq sınıfından, bunu /etc/resolver içinde TLD adıyla (varsayılan olarak test ) ve içerikle bir dosya oluşturarak yaptığını görebiliriz:

 nameserver 127.0.0.1

Bu, Mac'e *.test etki alanları için ad sunucusu olarak yerel DnsMasq kurulumumuzu kullanmasını söyleyecektir. Ardından, ~/.config/valet/dnsmasq.conf yüklemek için ana DnsMasq yapılandırmasını günceller. Son olarak, aşağıdaki içerikle valet dnsmasq.conf dosyasını oluşturur:

 address=/.test/127.0.0.1 listen-address=127.0.0.1

DnsMasq artık *.test etki alanları için tüm istekleri Valet'e gönderecek şekilde yapılandırılmıştır.

Sana doğru

Vale'nin iç donanımının perde arkasına bir göz atmış olsak da, hala burada ele almadığımız birçok Vale özelliği var:

  • Kendinden imzalı sertifikalar kullanarak sitelerin "güvence altına alınması"
  • Ngrok kullanarak siteleri paylaşma
  • Siteye özel env değişkenleri için .valet-env.php kullanma

Bu özelliklerin nasıl uygulandığını görmek için Laravel Valet kaynak koduna bakmaya devam etmenizi tavsiye ederim. Aslında, Valet gibi araçları kullandığınızda perde arkasında neler olup bittiğini anlamanın bir geliştiricinin işinin önemli bir parçası olduğunu düşünüyorum, sadece sizi daha bilgili bir geliştirici yapmak için değil, aynı zamanda bir şeyler olduğunda sorunları ayıklamaya daha iyi hazırlanabilmeniz için yanlış gitmek. Sonuçta bilgi güçtür.

Laravel Vale kullanıyor musunuz? Kullandığınız açık kaynaklı araçların kaynak koduna hiç baktınız mı? gerektiğini düşünüyor musun? Yorumlarda bize bildirin.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

Divi's Theme Builder ile Özel Global Başlık Nasıl Oluşturulur

Artık Tema Oluşturucu burada olduğuna göre, web sitenizi A'dan Z'ye kurmanıza yardımcı olacak yeni eğitimlere dalmak için sabırsızlanıyoruz. Buna Divi'nin yerleşik seçeneğini kullanarak özel başlıklar oluşturma da dahildir. Bu eğitimde Divi's Theme Builder'ı kullanarak global bir başlık oluşturmaya odaklanacağız. Bu sayfaya veya gönderiye farklı bir başlık atamadıysanız, web sitenizin her yerinde genel bir başlık görünecektir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir