Lando ile Yerel WordPress Geliştirme (veya Docker kolaylaştı)
Yayınlanan: 2019-11-22Bu yılın başlarında, WordPress'te geliştirmek için Docker'ın nasıl kullanılacağına dair bir kılavuz yazdım. Bu gönderi üzerinde çalışmaktan gerçekten keyif aldım ve görünüşe göre siz de beğenmişsiniz (tüm yorumlarınız ve e-postalarınız için teşekkürler). Yazıyı okumadıysanız, kısa bir hatırlatma:
Docker, yazılımları kapsayıcılarda paketlemenize ve bunları sanal makineler üzerinde çalıştırmanıza izin veren bir programdır. Docker'ın ana avantajı , kapsayıcılarının ana bilgisayar işletim sistemi tarafından sağlanan sanallaştırma ortamını kullanarak hızlı ve hafif kapsayıcılarla sonuçlanmasıdır.
Docker'ın sahip olduğu ana sorun , yapılandırmasının hantal olmasıdır . Örneğin, bir WordPress geliştirme ortamı oluşturmak için iki (en az) hizmet başlatmamız gerekir: bir veritabanı hizmeti ve bir web uygulaması sunucusu.
Başta yorum yapılan gönderide, belirli bir proje için başlatmamız gereken tüm hizmetleri tanımlamamıza izin veren Docker Compose adlı bir araç gördük. Docker Compose ile projemizin tüm bağımlılıklarını tek bir dosyada docker-compose.yml içinde tanımlamayı ve tek bir komutla başlatmayı başardık.
Ya da başlangıçta söz verdiğim buydu, çünkü WordPress kurulumlarınızda güzel alan adlarını kullanmanıza izin verecek başka bir Docker hizmetinin nasıl yapılandırılacağını açıklayarak gönderiyi kapattım. Hatırlarsanız, orijinal docker-compose.yml dosyasıyla, WordPress dev env'mize http://localhost:8080 üzerinden erişilebilir. Ancak http://myplugin.local gibi bir şey kullanmak istiyorsak, alan adlarını çözebilecek ve docker-compose.yml daha fazla ayar ekleyebilecek bir proxy kurmamız gerekiyordu…
Biliyorum, biliyorum - işleri yoluna koymak oldukça karmaşıktı! Ama her şeyi düzgün bir şekilde kurduğunuzda, oldukça kolaydı, değil mi? Her neyse, size yeni arkadaşım Lando'yu tanıtmaya karar verdim. Saniyeler içinde yeni geliştirme ortamları kurmanıza yardımcı olacak.
Lando'ya girin
Lando'ya kendinizi tanıtmanın en iyi yolunun, onun belgelerinden bir cümle kullanmak olduğunu düşünüyorum:
Lando, doğrudan
Lando'nun belgeleridockerveyadocker-composekullanmanın mazoşizminden kaçınmak isteyen geliştiriciler içindir.
Evet, görünüşe göre docker ve docker-compose kullanmak mazoşistler içindir… O halde yeni bir WordPress projesinde çalışmak için ihtiyaç duyduğumuz tüm hizmetleri hızlı ve sorunsuz bir şekilde nasıl belirleyebileceğimize bir bakalım.
Lando'yu yükleme
Lando'yu kullanabilmek için yapmanız gereken ilk şey (sürpriz, sürpriz!) bilgisayarınıza kurmaktır. Kurulum işlemi son derece basittir ve çok iyi belgelenmiştir, ancak bunu aşağıdaki adımlarda özetleyebiliriz:
- Lando, Docker'ı gerektirir. Linux kullanıyorsanız, önce Docker Community Edition'ı yükleyin. Mac veya Windows kullanıyorsanız, Docker henüz mevcut değilse Lando'nun yükleyicisinin kendisi yükleyecektir.
- İşletim sisteminiz için uygun Lando yükleyicisini indirin. Benim durumumda, örneğin,
lando-v3.0.0-rc.22.deb(Linux'tayım) dosyasını indirdim vedpkgile yükledim. Mac için.dmgdosyasını ve Windows için.exedosyasını kullanın. - Yükleyiciyi çalıştırın ve adımları izleyin.
Ve bu kadar!
Lando'da yeni bir WordPress Projesi Nasıl Oluşturulur
Yapmamız gereken ilk şey, çalışmak istediğimiz proje klasörüne gitmek (veya onun için yeni bir tane oluşturmak). Benim durumumda, Nelio A/B Test eklentimizi geliştirmek için yeni bir WordPress dev env oluşturacağım, bu yüzden projeyi indirdiğim klasöre cd göndereceğim: ~/dev/plugins/nelio-ab-testing .
Bir kez orada, Lando'nun yapılandırma dosyasını oluşturmalıyız. Bu dosya docker-compose.yml dosyasına benzer, ancak çok daha basittir. Yeni başlayanlar için yazmanıza bile gerek yok—Lando sizin için yapabilir! Yeni bir geliştirme ortamı oluşturmak için basitçe lando init kullanın:
lando init \ --recipe wordpress --source remote --remote-url https://wordpress.org/latest.tar.gz --webroot wordpress --name "Nelio AB Testing" # name the project as you wantBir önceki talimatın ne yaptığını görelim:
- İlk olarak, Lando
lando initkullanarak geçerli dizinde yeni bir yapılandırma dosyası oluşturmak istediğimizi Lando'ya söylüyoruz. - İlk parametre (
--recipe wordpress) Lando'ya bir WordPress projesi oluşturmak istediğimizi söyler. Bu, Lando'nun kurması gereken hizmetleri (veritabanı, web sunucusu, vb.) bilmesine yardımcı olacaktır. - Ardından Lando'nun WordPress.org'dan WordPress'i indirmesini istediğimizi belirtiyoruz.
-
--webroot wordpressile Lando'ya WordPress'in nereye kurulacağını söylüyoruz. Az önce WordPress'in WordPress.org'dan indirilmesi gerektiğini ve Lando'nun indireceği zip dosyasının açılmasından sonra birwordpressklasörü oluşturacağını belirttiğimizden, Lando için kullandığımız konum budur. - Son olarak, projemizin adını belirliyoruz (Lando bunu, kolay URL alanları oluşturmak için kullanacak).
Önceki komutu çalıştırdıktan sonra, Lando'nun her şeyi nasıl kurduğunu ve sizi aşağıdaki bilgilerle nasıl karşıladığını göreceksiniz:
NOW WE'RE COOKING WITH FIRE!!! Your app has been initialized! Go to the directory where your app was initialized and run `lando start` to get rolling. Check the LOCATION printed below if you are unsure where to go. Oh... and here are some vitals: NAME my-site LOCATION /tmp/plugin RECIPE wordpress DOCS https://docs.devwithlando.io/tutorials/wordpress.html Geçerli klasördeki tüm dosyaları listelediğinizde Lando'nun aşağıdaki içeriğe sahip .lando.yml adlı gizli bir dosya oluşturduğunu göreceksiniz:

