Lokalny programowanie WordPress z Lando (lub Docker uproszczony)
Opublikowany: 2019-11-22Na początku tego roku napisałem poradnik jak używać Dockera do programowania w WordPressie. Bardzo podobała mi się praca nad tym postem i wygląda na to, że Tobie też się podobał (dziękuję za wszystkie komentarze i e-maile). Jeśli nie przeczytałeś posta, oto krótkie przypomnienie:
Docker to program, który umożliwia pakowanie oprogramowania w kontenery i uruchamianie go na maszynach wirtualnych. Główną zaletą Dockera jest to, że jego kontenery działają przy użyciu środowiska wirtualizacji zapewnianego przez system operacyjny hosta, co skutkuje szybkimi i lekkimi kontenerami .
Głównym problemem Dockera jest to, że jego konfiguracja jest niewygodna . Na przykład, aby stworzyć środowisko programistyczne WordPress, musimy uruchomić dwie (co najmniej) usługi: usługę bazy danych i serwer aplikacji internetowej.
W poście komentującym na początku zobaczyliśmy narzędzie Docker Compose , które pozwala zdefiniować wszystkie usługi, które musimy uruchomić dla danego projektu. Dzięki Docker Compose udało nam się zdefiniować w jednym pliku docker-compose.yml wszystkie zależności naszego projektu i uruchomić go jednym poleceniem.
Albo to właśnie początkowo obiecałem, ponieważ zamknąłem post, wyjaśniając, jak skonfigurować kolejną usługę Docker, która pozwoliłaby Ci używać pięknych nazw domen w twoich instalacjach WordPress. Jeśli pamiętasz, z oryginalnym plikiem docker-compose.yml , nasze środowisko programistyczne WordPress byłoby dostępne pod http://localhost:8080 . Ale jeśli chcieliśmy użyć czegoś takiego jak http://myplugin.local , musieliśmy skonfigurować proxy , które mogło rozwiązywać nazwy domen i dodawać więcej ustawień do naszego docker-compose.yml …
Wiem, wiem — uruchomienie wszystkiego było dość skomplikowane! Ale kiedy wszystko było już poprawnie skonfigurowane, było to całkiem proste, prawda? W każdym razie postanowiłem przedstawić Wam mojego nowego przyjaciela: Lando. Pomoże Ci skonfigurować nowe środowiska programistyczne w kilka sekund.
Wprowadź Lando
Myślę, że najlepszym sposobem na przedstawienie się Lando jest użycie zdania z jego dokumentacji:
Lando jest dla programistów, którzy chcą uniknąć masochizmu polegającego na bezpośrednim używaniu
Dokumenty Landodockerlubdocker-compose.
Tak, najwyraźniej użycie docker i docker-compose jest dla masochistów… Zobaczmy więc, jak możemy szybko i bez komplikacji określić wszystkie usługi potrzebne do pracy nad nowym projektem WordPress.
Instalowanie Lando
Pierwszą rzeczą, którą powinieneś zrobić, aby móc korzystać z Lando, jest (niespodzianka, niespodzianka!) zainstalowanie go na swoim komputerze. Proces instalacji jest niezwykle prosty i bardzo dobrze udokumentowany, ale możemy go podsumować w następujących krokach:
- Lando wymaga Dockera. Jeśli korzystasz z systemu Linux, najpierw zainstaluj Docker Community Edition. Jeśli korzystasz z systemu Mac lub Windows, sam instalator Lando zainstaluje Docker, jeśli nie jest jeszcze dostępny.
- Pobierz odpowiedni instalator Lando dla swojego systemu operacyjnego. W moim przypadku na przykład pobrałem plik
lando-v3.0.0-rc.22.deb(jestem na Linuksie) i zainstalowałem go za pomocądpkg. W przypadku komputerów Mac użyj pliku.dmg, a w przypadku systemu Windows.exe. - Uruchom instalator i postępuj zgodnie z instrukcjami.
I to wszystko!
Jak stworzyć nowy projekt WordPress w Lando
Pierwszą rzeczą, którą musimy zrobić, to przejść do folderu projektu, z którym chcemy pracować (lub utworzyć dla niego nowy). W moim przypadku stworzę nowy WordPress dev env, aby rozwijać naszą wtyczkę Nelio A/B Testing, więc przeniosę się do folderu, w którym cd projekt: ~/dev/plugins/nelio-ab-testing .
Tam musimy stworzyć plik konfiguracyjny Lando. Ten plik jest podobny do docker-compose.yml , ale znacznie prostszy. Na początek nie musisz nawet tego pisać — Lando może to zrobić za Ciebie! Po prostu użyj lando init , aby stworzyć nowe środowisko programistyczne:
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 wantZobaczmy, co robi poprzednia instrukcja:
- Najpierw mówimy Lando, że chcemy utworzyć nowy plik konfiguracyjny w bieżącym katalogu za pomocą
lando init. - Pierwszy parametr (
--recipe wordpress) mówi Lando, że chcemy stworzyć projekt WordPress. Pomoże to Lando poznać usługi, które musi skonfigurować (baza danych, serwer WWW itp.). - Następnie wskazujemy, że chcemy, aby Lando pobrał WordPressa z WordPress.org.
- Za pomocą
--webroot wordpressinformujemy Lando, gdzie ma zostać zainstalowany WordPress. Ponieważ właśnie określiliśmy, że WordPress musi zostać pobrany z WordPress.org, a zip, który pobierze Lando, utworzy folderwordpresspo rozpakowaniu, jest to lokalizacja, której używamy dla Lando. - Na koniec podajemy nazwę naszego projektu (Lando użyje jej do wygenerowania przyjaznych domen URL).
Po uruchomieniu poprzedniego polecenia zobaczysz, jak Lando wszystko instaluje i wita Cię następującymi informacjami:
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 Wyświetl wszystkie pliki w bieżącym folderze, a zobaczysz, że Lando utworzył ukryty plik o nazwie .lando.yml z następującą zawartością:

name: my-site recipe: wordpress config: webroot: wordpress Niezwykle proste, prawda? Teraz uruchom swoją usługę za pomocą lando start i gotowe:
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.siteGratulacje! Masz już uruchomioną nową instalację WordPressa. Jeśli teraz przejdziemy do jednego z adresów URL, które Lando wymieniono na początku, zobaczysz, że wystarczy wykonać następujące czynności, aby zakończyć instalację WordPressa:

Szybkie kończenie instalacji WordPress
Oczywiście możesz dokończyć instalację WordPressa za pomocą instalatora z poprzedniego ekranu. Ale jest jeszcze lepsze rozwiązanie: użyj WP-CLI, który mamy również dostępny w Lando.
Aby zainstalować WordPress z WP-CLI, musimy najpierw utworzyć wp-config.php w katalogu wordpress . Aby utworzyć ten plik, potrzebujemy informacji o naszej bazie danych: gdzie się ona znajduje, jego nazwę użytkownika i hasło itp. Wszystkie te informacje można znaleźć poprzez lando info , który zwraca następujący JSON:
[ { 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', }, //... } ] Ponieważ wynik jest ciągiem JSON, możemy użyć narzędzia jq Unix, aby pobrać określone wartości, które nas interesują. Na przykład, jeśli chcemy poznać użytkownika naszej bazy danych, po prostu uruchom to:
$ lando info --service database --format json | jq -r ".[0].creds.user" wordpressTeraz wykorzystajmy to polecenie i pobierzmy wszystkie istotne dane, których potrzebujemy do zbudowania pliku konfiguracyjnego za pomocą WP-CLI:
# 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=$WEBROOTPo utworzeniu pliku możemy uruchomić polecenie instalacji:
# 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=$WEBROOTGotowy! Mamy już zainstalowanego i działającego WordPressa.
Jak umieścić nasz projekt na WordPressie
Jeśli teraz zalogujemy się do WordPressa i przyjrzymy się dostępnym wtyczkom, zobaczymy, że naszej wtyczki (w moim przykładzie Nelio A/B Testing) nie ma. To dlatego, że Nelio A/B Testing nie znajduje się w wordpress/wp-content/plugins/ . Aby to naprawić, musimy po prostu utworzyć miękki link w tym katalogu, który wskazuje na katalog główny naszego projektu:
cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -I to wszystko!
Teraz do Ciebie należy decyzja o podejściu, które lepiej odpowiada Twoim potrzebom. Jeśli chcesz stworzyć instalację WordPress dla każdego projektu, po prostu postępuj zgodnie z opisanymi przeze mnie krokami. Jeśli z drugiej strony chcesz mieć pojedynczą instalację WordPressa ze wszystkimi motywami i wtyczkami, po prostu utwórz nowy folder, uruchom tam Lando i dodaj wszystkie swoje wtyczki w wordpress/wp-content/plugins/ .
Mam nadzieję, że podobał Ci się ten post i narzędzie tak samo jak ja. I mam nadzieję, że dzięki temu Twoja praca będzie łatwiejsza i zabawniejsza. Odkąd używam Lando, całkowicie odszedłem od Dockera.
Polecane zdjęcie Victoire Joncheray na Unsplash.
