使用 Lando 進行本地 WordPress 開發(或 Docker 變得簡單)

已發表: 2019-11-22

今年早些時候,我寫了一篇關於如何使用 Docker 在 WordPress 中進行開發的指南。 我真的很喜歡在那篇文章上工作,看起來你也喜歡它(感謝你的所有評論和電子郵件)。 如果您沒有閱讀這篇文章,這裡有一個快速提醒:

Docker 是一個程序,它允許您將軟件打包到容器中並在虛擬機上運行它們。 Docker 的主要優勢在於其容器使用宿主操作系統提供的虛擬化環境運行,從而產生快速、輕量級的容器

Docker 的主要問題其配置繁瑣。 例如,要創建一個 WordPress 開發環境,我們需要啟動兩個(至少)服務:一個數據庫服務和一個 webapp 服務器。

在開頭評論的帖子中,我們看到了一個工具Docker Compose ,它允許定義我們必須為給定項目啟動的所有服務。 使用Docker Compose ,我們設法在一個文件docker-compose.yml中定義了我們項目的所有依賴項,並通過一個命令啟動它。

或者這就是我最初承諾的,因為我通過解釋如何配置另一個 Docker 服務來結束這篇文章,這將允許您在 WordPress 安裝中使用漂亮的域名。 如果您還記得,使用原始docker-compose.yml文件,我們的 WordPress 開發環境可以通過http://localhost:8080訪問。 但是如果我們想使用http://myplugin.local類的東西,我們必須設置一個可以解析域名的代理,並向我們docker-compose.yml添加更多設置……

我知道,我知道——啟動和運行起來非常複雜! 但是,一旦您正確設置了所有內容,就很容易了,對嗎? 不管怎樣,我決定向你介紹我的新朋友:蘭多。 他將幫助您在幾秒鐘內建立新的開發環境。

進入蘭多

我認為向 Lando 介紹自己的最佳方式是使用他文檔中的一句話:

Lando 適用於希望避免直接使用docker或 docker- docker-compose的內置受虐狂的開發人員。

蘭多的文檔

是的,顯然使用dockerdocker-compose是為受虐狂們準備的……所以讓我們看看如何快速且不復雜地指定在新 WordPress 項目上工作所需的所有服務。

安裝蘭多

為了能夠使用 Lando,您應該做的第一件事是(驚喜,驚喜!)將它安裝到您的計算機上。 安裝過程非常簡單,並且有很好的文檔記錄,但我們可以將其總結為以下步驟:

  1. Lando 需要 Docker。 如果您在 Linux 上,請先安裝 Docker 社區版。 如果您使用的是 Mac 或 Windows,Lando 的安裝程序本身將安裝 Docker(如果它尚不可用)。
  2. 為您的操作系統下載適當的 Lando 安裝程序。 例如,就我而言,我下載了文件lando-v3.0.0-rc.22.deb (我在 Linux 上)並使用dpkg安裝它。 對於 Mac,使用.dmg文件,對於 Windows,使用.exe
  3. 運行安裝程序並按照步驟操作。

就是這樣!

如何在 Lando 中創建一個新的 WordPress 項目

我們要做的第一件事是轉到我們要使用的項目文件夾(或為其創建一個新文件夾)。 在我的例子中,我將創建一個新的 WordPress 開發環境來開發我們的 Nelio A/B 測試插件,所以我將cd到我下載項目的文件夾: ~/dev/plugins/nelio-ab-testing

在那裡,我們必須創建 Lando 的配置文件。 該文件類似於docker-compose.yml ,但要簡單得多。 對於初學者,您甚至不需要編寫它——Lando 可以為您完成! 只需使用lando init即可創建新的開發環境:

 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 want

讓我們看看前面的指令做了什麼:

  • 首先,我們告訴 Lando 我們要使用lando init在當前目錄中創建一個新的配置文件。
  • 第一個參數 ( --recipe wordpress ) 告訴 Lando 我們要創建一個 WordPress 項目。 這將幫助 Lando 了解它必須設置的服務(數據庫、Web 服務器等)。
  • 然後我們表示我們希望 Lando 從 WordPress.org 下載 WordPress。
  • 使用--webroot wordpress ,我們可以告訴 Lando WordPress 的安裝位置。 由於我們剛剛指定 WordPress 必須從 WordPress.org 下載,並且下載的 zip Lando 將在解壓縮後創建一個wordpress文件夾,這就是我們用於 Lando 的位置。
  • 最後,我們指定項目的名稱(Lando 將使用它來生成友好的 URL 域)。

運行前面的命令後,您將看到 Lando 如何安裝所有內容並使用以下信息歡迎您:

 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

列出當前文件夾中的所有文件,您會看到 Lando 創建了一個名為.lando.yml的隱藏文件,其內容如下:

 name: my-site recipe: wordpress config: webroot: wordpress

非常簡單,對吧? 現在使用lando start啟動你的服務,你就可以開始了:

 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.site

恭喜! 您現在有一個新的 WordPress 安裝並運行。 如果我們現在轉到開始時列出的 URL 之一,您會發現您只需要按照以下步驟完成 WordPress 的安裝:

在國家/地區安裝 WordPress
在蘭多安裝 WordPress。

快速完成 WordPress 安裝

顯然,您可以使用上一屏的安裝程序完成 WordPress 的安裝。 但是還有一個更好的解決方案:使用 WP-CLI,我們在 Lando 中也提供了它。

要使用 WP-CLI 安裝 WordPress,我們首先需要在wordpress目錄中創建一個wp-config.php 。 要創建該文件,我們需要一些關於數據庫的信息:它在哪裡、它的用戶名和密碼等。所有這些信息都可以通過lando info找到,它返回以下 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', }, //... } ]

由於結果是一個 JSON 字符串,我們可以使用 Unix 的jq工具來檢索我們感興趣的特定值。例如,如果我們想知道我們數據庫的用戶,只需運行以下命令:

 $ lando info --service database --format json | jq -r ".[0].creds.user" wordpress

現在,讓我們利用這個命令並檢索我們使用 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=$WEBROOT

創建文件後,我們可以啟動安裝命令:

 # 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=$WEBROOT

完畢! 我們已經安裝並運行了 WordPress。

如何將我們的項目放入 WordPress

如果我們現在登錄 WordPress 並查看可用的插件,我們會發現我們的插件(在我的示例中為 Nelio A/B 測試)不存在。 那是因為 Nelio A/B 測試不在wordpress/wp-content/plugins/中。 為了解決這個問題,我們只需要在這個目錄中創建一個指向我們項目根目錄的軟鏈接:

 cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -

就是這樣!

現在由您決定更適合您需求的方法。 如果您想為每個項目創建一個 WordPress 安裝,只需按照我描述的步驟操作即可。 另一方面,如果您想要一個包含所有主題和插件的 WordPress 安裝,那麼只需創建一個新文件夾,在那裡初始化 Lando,然後將所有插件添加到wordpress/wp-content/plugins/中。

我希望你和我一樣喜歡這篇文章和工具。 我希望它能讓你的工作更輕鬆、更有趣。 自從使用 Lando 後,我完全離開了 Docker。

Victoire Joncheray 在 Unsplash 上的特色圖片。