Ngrok в laravel homestead своими руками

19 февраля Asvae

Что такое Ngrok? Не спешите лететь по ссылке. Я сейчас расскажу.

Это своеобразный туннель к локалхосту. Допустим, у вас есть локальный проект, к которому вы обращаетесь следующим образом http://my-project.local. Ngrok позволяет другим человекам из интернета открыть ту же страницу, забив адрес http://my-project.ngrok.com.

Первый и главный вопрос:

Нафига?

  1. Очень легко и просто показать заказчику полуфабрикат/прототип, и даже поправить что-нибудь на ходу.
  2. Полезно для совместной разработки.
  3. Можно хостить что-нибудь мелкое (извращение).

Понятно, что можно использовать тестовый сервер, но это лишняя морока. Ngrok — легковесное решение.

Как?

Инструкцию привожу для среды homestead под windows. На других системах установка аналогично беспроблемна.

Первым делом, зарегистрируйтесь на сайте и раздобудьте authtoken.

Теперь отыщите файл Homestead.yaml:

sites:
    - map: my-project.local
      to: /home/vagrant/my-project/public

    - map: my-project.ngrok.local
      to: /home/vagrant/my-project/public

Фактически, мы маппим одну и ту же папку на два разных хоста. Прикол здесь в том, что только my-project.local указан в hosts. И, как следствие, my-project.local браузер будет искать локально, а за my-project.ngrok.local полезет в сеть.

Теперь нужно поставить ngrok на homestead. Можно это сделать консольно, но там немного старая версия.

sudo apt-get install ngrok-client

С другой стороны, никто не мешает просто скачать архив, как советует инструкция по установке.

Успешно поставив сабж и написав в консоли ngrok -authtoken [authtoken] -subdomain my-project 80, вы должны увидеть примерно следующий текст:

Tunnel Status                 online                          
Version                       1.6/1.7 
...

Теперь ваш сайт будет доступен онлайн по адресу my-project.ngrok.com. Но каждый раз писать такую здоровую команду муторно. Сделаем алиас. Открываем файлик homestead/aliases, дописываем туда:

function ngroka() {
    if [[ "$1" ]]
    then
        ngrok -authtoken [authtoken] -subdomain $1 80
    else
        echo "Error: missing required parameter."
        echo "Usage: ngrok subdomain."
    fi
}

Не забудьте заменить [authtoken] на, собственно, токен.

Заключение

Вот и все. ngroka my-project в консоли — и ваш проект доступен заказчику/коллеге/тентаклю из соседней галактики.