В этом туториале вы сделаете небольшой супер-стабильный сайт. Если на сайте возникнет страшная ошибка, systemd запустит его заново. И даже если весь сервер выключат и включат заново, то systemd сам снова запустит ваш сайт.
Прежде чем приступить
Этот туториал требует некоторых знаний:
- Как запускать команды из консоли.
- Как подключиться к серверу по SSH.
- Что такое веб-сервер.
1. Загрузите сайт на сервер
В качестве сайта выступит одиночный HTML-файлик. Зайдите на сервер с помощью ssh, перейдите в папку /opt и скачайте заготовку сайта:
# cd /opt # git clone https://github.com/devmanorg/phones-shop # cd phones-shop
Почему /opt?
Куда класть код — это старый и холиварный вопрос. Столько времени прошло, сколько форумов исписано, а одного простого ответа так и нет…
Вам точно не стоит класть код в домашний каталог суперпользователя /root/ . Туда вы обычно попадаете, заходя на сервер по ssh. Если положите код в /root , то не избежите приключений с настройкой прав пользователей. Операционная система оберегает домашний каталог рута от посягательств других пользователей и запрещает им чтение файлов оттуда. Это станет проблемой при запуске Nginx, Gunicorn и других программ, часто работающих под другим пользователем.
Изучение ASP.NET Core с нуля / Разработка веб проекта на Core MVC (.NET 6)
Я советую класть код в папку /opt// . Это место специально выделено в ОС для программ, что собираются из исходников и живут обособлено от каталогов bin , lib и прочих.
Затем проверьте, что файлы скачались командой ls :
2. Запустите HTTP-сервер
Сам по себе файл в интернет не попадёт. Если набрать в браузере ip вашего сервера, он растеряется и не поймёт, что ему делать. Нужен кто-то, кто скажет серверу, какие файлы отдавать в такой ситуации. Этим кем-то и будет веб-сервер. В Python есть простое решение для таких случаев, называется http.server . Запускается он такой командой:
# python3 -m http.server —bind 164.90.239.48 —directory /opt/phones-shop 80
❕Вместо 164.90.239.48 подставьте ip или домен своего сервера.
Проверьте, заработал ли ваш сайт. Зайдите на него через браузер:
Сайт работает! Но всё ли так гладко, как кажется.
Теперь выйдите из терминала. Просто закройте окошко терминала или введите exit и нажмите Enter . Сайт перестал работать
Всё потому что вы закрыли ssh-соединение, и теперь сервер остановил работу веб-сервера.
На каждое соединение сервер тратит свои мощности. Мощности у него ограниченные. Поэтому сервер всегда стремится сэкономить их, закрывая неработающие соединения. А оставлять открытые соединения небезопасно.
Нужно запустить HTTP-сервер в фоновом режиме работы. Тогда он продолжит работать, даже если вы выйдете с сервера.
3. Запустите HTTP-сервер в фоне
Программы, которые работают в фоновом режиме, называются демонами или программами в режиме демона.
Утилита systemd как раз умеет демонизировать программы, то есть запускать их в фоне. Но сначала systemd нужно настроить: сказать ему что и как демонизировать. Это делается в специальных файлах с инструкциями для systemd. Такие файлы называют юнитами.
Онлайн магазин с оплатой на Python / Изучение Flask за час!
Юниты хранятся в папке /etc/systemd/system . Перейдите в неё и создайте новый файл с названием phones-shop.service . Это и будет ваш юнит.
Запишите в него этот текст:
[Service] ExecStart=python -m http.server —bind 164.90.239.48 —directory /opt/phones-shop 80
❕Не забудьте заменить ip на свой.
Все юниты выглядят примерно вот так:
[Название секции в квадратных скобках] имя_переменной=значение
В переменной ExecStart юнит ждёт команду, которую systemd должен запустить.
Теперь запустите этот юнит:
# systemctl start phones-shop
Failed to start phones-shop.service: Unit phones-shop.service has a bad unit file setting. See system logs and ‘systemctl status phones-shop.service’ for details.
Авторский перевод: Не удалось запустить файл phones-shop.service: в нём неверные настройки.
Запустите команду systemctl status phones-shop.service , чтобы узнать что случилось.
Давайте узнаем! Запустите команду systemctl status phones-shop :
Юнит явно пишет всё о себе: Loaded: bad-setting (Reason: Unit phones-shop.service has a bad unit file setting.) . Тут снова написано о той же ошибке, что была при запуске юнита.
Строка Active: inactive (dead) значит что юнит неактивен/“мёртв”. То есть его либо не запускали, либо запустили, но он поломался. Чуть ниже виден трейсбек поломки:
/etc/systemd/system/phones-shop.service:2: Executable «python» not found in path «/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin»
Значит, что systemd не смог найти python в папке /usr/bin/ .
Действительно, в этой папке есть только python3 и python3.8 .
Эту проблему легко исправить. Замените в настройках python на python3 :
[Service] ExecStart=python3 -m http.server —bind 164.90.239.48 —directory /opt/phones-shop 80
Если вы набрали не тот ip
вам напишут с такой просьбой запустить systemctl daemon-reload :
Warning: The unit file, source configuration file or drop-ins of phones-shop.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
Так и поступите.
Повторите запуск юнита:
# systemctl start phones-shop
Терминал молчит. Это хороший знак? Снова проверьте состояние файла:
# systemctl status phones-shop
Самая важная здесь строка Active: active (running) . Это значит, что файл запущен. Обратите внимание, что и текст выделен зелёным, а в прошлый раз был красным. Это хороший знак.
Зелёный цвет — это хороший знак.
Проверьте сайт в браузере. Убедитесь, что сайт работает. Затем закройте терминал или наберите команду exit и затем Enter .
# exit logout Connection to 164.90.239.48 closed.
Проверьте сайт в браузере. Теперь он должен работать даже если вы закрыли терминал.
4. Добавьте в автозапуск
Сервер иногда приходится перезапускать из-за обновления ПО и изменения настроек. Иногда владелец сервера, который вы арендуете, сам его выключает на пару минут, чтобы обносить софт, закрыть свежие уязвимости, и самостоятельно перезапускает сервер. Такое бывает даже на крупных хостингах, они отключают сервер всего на пару секунд и прислают письма с извинениями на почту.
Проверьте, что станет с сайтом если сервер перезагрузится. Перезагрузите сервер с помощью команды:
# reboot now
Проверьте сайт в браузере:
Сайт снова перестал работать
Это потому что вы не сказали systemd запускать ваш файл, если сервер включается или перезагружается. Это можно исправить:
[Service] ExecStart=python3 -m http.server —bind 164.90.239.48 —directory /opt/phones-shop 80 [Install] WantedBy=multi-user.target
Строка [Install] Означает блок настроек при запуске юнита. В этом блоке мы добавили одну настройку: WantedBy=multi-user.target .
Таргет — это группа процессов, которые запустятся вместе, пачкой. multi-user.target — это таргет, который запускается сразу при старте сервера. Получается, что настройка WantedBy=multi-user.target добавляет ваш юнит в таргет, который запустится при рестарте сервера.
Осталась последняя команда, чтобы всё заработало. Она включит ваш юнит в список автозагрузки. Введите команду:
# systemctl enable phones-shop Created symlink /etc/systemd/system/multi-user.target.wants/phones-shop.service → /etc/systemd/system/phones-shop.service.
Эта команда создаёт симлинк вашего юнита. Симлинк — это прямая ссылка на файл, что-то вроде ярлыка .exe в Windows. Теперь, если вы захотите убрать ваш файл из автозагрузки, то будет достаточно написать systemctl disable phones-shop . Это удобно, потому что не надо лезть в файл юнита и чего-то исправлять, всё отключается одной командой.
Теперь снова перезагрузите сервер с помощью команды reboot now и проверьте свой сайт в браузере. Он должен быть запущен, даже после перезагрузки.
5. Имитация сбоя
Плохая новость: программы иногда ломаются. Такое бывает даже с очень опытными разработчиками и даже в очень больших компаниях.
Чтобы понять, работает автозапуск или нет, нужно как-то сымитировать поломку программы. На Windows это довольно просто сделать: нужно нажать Ctrl+Shift+Esc , откроется диспетчер задач. Там выбираете любой процесс и жмёте “снять задачу”.
В Linux можно провернуть то же самое, причём из терминала. Для этого есть специальная команда kill , но сначала нужно узнать PID вашего юнита. PID — это ProcessID, то есть id процесса. Все процессы можно получить в терминале этой командой:
# ps -aux
Выведется полотно из всех процессов, что запущены на сервере:
В таком полотне совершенно невозможно что-либо найти. Поможет поиск по ключевым словам, тоже команда linux, которая называется grep . Вместе эти команды запускаются так:
# ps -aux | grep «ключевые слова для поиска»
Попробуйте найти PID вашего процесса по названию юнита:
# ps -aux | grep phones-shop
Вот что получилось у нас:
Нашлось 2 процесса. Первый — наш юнит, а второй — собственно процесс поиска через grep. Судя по всему, нужный PID — это 1004.
Теперь, когда у вас есть PID вашего юнита, убейте его процесс:
# kill 1004
Зайдите на ваш сайт. Кажется, он упал
6. Автозапуск на случай сбоя
Теперь стало понятно, что в случае сбоя ваша программа просто упадёт. Сайт не будет работать, пока кто-нибудь не зайдёт на сервер и не запустит его заново. Это совсем не дело, почему он не может перезапуститься сам.
Надо сказать юниту: “Если файл перестал работать, то файл нужно перезапустить”. Это довольно просто поправить:
[Service] ExecStart=python3 -m http.server —bind 164.90.239.48 —directory /opt/phones-shop 80 Restart=always [Install] WantedBy=multi-user.target
Настройка Restart=always значит “перезапускай юнит, если он не работает”. Эта настройка хороша только для сайтов, чатботов и прочих программ, которые никогда не останавливаются. Если же вам нужно создать юнит с обычной программой, которая однажды закончится, то вам больше подойдёт Restart=on-abort . Тогда systemd перезапустит юнит только в том случае, если он упал с ошибкой, а если он просто завершился, программа закончилась, то systemd оставит юнит в покое.
Теперь, когда вы поправили файл юнита, перезапустите его в systemd :
# systemctl start phones-shop Warning: The unit file, source configuration file or drop-ins of phones-shop.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
Авторский перевод: Внимание: юнит-файл phones-shop.service был изменен. Запустите команду systemctl daemon-reload , чтобы перезагрузить ваш файл.
Я всегда очень радуюсь, когда программы подсказывают мне команды для собственной починки.
Прим. автора
Очень мило со стороны systemd просто подсказать вам следующую команду: systemctl daemon-reload . Вы можете узнать что она делает на SO, но если вкратце, то это “мягкая перезагрузка”. При обычной перезагрузке systemd полностью останавливает юнит и запускает его заново. При “мягкой” же перезагрузке он не останавливает юнит, а пытается подключить к нему изменения прямо “на ходу”. Например, чтобы добавить настройку Restart=always , на самом деле юнит перезапускать не надо. systemd просто сообщит процессу юнита, что если что-то случится, то стоит перезапуститься.
Установка и конфигурирование IIS
В большинстве случаев в реальных производственных проектах один или несколько серверов будут использоваться для обслуживания клиентских запросов веб-сайта. Эти серверы могут принадлежать и управляться непосредственно вами, специализированной командой или же сторонней компанией, предоставляющей услуги хостинга. В любом случае рано или поздно наступает момент, когда написание кода и его тестирование завершено, и работа должна быть представлена широкой публике — в этом и заключается развертывание веб-сайта.
В этой и следующих статьях мы рассмотрим различные варианты развертывания. Однако во всех случаях основные предпосылки остаются неизменными. На рабочей станции имеется готовый веб-сайт, который нужно развернуть на сервере, чтобы он был доступен клиентам. Для ASP.NET таким сервером является , а его текущей версией — IIS 8. Когда он был впервые реализован, IIS представлял собой базовый веб-сервер. С годами IIS развился в сложный сервер приложений, предоставляющий широкое множество функциональных средств, наиболее важным из которых является поддержка хостинга приложений ASP.NET.
В этой статье основное внимание уделяется IIS 8. Хотя машина, на которой запущен IIS 8, здесь называется сервером, IIS можно запускать под управлением версий Windows как для рабочей станции, так и для сервера. На рабочих станциях доступны не все, но большинство функциональных возможностей, что позволяет размещать сложные веб-сайты. По возможности мы рекомендуем использовать Windows Server, однако недорогой альтернативой могут послужить Windows 7 или Windows 8.
В Microsoft привязывают выпуски IIS с выпусками Windows. В состав Windows Server 2008 и Windows Vista входит версия IIS 7.0, в состав Windows Server 2008 R2 и Windows 7 — версия IIS 7.5, а в состав Windows Server 2012 и Windows 8 — IIS 8. Версии — 7.0 и 7.5 — в Microsoft обобщенно называют IIS 7, что может вносить путаницу. Версию IIS, поддерживаемую операционной системой, изменить нельзя — Windows Server 2008 будет использовать только IIS 7.0. Например, модернизировать ее до версии IIS 7.5, используемой в Windows Server 2008 R2, не получится.
Установка IIS
Компонент IIS включен как часть установки Windows (как для сервера, так и для рабочих станций) и требует активизации и конфигурирования. Далее представлены три способа активации IIS для различных операционных систем.
Установка IIS на настольных версиях Windows (Windows Vista, Windows 7 и Windows 8)
Каждая версия операционной системы Windows предлагает свою версию IIS — IIS 8 (в Windows 8), IIS 7.5 (в Windows 7) или IIS 7 (в Windows Vista). Во всех этих версиях Windows, IIS включен, но изначально не установлен. Чтобы установить его, необходимо выполнить следующие действия:
- Откройте панель управления.
- Выберите «Программы».
- Нажмите кнопку «Включение или отключение компонентов Windows». Теперь вам нужно подождать, пока Windows исследует вашу систему.
- Найдите элемент Internet Information Services (Службы IIS) в верхней части списка и нажмите на галочку чтобы включить его:
Установка IIS в Windows Server 2008
Установка и настройка IIS одинакова для Windows Server 2008 и Windows Server 2008 R2. Необходимые шаги описаны ниже:
- Запустите диспетчер сервера. Чтобы сделать это, нажмите кнопку Start и выберите All Programs —> Administrative Tools —> Server Manager.
- Выберите узел Roles в дереве слева.
- В правой части окна нажмите на ссылке Add Roles. Это открывает мастер, позволяющий добавить новую роль сервера.
- Выполните необходимые действия в мастере. Вас вероятно попросят установить дополнительные необходимые роли — если это так, нужно просто принять операции и продолжить.
- После установки вам будет предложено настроить веб-сервер. Как в настольных версиях Windows, вы можете выбрать специфические особенности IIS 7, которые должны быть включены.
- Если вы работаете в ASP.NET с версией .NET Framework 4.5, то эту версию .NET Framework необходимо будет установить (центр разработчиков .NET Framework)
Установка IIS в Windows Server 2012
Процесс установки IIS в Windows Server 2012, по существу, такой же, как и в Windows Server 2008. Основное различие заключается в том, что пользовательский интерфейс несколько отличается. Подробное описание вы можете найти перейдя по ссылке Installing IIS 8 on Windows Server 2012.
Управление IIS
При установке IIS, он автоматически создает каталог с именем C:inetpubwwwroot, который представляет ваш веб-сайт. Все файлы в этом каталоге будет отображаться, как будто они находятся в корневом каталоге вашего веб-сервера.
Чтобы добавить дополнительные страницы на ваш веб-сервер, можно скопировать файлы HTML, ASP или ASP.NET напрямую в каталог C:Inetpubwwwroot. Например если добавить файл TestFile.html в этот каталог, вы можете запросить его в браузере через URL-адрес http://localhost/TestFile.html. Вы даже можете создавать вложенные папки для группирования связанных ресурсов. Например, вы можете получить доступ к C:inetpubwwwrootMySiteMyFile.html через браузер, используя URL-адрес http://localhost/MySite/MyFile.html.
Каталог wwwroot удобен для запуска простых примеров и статичных страниц. Для правильного использования ASP.NET вы должны сделать свой собственный виртуальный каталог для каждого веб-приложения, которое вы создаете. Например, вы можете создать папку с любым именем на любом диске вашего компьютера и поместить ее в виртуальный каталог IIS как будто она расположена в каталоге C:inetpubwwwroot.
Прежде чем начать работу, вам нужно запустить диспетчер служб IIS. Его можно найти в меню Start (Пуск). Конкретное расположение может зависеть от используемой версии Windows (IIS —> Диспетчер служб IIS). Ярлык программы будет располагаться в разделе Programs (Программы) или Administrative Tools (Администрирование). Начальная страница IIS Manager показана на рисунке ниже:
Теперь нужно ознакомиться с рядом терминов, используемых в IIS. В левой части окна IIS Manager отображается запись с именем используемого сервера. Наш сервер имеет имя PROFESSORWEB, сгенерированное по умолчанию Windows 8, которое будет использоваться в большинстве примеров. В центральной области отображается представление сервера.
Это представление отображает набор значков, которые позволяют конфигурировать параметры сервера. В правой части экрана расположен список доступных действий. Например, в этом представлении можно запускать, останавливать и перезапускать сервер.
Если развернуть элемент сервера в древовидном представлении в левой части экрана, отобразится элемент Sites (Сайты), содержащий единственную запись Default Web Site (Веб-сайт по умолчанию). Сайт — это коллекция файлов и каталогов, образующих веб-сайт. На одном сервере IIS может поддерживать несколько сайтов, как правило, на различных портах TCP/IP (по умолчанию используется порт 80). Сочетание имени сервера и порта сайта образует первую часть URL-адреса. Например, при использовании сервера mywebserver с сайтом, подключенным к порту 80, URL-адрес выглядит следующим образом:
http://mywebserver:80
Каждый сайт может содержать множество файлов и каталогов. Каждый из них образует часть URL-адреса. Так, URL-адрес статической страницы mypage.html, расположенной в каталоге myfiles, будет следующим:
http://mywebserver:80/myfiles/mypage.html
В некоторых ситуациях имя, под которым сервер известен вам, и имя, которое клиенты используют для получения содержимого, будут различаться. Мы оставим этот нюанс без внимания, но администратор сервера или компания, предоставляющая услуги хостинга, предоставят необходимые сведения, если это важно для конкретного сервера.
Чтобы проверить работоспособность IIS выберите Default Web Site и в правой области диспетчера служб IIS выберите пункт «Запустить». После этого нажмите кнопку «Обзор *.80 (http)» чтобы открыть страницу сайта в браузере:
Как видите, в моем случае я поменял порт используемый по умолчанию (с 80 на 8080). Я сделал это, т.к. на 80-м у меня запущен локальный Apache-сервер. Если у вас возникает такая же проблема, то изменить порт можно щелкнув правой кнопкой мыши по сайту (Default Web Site) и выбрав в контекстном меню «Изменить привязки» (Bindings). После этого в диалоговом окне можно изменить порт, используемый по умолчанию.
Итак, каждый сервер может поддерживать множество сайтов, каждый из которых работает на другом порту или с другим IP-адресом. Каждый сайт может иметь множество файлов и каталогов, и сочетание этих элементов предоставляет информацию о URL-адресе. Мы вернемся к URL-адресам и использованию IIS Manager при рассмотрении каждого из подходов к развертыванию.
Источник: professorweb.ru
Как сделать локальный Django-сайт доступным в Интернете / Туннели ngrok
Допустим вы пишите какое-то Django-приложение. Как обычно разработка идёт локально на вашем компьютере. По умолчанию все Django-проекты доступны по адресу http://localhost:8000 или http://127.0.0.1:8000 что одно и тоже. Эта адреса твоего локального компьютера. Соответственно никто другой в Интернете, перейдя по одному из этих адресов, ваш сайт не увидит.
Проект пока рано заливать на какой-то хостинг или выделенный сервер, но показать его другому человеку уже нужно: похвастаться другу, человеку и команды разработки, заказчику и т.д. Даже если этот человек подключится к WI-FI у вас дома и будет находиться с сайтом в одной сети, localhost будет перенаправлять гостя на своё же устройство, а не на ваш сайт.
Что делать, как показать Django-проект, которые запускается на локальном сервере, недоступном в Интернете? Есть несколько вариантов:
- cделать скриншоты каждой страницы сайта;
- показать экран в ZOOM или Discord;
- дать доступ к своему рабочему столу через Team Viewer;
- записать экранку;
- настроить HTTP-туннель с помощью утилиты ngrok.
Во время работы над одним университетским грантом я столкнулся с данной проблемой и поэтому в статье хочу рассказать:
- что такое туннелирование и HTTP-туннель;
- зачем нужна и как работает утилита ngrok;
- как настроить HTTP-туннель с помощью ngrok, чтобы сделать доступным в Интернете ваш локальный сайт на Django или любом другом веб-фреймворке.
Прежде чем начнём, давайте знакомится. Меня зовут Макс. Я преподаватель в классическом университете и один из авторов YouTube-каналы PyLounge. Теперь же приступим к делу!
Для начала разберёмся с понятийным аппаратом, чтобы говорить на одном языке.
Дисклеймер: Я намеренно упрощаю некоторые понятия и концепции, т.к. данный материал нацелен преимущественно на новичков. Может быть подобного рода допущения грешны, но что вы мне сделаете, я в другом городе?
Туннелирование — термин из компьютерных сетей, который обозначает процесс, в ходе которого создаётся соединение между двумя устройствами с помощью инкапсуляции различных протоколов.
Комбинация туннелирования и шифрования позволяет реализовать закрытые виртуальные частные сети (VPN).
То есть туннель позволяет безопасно перемещать данные из одной сети в другую. Так мы можем сделать туннель из глобальной сети Интернет в локальную сеть, куда подключен ваш компьютер с сайтом.
HTTP-туннелирование используется для создания сетевого соединения между двумя компьютерами в условиях ограниченного сетевого подключения (брандмауэр, NAT, ACL). Туннель создается посредником, который называется прокси-сервером, который обычно находится в DMZ.
Ngrok – это утилита для создания туннелей. Она позволяет сделать локальный порт приложения доступным из Интернета без настройки NAT, роутера, DDNS и других протоколов.
Ngrok создает туннель между вашим компьютером и удалённым сервером и предоставляет доступ к нему с уникального домена (адреса), который сама и генерирует. Достаточно только зарегистрироваться на сайте сервиса, установить программу на компьютер и запустить команду создания туннеля. Этим мы и займемся.
Пусть у нас изначально есть некоторый Django-проект. Он работает и запушен локально, доступен по адресу http://localhost:8000 .
- Переходим на официальный сайт Ngrok — https://ngrok.com/
- Регистрируемся на сайте и подтверждаем почту. Это бесплатно.
- Скачиваем архив с ngrok для вашей версии операционной системы. В моём случае это Windows 10 64-бит.
- Распаковываем архив в любое удобное место.
- Запустим файл ngrok.exe.
- В открывшемся окне выполним следующую команду для автоматической конфигурации файла настроек ngrok.yml: ngrok config add-authtok ВАШ_ТОКЕН
Токен можно посмотреть на сайте ngrok на вкладке Your Authtoken либо в разделе Setup Installation» width=»1198″ height=»382″ />
Это нужно, чтобы получить доступ ко всем функциям ngrok.
- Теперь для создания HTTP-туннеля выполним команду: ngrok http http://localhost:8000 или ngrok http 8000
Открывается окно сеанса туннелирования. В этом окне в разделе Forwarding сгенерировалась ссылка. По ней наше Django-приложение, запушенное на порту 8000, и будет доступно в Интернете.
Теперь вы можете просто скопировать эту ссылку и отправлять её другу, заказчику, другому разработчику и т.д. Эта ссылка будет работать пока вы не завершите сеанс Ngrok или пока не закончится время сеанса (аренды ссылки). После чего сеанс придётся перезагрузить, при этом сгенерируется новая ссылка.
Однако при попытке перейти на сайт Django выдаст ошибку DisallowedHost
Чтобы её исправить необходимо открыть файл settings.py нашего Django-приложения и в списке ALLOWED_HOSTS указываем ‘*’
Django проверяет заголовок хоста HTTP-запроса на наличие URL/ip-адреса, который находится в пределах разрешенных хостов ALLOWED_HOSTS . Указывая * мы разрешаем доступ с любого хоста.
После сохранения изменений сайт наконец-то будет доступен по сгенерированной ссылке!
Базовый синтаксис утилиты Ngrok выглядит следующим образом:
ngrok команда опции
- completion- сгенерировать скрипт автодополнения для bash или zsh;
- config add-authtoken- сохранить токен аутентификации в конфиг файл;
- config check- проверить конфигурационный файл на ошибки;
- config edit- редактировать конфигурационный файл;
- http- создание HTTP туннеля;
- tcp- создание TCP туннеля;
- start- запуск туннелей, настроенных в конфигурационном файле;
- service install- установить конфигурационные файлы сервисов в систему;
- service start- запустить сервис;
- service stop- остановить сервис;
- update- обновить утилиту до последней версии;
- version- показать версию утилиты.
Если вы хотите посмотреть перечень всех команд, можно запустить команду ngrok help .
У каждой команды есть свои параметры. Так чтобы сделать доступным локальный HTTP порт нашего приложения извне необходимо использовать команду http. Затем указать порт в качестве параметра, например для нашего случая это порт Django проекта 8000:
ngrok http 8000
Например, если вы не хотите, чтобы кто-то посторонний не смог получить доступ к вашему ресурсу, можно добавить HTTP-авторизацию. Для этого используется опция —basic-auth:
ngrok http —basic-auth=»пользователь:пароль» 8000
На самом деле возможностей довольно много. Есть много мощных комбинации команд и их опций. Со всем этим по мере надобности рекомендую ознакомиться в документации ngrok.
На последок упомяну, что, когда Ngrok-клиент запущен, можно открыть веб-интерфейс, который доступен по адресу http://127.0.0.1:4040 . В нём доступна история запросов, в которой можно увидеть какие данные пришли и что было отправлено в ответ, переотправить или модифицировать запрос и многое другое.
Вот таким нехитром способом можно использовать Ngrok для создания туннелей и проброса локального порта в Интернет.
В бесплатном тарифе Ngrok может использоваться только для не длительного проброса в районе, кажется, 1 часа (тут могу ошибиться). Потом надо перезапускать сессию. Однако для локальной разработки, чтобы показать, как выглядит локальный сайт вполне подойдёт.
По умолчанию при каждом подключении выдается динамический домен, который каждый раз меняется. Для того чтобы задать свой домен, а также запустить Ngrok в фоне в качестве службы или демона необходимо покупать подписку. Но повторюсь, для большинства случае бесплатного тарифа более чем достаточно.
Надеюсь эта статья была полезной и интересной. До скорых встреч!
Источник: habr.com