Lando, WordPress и ngrok… о боже!
5 апреля 2022 г.Я использую [Lando] (https://lando.dev) уже более 2 лет и полюбил его. Действительно, это дает мне возможности Docker Compose без необходимости узнавать все о Docker Compose.
Единственное, чего мне не хватало в Ландо, так это возможности поделиться своей работой с другими. Одно дело быстро развернуть локальную среду разработки и написать новый плагин WordPress. Совсем другое дело — раскрутить где-нибудь промежуточную область, чтобы я мог установить плагин и показать его.
Особенно, если он находится в стадии разработки и еще не готов к полномасштабному тестированию. Несколько месяцев назад один из моих лучших друзей [Кейт Кейси] (https://caseysoftware.com) пошел работать в компанию ngrok, и от одного только его имени у меня в голове загорелась лампочка. Я совершенно забыл о ngrok, пока он не упомянул об этом, но это идеальное решение этой проблемы.
ngrok — это швейцарский армейский нож для строительства тоннелей. Если вы хотите поделиться своей средой разработки, как я, протестировать веб-перехватчики или построить ssh-туннели, это инструмент для работы. (Честно говоря, это лишь малая часть того, на что способен ngrok, но у нас нет времени вникать во все это.)
А пока давайте просто заставим эти три замечательных инструмента хорошо работать вместе, чтобы мы могли легко обмениваться локальными средами разработки.
нгрок
Во-первых, вам нужен ngrok, и вам понадобится учетная запись ngrok. Бесплатный план подойдет большинству из нас; однако, если вы делаете это профессионально, я настоятельно рекомендую базовый план, поскольку он дает вам такие приятные вещи, как возможность использовать свои собственные доменные имена. Вы можете узнать больше об их планах и ценах на [странице цен ngrok] (https://ngrok.com/pricing).
Создайте учетную запись, а затем загрузите версию ngrok для вашей операционной системы. Я взял версию для Linux, так как хочу установить ее на WSL. Я почти уверен, что это также будет работать на macOS, и я знаю, что это будет работать на Linux.
После того, как вы загрузили его, установите его. Для меня это означало удаление файла из архива и перемещение полученного двоичного файла в /usr/local/bin
.
Вам также потребуется подключить локальную установку к вашей учетной записи. Вы делаете это с помощью команды authtoken
ngrok.
``` ударить
$ ngrok authtoken your_token_goes_here
Не волнуйтесь; найти свой токен очень просто; ваш токен вместе с полной командой находится на странице настройки ngrok после входа в систему. Все, что вам нужно сделать, это скопировать и вставить его. (это очень удобно для разработчиков и граничит с управлением.)
Поздравляем, теперь ngrok готов к работе.
Вордпресс
WordPress временами непостоянен, и это один из таких случаев. Чтобы все работало правильно с ngrok, нам нужно не только указать ngrok передать нам заголовок хоста, но и убедиться, что WordPress правильно с ним работает. Поскольку технически трафик не будет поступать с вашего домена .lndo.site
, нам нужно убедиться, что WordPress все еще будет работать.
Я нашел самый простой способ сделать это с помощью заброшенного плагина [WP-Ngrok-Local] (https://github.com/jonathanbardo/WP-Ngrok-Local). В репозитории WordPress есть пара плагинов, но у меня были трудности с ними, а этот работал из коробки. Тем не менее, поскольку его нет в репозитории плагинов, вам придется проделать еще немного работы, чтобы установить его. Самый простой способ — просто клонировать репозиторий в каталог плагинов. (если это утверждение не имеет смысла, вы читаете не ту статью.)
После того, как вы установили и активировали этот плагин, вы готовы к следующему шагу.
Ландо
Я предполагаю, что у вас уже есть проект Lando с установленным и запущенным WordPress. Если нет, ознакомьтесь с [Как заставить Lando работать внутри WSL2] (https://blog.calevans.com/2020/06/18/making-lando-work-inside-wsl2/), чтобы настроить и запустить Lando внутри WSL. Затем ознакомьтесь с [документами Ландо по рецептам] (https://docs.lando.dev/config/recipes.html), чтобы ускорить установку WordPress. Если вы хотите клонировать существующий сайт WordPress в проект Lando, ознакомьтесь с моим проектом wpLandoClone,, который дает вам инструменты для этого.
После того, как у вас есть рабочий WordPress внутри Lando с установленным и активированным плагином, перечисленным выше, нам понадобится еще одна часть головоломки, share.sh
.
«share.sh» — это простой bash-скрипт, который извлекает необходимые данные из «lando info», анализирует их и использует для запуска ngrok.
``` ударить
!/usr/bin/env bash
установить -eo pipefail
Поделиться сайтом WordPress на базе Lando с помощью ngrok
Кэл Эванс cal@calevans.com
Этот сценарий должен выполняться ВНЕ среды Lando, но в каталоге Lando.
Он использует информационную команду Lando, которая недоступна внутри контейнера Lando.
Это предназначено для работы с рецептом WordPress. Чтобы WordPress работал красиво
вы должны установить плагин на https://github.com/jonathanbardo/WP-Ngrok-Local
После того, как вы его установили и активировали, запустите этот скрипт, а затем посетите
URL-адрес https, который он показывает.
Когда вы закончите, нажмите CTRL+C, чтобы выйти.
Проверяем нормальное окружение
если ! команда -v ngrok &> /dev/null
тогда
эхо ngrok не установлен.
echo Посетите https://ngrok.com/download и загрузите версию для своей ОС.
выход 1
фи
если ! команда -v jq &> /dev/null
тогда
Эхо jq не установлено.
echo Посетите https://stedolan.github.io/jq/download/ и загрузите версию для своей ОС.
echo Если он у вас есть, вы обычно можете использовать менеджер пакетов для его установки.
выход 2
фи
Получить URL-адрес https от Lando
FULL_SITE_NAME=lando info --format json | jq '.[0].urls[-1]' | тр '"' ' '
Удаляем протокол
SITE_NAME=echo $FULL_SITE_NAME | awk -F '//' {'напечатать $2'}
SITE_NAME=${SITE_NAME::-1}
Позвонить в нгрока
ngrok http -host-header=$ИМЯ_САЙТА $FULL_ИМЯ_САЙТА
Загрузите share.sh
и поместите его где-нибудь в каталог вашего проекта Lando. У меня обычно есть каталог /scripts
только для таких вещей.
Затем снаружи контейнера Lando выполните share.sh
. Если все на месте, он сделает все остальное.
ПРИМЕЧАНИЕ. share.sh
не будет работать внутри контейнера Lando. нгрок будет. Вы можете установить ngrok внутри контейнера и запустить его вручную, и он отлично работает. share.sh
, однако, полагается на команду lando info
, поэтому работает только извне.
Сердцем share.sh
является эта строка.
ngrok http -host-header=$SITE_NAME $FULL_SITE_NAME
Когда переменные развернуты, это будет выглядеть примерно так:
ngrok http -host-header=dev.ucdc.lndo.site https://dev.ucdc.lndo.site
Это волшебство. Запустите его, и вы получите экран, который выглядит примерно так.
fЗакрыть()
Это решение работает, и это не слишком большая проблема. В одном из моих проектов у меня есть команда загрузить, а затем активировать плагин, встроенный в мой файл .lando.yml
, чтобы он выполнялся автоматически каждый раз, когда я (пере)собираю проект.
Я попытался добавить его в раздел «tooling» файла «.lando.yml». Это не сработало. Я не тратил время на расследование, чтобы понять, почему это не сработало; Я только что узнал, что это не сработало.
Честно говоря, единственный способ, которым это могло бы быть лучше, - это быть частью самого Лэндо. У Lando есть команда lando share
, но все, что она делает, это сообщает вам, что localtunnel.me
прекратил свое бесплатное обслуживание. Мой следующий проект Lando — изучить подключаемый модуль общего доступа и посмотреть, смогу ли я заставить его работать с ngrok. Держу пари, что смогу.
Также опубликовано [Здесь] (https://blog.calevans.com/2022/03/29/lando-wordpress-and-ngrok-oh-my/)
Оригинал