name: my-site recipe: wordpress config: webroot: wordpress Son derece basit, değil mi? Şimdi lando start ve hazırsınız:
BOOMSHAKALAKA!!! Your app has started up correctly. Here are some vitals: NAME my-site LOCATION /tmp/plugin SERVICES appserver, database APPSERVER URLS https://localhost:32781 http://localhost:32782 http://nelio-ab-testing.lndo.site https://nelio-ab-testing.lndo.siteTebrikler! Artık yeni bir WordPress kurulumunuz var ve çalışıyor. Şimdi Lando'nun başlangıçta listelediği URL'lerden birine gidersek, WordPress kurulumunu tamamlamak için aşağıdaki adımları izlemeniz gerektiğini göreceksiniz:

WordPress Kurulumunu Hızla Tamamlama
Açıkçası, önceki ekranın yükleyicisini kullanarak WordPress kurulumunu tamamlayabilirsiniz. Ancak daha da iyi bir çözüm var: Lando'da da bulunan WP-CLI'yi kullanın.
WordPress'i WP-CLI ile kurmak için önce wordpress dizininde bir wp-config.php oluşturmamız gerekiyor. Bu dosyayı oluşturmak için veritabanımız hakkında bazı bilgilere ihtiyacımız var: nerede olduğu, kullanıcı adı ve şifresi vb. Tüm bu bilgiler, aşağıdaki JSON'u döndüren lando info aracılığıyla bulunabilir:
[ { service: 'appserver', urls: [ 'https://localhost:32781', 'http://localhost:32782', 'http://nelio-ab-testing.lndo.site', 'https://nelio-ab-testing.lndo.site' ], //... }, { service: 'database', //... creds: { database: 'wordpress', password: 'wordpress', user: 'wordpress', }, //... } ] Sonuçlar bir JSON dizisi olduğundan, ilgilendiğimiz belirli değerleri almak için Unix'in jq aracını kullanabiliriz. Örneğin, veritabanımızın kullanıcısını tanımak istiyorsak şunu çalıştırın:
$ lando info --service database --format json | jq -r ".[0].creds.user" wordpressŞimdi, bu komuttan yararlanalım ve WP-CLI kullanarak yapılandırma dosyasını oluşturmak için ihtiyacımız olan tüm ilgili verileri alalım:
# Find WordPress' directory (webroot entry in .lando.yml) WEBROOT=`grep webroot .lando.yml | cut -d: -f2 | xargs` # Retrieve database credentials using lando info DBNAME=`lando info --service database --format json | jq -r ".[0].creds.database"` DBUSER=`lando info --service database --format json | jq -r ".[0].creds.user"` DBPASS=`lando info --service database --format json | jq -r ".[0].creds.password"` DBHOST=`lando info --service database --format json | jq -r ".[0].hostnames[0]"` # Create WordPress' config file lando wp config create \ --dbname=$DBNAME \ --dbuser=$DBUSER \ --dbpass=$DBPASS \ --dbhost=$DBHOST \ --path=$WEBROOTDosyayı oluşturduktan sonra kurulum komutunu başlatabiliriz:
# Get WordPress' project name from .lando.yml PROJECT_NAME=`grep name .lando.yml | cut -d: -f2 | xargs` SITE_NAME=`echo "$PROJECT_NAME" | sed -e "s/-/ /g" | sed "s/\b[az]/\u&/g"` # Get one of the possible WordPress' URLs ando created (https) URL=`lando info --service appserver --format json | jq -r ".[0].urls" | grep -vw localhost | grep https: | cut -d'"' -f2` # Extract the domain from the previous URL (removing https) DOMAIN=`echo "$URL" | sed -e "s/^https:\/\///"` # Install WordPress lando wp core install --url=$URL --title="$SITE_NAME" --admin_user=admin --admin_password=password --admin_email=admin@$DOMAIN --path=$WEBROOTTamamlandı! WordPress zaten kurulu ve çalışıyor.
Projemizi WordPress'e nasıl koyabiliriz?
Şimdi WordPress'e giriş yaparsak ve mevcut eklentilere bir göz atarsak, eklentimizin (benim örneğimde Nelio A/B Testi) orada olmadığını görürüz. Bunun nedeni Nelio A/B Testinin wordpress/wp-content/plugins/ içinde olmamasıdır. Bunu düzeltmek için, bu dizinde projemizin köküne işaret eden bir yumuşak bağlantı oluşturmamız yeterlidir:
cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -Ve bu kadar!
İhtiyaçlarınıza en uygun yaklaşımı seçmek artık size kalmış. Her proje için bir WordPress kurulumu oluşturmak istiyorsanız, tarif ettiğim adımları uygulamanız yeterli. Öte yandan, tüm temalarınız ve eklentileriniz ile tek bir WordPress kurulumu istiyorsanız, o zaman yeni bir klasör oluşturun, Lando'yu orada başlatın ve tüm eklentilerinizi wordpress/wp-content/plugins/ içine ekleyin.
Umarım siz de bu gönderiyi ve aracı benim kadar beğenmişsinizdir. Ve umarım işinizi daha kolay ve eğlenceli hale getirir. Lando'yu kullandığımdan beri Docker'dan tamamen uzaklaştım.
Unsplash'ta Victoire Joncheray tarafından öne çıkan görsel.
