Lando, WordPress и ngrok… о боже!

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/)



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE