Transcription
Что это такое и как этим пользоваться? В одном видео я дам вам всю необходимую теорию и практику для базового понимания работы, чтобы вы могли идеально ответить на собеседование, как работает и какие у него есть, например, там директивы. Сегодня узнаем, что это такое. Мы посмотрим на базовые фишки JKS. Больше будем практиковаться, меньше будет занудной теории, а в самом конце мы даже развернём Джинкс на свой собственный сервер. Посмотрим, как это будет. Это будет очень круто.
Всем привет, друзья. Меня зовут Артём. Я Python Backэнд разработчик и на этом канале рассказываю вам, как качать хардскилы и прокачивать карьеру. Обязательно подписывайтесь на канал и ставьте лайки, если вам нравится подобный контент. Ну что, поехали.
Итак, сперва я хочу обратить ваше внимание на небольшую схемку. Слева это вы, пользователь, который сейчас смотрит видео на телефоне или на планшете или на компьютере, и вы пользуетесь либо браузером, либо каким-то приложением. Справа Webserver Engins. Я хочу донести до вас мысль, что абсолютно все запросы, которые вы делаете в интернете, ну ладно, наверное, вру, там 50% запросов обрабатываются энзинксом. Это действительно так. Нжинксом пользуются там половина или даже больше половины сайтов в интернете. И есть способ это проверить. Даже если вот на этом сайте, где я сейчас нахожусь, Miro, где можно рисовать диаграммы, нажать правой кнопкой мыши посмотреть код. Вот таким образом. Правая кнопкой мыши, посмотреть код. Здесь, правда, такого нету. Поэтому я горячей клавишей воспользуюсь и открою панель разработчика вот такую. Вы можете сделать это на абсолютно любом сайте. Здесь есть вкладочка сеть или network. Если я начну что-либо здесь двигать, бам-бам, бам-бам, туда-сюда, туда-сюда, будут лететь запросы. Давайте на любой из них нажмём и посмотрим, что здесь происходит. У нас есть какой-то адрес. Нам не особо сейчас важно, что это за адрес. Нам интересно, а какой ответ мы получили? У нас есть заголовки ответа response headers. И здесь есть очень важное поле сервер, двоеточие. То есть мы можем реально убедиться, что здесь нам ответил. Он принял запрос, передал его куда-то на ээнд сайта и компании Miro. Там как-то обработался этот запрос, эти данные, сами данные мы можем посмотреть вот здесь. И мы получили от этого бэкэнда ответ. Инкс нам бережно его передал. Да, вот какой-то ответ мы получили.
Что здесь сразу важно прояснить. Не содержит никакой бизнес-логики вашего приложения. Что делать с данными, как их записать в базу данных, в каком формате вам их отдать. Нет, он всего лишь проксирует запросы. Это ужасно звучит. В концу видео вы поймёте, что это значит и как это происходит. Но на самом делекс берёт данные, которые вы прислали, заголовки, ваш IP-адрес, всю информацию, которую вы передали через браузер или как программист, если вы напрямую обращаетесь к какой-то опишке, к какому-то сайту и затем отдал это тому сервису, который ответственен за обработку данных. Мы сегодня с вами даже такой сервис напишем, на самом деле.
Давайте перейдём к ключевым фишкам, ключевым особенностям Энжинкса, за которые его так любят и которыми постоянно пользуются. Первое, наверное, самое простое, кстати, да, мы будем пользоваться сегодня Visual Studio Code. Вы можете выбрать любой другой и писать код там, где вам удобно, хоть в блокноте. А перед началом, конечно, нужно установить engins. Это можно сделать на всех операционных системах. Я скину ссылочку, как установить её на Windows, в описании, потому что это чуть-чуть сложнее. Но если мы говорим про Unix системы, то есть про MacOS и Linux, это делается несложно. Например, на MacOS Brew Install Engins, а на Линуксе это SUO UPTGET install. Опять же, все команды, инструкции я скину в описании. У нас установился, и мы можем его запустить вот такой командой. А у нас уже запущено JKS. Ну замечательно.
Теперь, если мы перейдём в Visual Studio Code, здесь у меня специально папочка с Джинксом уже встроена, уже её путь здесь отражён. И здесь есть один самый важный файл конфигурации, с которым вы, скорее всего, будете работать или, скорее всего, хотя бы видели один раз. И он называется engins. Он выглядит очень страшно, я с этим согласен. Он выглядит очень непонятно, но сейчас мы с вами разберёмся, что здесь, да, как. На другие файлы мы пока не обращаем внимания. Важно пояснить, что сегодня не какой-то супер подробнейший гайд, как настраивать там в продакшн системе. Нет, понятно, что есть много нюансов в настройке Джинкса. И сегодня мы большую часть из них будем опускать. То есть мы будем базово пользоваться инжинксом просто чтобы у вас возникло понимание, а что это такое, с чем это едят. А важно понимать, что у Энджинкса всегда есть вот такой конфигурационный файл, и живёт он обычно по какому-то адресу внутри нашего сервера, внутри нашего компьютера. В данном случае, если вот здесь навести мышкой где-нибудь, да, у нас это адрес optwcendings.com. на Убунте. Это просто адрес.CONF. Это важно понимать, потому что если вы будете пользоваться в Docker контейнере, как мы посмотрим на это в конце видео, то вам, конечно, важно знать, где лежит наш конфиг.
Ну а мы продолжаем изучать engins. Что нам здесь нужно? Ну, первое, что я предлагаю сделать - это доудалить все комментарии. Нам они не нужны, они только портят первое впечатление. Чем меньше кода, тем легче, тем спокойнее это всё дело воспринимать. Давайте здесь удалим вообще всёвсёвсё ненужное и оставим только то, чтобы у нас работал наш. Я удалил абсолютно все комментарии. Давайте зайдём в наш браузер. И если зайти по адресу local host 8080, а именно такой порт у нас указан здесь в нашем файлике, то мы увидим стандартную приветственную страницу Джинкса. Добро пожаловать вжинкс.
Что мы с вами будем делать? Ну, первое, давайте попробуем раздать статический контент. Это одна из фич, за которую очень любят, потому что он делает это супербыстро. Для того, чтобы у нас был какой-то статический контент, какой-нибудь сайтик, давайте его соорудим. У меня есть папочка здесь engin video. И здесь я создам простенький файлик и назову его index.html. И здесь при помощи несложной махинации создам какой-нибудь привет, друзья такой боди. То есть у нас будет просто обычный текст. Итак, мы с вами хотим, чтобы вместо базовой приветственной страницы Энжинкса отображался наш файлик. Привет, друзья. Что для этого можно сделать? В engin есть так называемые в конфиге есть директивы. Есть директивы, например, там events, есть директива HTP, директива сервер и так далее. И нас интересует сейчас location. В данном участке конфигурации у нас написано, что если вдруг кто-либо обращается к нашему веб-серверу по адресу сш, то есть просто по local host и порт, то мы отдаём ему из папки HTML файлик index HTML. Мы сейчас хотим отдавать наш замечательный файлик. Что мы для этого делаем? Ну, во-первых, нам нужно понять, где находится наш файлик. Для этого можно, а, здесь просто вбить внутри папки ПВД, то есть получить, а, рабочую директорию, текущую, либо там навести мышкой, вам тоже покажется адрес. В общем, все способы годятся. И здесь можно просто прописать root и нашу папочку. Теперь, если мы обновим страницу, ничего абсолютно не поменяется. Дело в том, что когда вы меняете конфигурацию Джинкса, вы всегда должны его перезагружать. Но бывает так, что вы поменяли конфигурацию, например, забыли поставить точку с запятой или где-то лишний слэш поставили, всякое бывает. В первую очередь нужно проверить, что с конфигом всё хорошо. Для этого мы абсолютно в любом месте кода, в любой директории пишем - T. И нам говорят, что синтакс окей, то есть всё хорошо, никаких синтаксических ошибок нету. Нам также, конечно, говорят, где лежит файл с конфигом. То есть всегда можно узнать, где он находится. И мы можем теперь перезапустить engins. Как это делается? Команда - s reload. Мы перезагружаем ing. Теперь, если мы обновим эту страницу, бац, у нас отображается привет, друзья. Если мы зайдём, посмотреть код, да, правой кнопкой мыши, сеть, здесь посмотрим, ещё раз обновим страничку, то вот наш документик. Вот он замечательный. И мы увидим в заголовках, что у нас здесь сервер самый последней, самой новой версии. Вот таким образом, друзья, работает раздача статического контента. То есть engin может просто взять статический контент и передать его. Очень просто. Понятно, что этот пример упрощённый. Понятно, что не всегда статический контент лежит на том же сервере. Не всегда вот именно так выглядит конфигурация. Она, конечно, чуть более сложно выглядит на продакшене, но для понимания этого будет достаточно.
Теперь давайте посмотрим на вторую фишку Энжинкса. Это редиректы, ну или переадресация. Представим, что у вас, у вашей компании есть сайт и 10 лет жил сайт на домене.ru. Внезапно вы решили переехать на сайite.com. И по интернету разбросался просто миллиард ссылок с прошлым названием домена, и их поменять невозможно. И вы хотите, чтобы любой запрос на site.ru переадресовывался на сайite.com, чтобы человек получал не какую-то страницу, типа такого сайта нету, а чтобы он получал страницу site.com, его перенаправлял туда, куда нужно. Для этого существуют редикты. Как это делается? На самом деле очень несложно. Опять же, если мы вернёмся к тому же локейшену, давайте пока что закомментируем наш файлик с "Привет друзья". И вместо того, чтобы человеку отображать этот файлик, будем его редиректить на другой сайт, например, на Google. Google.com. Что для этого нужно сделать? Мы используем слово return, как вернуть, да, как будто мы в функции какой-то в Питоне или где-либо ещё в джаваскрипте. Дальше пишем статус код 301. Обязательно это должен быть любой трёхсотый статус. Точно. И в данном случае это 301. То есть мы просто перенаправляем человека и дальше указываем, собственно, куда мы его перенаправляем. Мы можем его перенаправить не только на другой сайт, мы можем его перенаправить на наш сайт, просто на другой какой-то адрес, по адрес. Но давайте перенаправим его на google.com. И обязательно в конце точку запятой никогда не забывайте. Перед тем, как перезагружать enginx, давайте проверим, что всё хорошо. Jinx -т, да, всё замечательно. И теперь можно его перезагружать. Отлично. Переходим обратно. Обновляем сейчас страничку и бац, я на сайте google.com. Абсолютно незаметно для меня, как для пользователя, это произошло. Причём, но если опять же мы хитрые, мы знаем, что у нас есть консоль разработчика, давайте вот эту историю скроем, то мы увидим, что здесь есть local host, и мы получаем статус не 200, а 301. Это ровно та цифра, то число, которое мы здесь указали. Moved permanently, то есть перманентное изменение адреса. И обратите внимание, у нас сервер и Engin добавил для браузера заголовок под названием location и google.com. То есть вот это всё мы просто вбили вс, а он это отправил браузеру, и браузер уже сам понимает, что нужно заредирекректить пользователя по этому адресу. Мы также с вами, знаете, что можем сделать, если перейти на наш сайтик, точнее, даже не перейти, а попробовать в терминале вызвать наш сайт, то есть local cost 8.000, простите, 8080, то мы получим вот такую замечательную историю. То есть мы увидим, что нам отвечает и отвечает с 301 статусом.
Давайте уберём редирект. Конечно, редиректoв бывает огромное количество. Они бывают более сложные, они бывают по каким-то регулярным выражениям. Мы это всё не рассматриваем, мы просто хотим понять, а какие есть фишки у энжинкса. И третья фишка - это компрессия или сжатие. Jinx позволяет очень большие файлы сжимать до очень маленьких. Что это значит? Это значит, что клиент, ну, человек, который пользуется браузером, который смотрит там на наши какие-то картинки, получает какие-то видеоматериалы, статический контент, он будет получать их быстрее, потому что меньше байтиков, меньше килобайтиков будет лететь по сети. Всё очень просто. Как это происходит? Сжимает ответ, посылает браузеру, браузер уже разжимает эти бинарные данные в какой-нибудь там JSON формат. Давайте посмотрим на очень простой пример. Помимо HTML-файла, давайте здесь создадим какой-нибудь JavaScript файл script.js и просто сделаем его очень огромным. Не знаю, давайте какую-нибудь функцию напишем, а, которая будет возвращать что-нибудь. И давайте её расплодим просто до неимоверного количества штук. Сделаем вот на 124 строчки. И этот файлик, конечно же, мы подгрузим здесь. Подгрузим script.js. То есть теперь каждый раз, когда мы будем заходить на наш сайт, давайте, кстати, вернём наш привет друзьям, перезагрузим и давайте вернёмся на local host. Конечно, мы увидим. А, кстати, обратите внимание, нас всё ещё редиректит, потому что у нас а использовался кэш. Давайте выключим кэш. То есть браузеры очень любят кэшировать всё подряд, всё, что нужно и не нужно. А, поэтому можно вот таким образом выключать какое-то непонятное поведение браузера, да, выключить кэш. Смотрите, теперь у нас каждый раз, когда мы обновляем страницу, подгружается ещё и script.js. Его тоже отдаёт, конечно же, да, здесь это можно проверить. И обратите внимание, файл весит 2 Кб. Это очень много для такого маленького файлика. Что в данном случае нам предлагает? Мы можем использовать компрессию. Для этого нам с вами понадобится новая директива. Директива называется JZIP. Мы в первую очередь должны её включить, да, Jzip on. Дальше мы должны указать, что у нас должен компрессироваться или сжиматься файл формата JavaScript. Можно указать здесь application JavaScript. Может быть огромное количество форматов, и вы не все хотите сжимать. Здесь мы укажем конкретно вот этот формат файла. И далее можно указать, какой у нас будет уровень сжатия, насколько сильно будет сжиматься. Можно это представить аналогию с архивированием, да, вот как RAR формат или zipформат. У нас очень сильно сжимаются файлики. Мы указываем comp level, то есть уровень компрессии, например, шесть. И вот такие три строчки мы добавили. Давайте перезагрузим Enin, проверим, что с конфигурацией всё хорошо. Да, с конфигурацией всё хорошо. Перезагружаем. И теперь внимание. Было 2 кб. Обновляем. 348 байт. Более чем в пять раз мы сжали наш файлик. Да, можно ещё несколько раз проверить, обновить, но ничего не изменится. Файлик будет весить ровно столько же. Причём, если вы зайдёте в preview или responsс, вы увидите весь файлик. И можно подумать, что, ну, непонятно на каком этапе происходит сжатие вообще, где оно, почему файлик так мало весит. На самом деле, как я сказал ранее, Engin отправляет бинарные данные, то есть мы их особо не можем прочитать толком браузеру, а браузер их уже расшифровывает. Как это можно увидеть как разработчику? Опять же в консоли разработчика, смотрите, в заголовках у нас есть заголовок Content encoding, то есть кодирование JZP. Jzip - это такая утилита для сжатия, собственно, ээ любого формата файлов. Браузер понимает, а, JZIP и всё. и распаковывает, и красиво, прекрасно для нас, там, для фронтендеров в основном всё это дело представляет. То есть обычно это консоль разработчика пользуются, конечно, фронтендеры, ну либо очень продвинутые бэкндеры.
Теперь давайте двигаться к четвёртой фишке, которую мы с вами рассмотрим - это балансировка нагрузки. Все говорят о каких-то больших, сложных системах, распределённых системах, о супербольших нагрузках RPS, там 100.000 RPS в секунду. Давайте посмотрим, как можно балансировать нагрузку самым, что не на есть простым способом. И для этого нам понадобится чуточку знаний по Python. У меня на канале есть прямо отдельный огромный плейлист, как писать экэнд на Python. Собственно, ничего вам не нужно из этого знать. Я быстренько за минутку всё это для вас сделаю. А давайте создадим, давайте, точнее, зайдём в терминал, в нашу папочку Engin Video. Здесь я через Python создам некоторое виртуальное окружение. После этого туда зайду и установлю библиотеку. Давайте зайду сюда. Bein activate и установ установлю две библиотеки. Первое - это Fastp. У меня по ней прямо отдельный большой курс и бесплатный, и платный. И UVCORN - это некоторый веб-сервер, который уже больше с Пайthном взаимодействует. Не нужно сейчас думать, что такое веб-сервер на стороне Python. Вебсервер и то, и то веб-сервер. В общем, backend - это непростая тема. У нас устанавливаются две библиотеки. Паста - это самый популярный фреймворк для написания апи. И мы с вами увидим, насколько это просто делается. Давайте создам файлик main.p, и он будет оченьочень коротенький. Это, конечно, некоторое м упрощение бэкэнда в сотни, а то и тысячи раз. Мы создаём некоторый класс и говорим, что если у нас кто-то будет обращаться по адресу сш, мы будем ему отдавать, ну, например, какой-нибудь data hello world. Вот таким образом. И давайте запустим два. Вообще, на самом деле, вы можете попрактиковаться, запустить любое количество экземпляров приложения. Я запущу ровно два. Для этого мне нужно два терминала. Один будет у нас вот здесь слева, другой будет справа. Давайте сделаем вот как. Здесь напишем. Это наш веб-сервер на Python. Main двоеточие app defс def port. И укажем, например, порт 1111. Бац. И у нас запустится это приложение, эта апишка на порту 1111. И ту же самую команду давайте скопируем, но запустим на порту 222. То есть у нас будет, ой, простите, да, ещё раз. Uvn main up port 222. Вот так. И у нас работает два приложения. Мы можем просто написать local host 1111, получить ответ Hello World, обратиться ко второму серверу. Ой, простите. То есть они оба работают. Если посмотреть на консоли, то вот каждый обработал запрос. Но нам не интересно к ним обращаться. Так мы хотим делать это через end, через проксирование. То есть мы сейчас с вами посмотрим одновременно и на проксирование, и на балансировку нагрузки. Это будет круто.
Что мы для этого делаем? Итак, первое, нам нужна новая директива. Директива называется Upstream. Обычно давайте её назовём, например, аИ, ну или backend, в общем, как угодно её называйте. Здесь будут располагаться наши адреса, да, это могут быть IP-адреса, это могут быть локальные какие-то адреса приложений, да, или м запущенных проектов. Это могут быть докер название докер контейнеров. А это может быть на самом деле очень много чего. У нас с вами есть, как я уже сказал, local host 1111. И у нас есть local host 222. И здесь надо не забыть прописать ещё сервер. И здесь тоже сервер. То есть мы указываем, что у нас есть сейчас два сервера. И давайте укажем, что если, например, кто-нибудь будет обращаться по адресу спи, то есть у нас апишка будет жить на каком-то другом адресе. Очень часто её убирают даже не просто под какой-то путь типа с/i, а на отдельный под домен, то есть appi.ru. И здесь мы с вами сделаем, что мы воспользуемся проксипа проксирование. Это очень страшное слово, очень часто непонятное для новичков, но по сути это значит, что у нас есть какое-то на сервере, вот сейчас на нашем компьютере внутреннее просто ладно запущенное приложение. Вот я запустил два Python приложения. Каждая умеет обрабатывать запросы и отдавать Hello World. И оно не доступно внешним пользователям из там из интернета, например. Но им доступенкс. Они могут с Энджинксом общаться. Так вот, Джинкс будет принимать запрос и проксировать, то есть передавать его одному из моих сервисов. Од вот либо 1111, либо 222 кому-то из них, либо если их больше, большему количеству серверов, большему количеству приложений. И это называется проксирование. Просто передача всех заголовков, данных, адресов, IP-адресссов, в общем, всех данных, которые есть в запросе, просто в другой сервис, в другое приложение. Здесь мы пишем обязательно HTTP и с/, то есть вот это AP равно вот этому апи, просто чтобы было понимание. Иs будет либо на этот сервер обращаться, либо на этот. Причём здесь сейчас очень простая будет концепция, как вычисляется сервер, кому нужно отдать запрос. Просто по по кругу. Round ro. То есть сначала первому, потом второму, потом опять первому, потом второму. Это не очень хорошо. На продакшене почти никогда не нужно этим пользоваться, но опять же у нас упрощённый пример. Давайте перезагрузим engin и посмотрим, что у нас будет. Enginx - T, да, конфигурация хорошая. Enginx - s reload. Перезагружаем. Перезагрузили. И давайте посмотрим, что у нас здесь есть. У нас здесь было два запроса, здесь был один запрос. Давайте зайдём в браузер. А на нашей основной странички, если е обновлять, ничего не происходит. То есть запросов не добавляется, потому что у нас есть спи. Давайте зайдём в спи. Бам. И у нас N found. А всё дело в том, что в нксе я забыл вот здесь указать сш. И для неподготовленного пользователя, для того, кто не работал с Энжинксом, может показаться, ну, какой-то слэш просто в конце. Разве он на что-то влияет? И на самом деле это огромная головная боль всех, кто когда-либо работал с Энджинксом. Можно часами искать проблему, а потом оказывается, что вы забыли слш. Давайте перезагрузим ещё раз. Вот сюда добавили слш. И теперь у нас всё работает. Мы получаем Hello World. Причём, давайте посмотрим. у нас в Давайте, давайте, знаете что, запустим ещё раз наши оба сервера, чтобы не считать, сколько там было запросов каких. Запускаем. И давайте сделаем два обновления страницы. 1 2 сервер получил два запроса. Отлично. Теперь ещё раз. 1раз, два. У нас первый получил запрос. Давайте ещё несколько раз обновлю. И у нас теперь, ну, равномерно примерно они получают запросы. Давайте ещё. 1 2 3 4 5 и ещё добавилось запросов. Там здесь три и здесь один. Кстати, любопытно, что на второй сервер от уходит больше запросов. Когда я экспериментировал, то уходило равномерное количество запросов на оба сервера. Ну, в принципе, наверное, в долгосрочной перспективе ровно так и будет. То есть мы с вами посмотрели на балансировку нагрузки. У нас может быть запущено огромное количество таких экземпляров приложений. Если мы говорим про продакшн, разработку, про какие-то крупные проекты крупные компании, то это часто сотни, а то и тысячи подобных экземпляров приложений, чтобы можно было обрабатывать огромную нагрузку. Но если у вас какой-то небольшой проект, небольшой стартап, то, конечно, вот такого способа будет прямо за глаза такой балансировки нагрузки.
И как я обещал в начале видео, друзья, давайте посмотрим, как можно запустить на своём собственном сервере, чтобы он работал 24x7, чтобы ваш сайт, ваш стартап, ваш там будущий коммерческий проект работал постоянно, без перерывов, без ошибок. Для этой задачи мы воспользуемся серверами компании SelectTEL. Select - это один из ведущих провайдеров IT-инфраструктуры и облаков в России. И мы арендуем здесь облачный сервер. Достаточно зарегистрироваться в панели управления my.select. seltel.ru и можно создать свой первый сервер. Давайте зайдём в инфраструктура, зайдём в облачные серверы, и здесь можно создать сервер. Занимает это буквально там 20-30 секунд. У нас будет Санкт-Петербург, можно выбирать Москву, можно выбирать, в принципе, что вам удобнее, что вам ближе. У меня будет Убунта 20 второй версии, да, то есть это Linux. И я выберу здесь какую-нибудь конфигурацию. Можно выбирать стандартную. Нам не нужно прямо какие-то супербольшие нагрузки. можно выбрать sha, то есть такую делимую конфигурацию, где у нас будет чуть меньше CPU, где у нас будет там чуть меньше оперативки. Нам она сейчас не нужна. То есть я возьму один CPU, одну 1 Гб оперативки и пускай там 10 Гб памяти. У нас будет а публичный IP-адрес. И в целом этого будет достаточно. Можно нажать Создать сервер. И буквально через несколько мгновений у нас появится IP-адрес, и мы сможем к нему подключиться и настроить там. У нас появился IP-адрес. Замечательно. Давайте его скопируем. Зайдём в наш терминал и здесь через команду SSH пробел root собачка и наш IP-адрес, да? То есть root - это имя пользователя. Нажмём Enter, посмотрим, готов ли сервер. Возможно, он ещё готовится. Да, ещё готовится. Можно попробовать через несколько секунд. А пока давайте зайдём, заберём пароль. Заходим в сервер, заходим в консоль. И здесь есть пароль. Давайте его скопируем. Здесь, кстати, можно видеть, что О, всё, у нас всё готово. Можно, кстати, пользоваться этим терминалом. Я пользуюсь этим. мне как-то более более знаком, более родной терминал. Нажимаю здесь yes. Да, добавить этот IP-адрес в список знакомых. Ввожу пароль, нажимаю Enter. И а что-то не так я скопировал. Давайте ещё раз скопируем 10 раз. И да, мы зашли. Замечательно, мы на сервере. Что нам нужно? Нам нужен enginбо вызвать. У нас его нету. Можно попробовать сделать opt installings. И у нас, скорее всего, ничего не получится, да? Если вы на Линуксе, то, конечно, нужно сначала вызвать команду Update, и у нас обновятся абсолютно все пакетики, подтянутся все зависимости, и после этого мы сможем установить наш замечательный. Давайте ещё раз запустим нашу команду Installins. И да, теперь нам предлагают 12 Мб памяти занять. Так уж и быть, займём и посмотрим, что у нас происходит. У нас, кстати, наш IP-адрес. Давайте в него перейдём, посмотрим, что сейчас на нём происходит. Здесь находится welcome to Eninx, приветственная страничка. Так как у нас запущен Enginx, можно посмотреть, можно посмотреть - T, увидеть, где находится файл конфигурации, можно в него зайти, да, например, через Nano и сам адрес. И видим, что вот здесь есть все настроечки с комментариями, конечно, которые нам особо не нужны. И здесь настроен как-то базово наш. Он работает, он отрабатывает. Можно посмотреть код, можно посмотреть версию Джинкса, если вдруг вам интересно. Версию Джинкса также можно посмотреть. Кстати говоря, если вбить Nin V большое или Ninx - V малое, можно понять, что здесь версия 1.18. И сюда вы можете расположить на собственный сервер свои файлы, свой сайт, своё приложение, backend, свой frontend. И у вас будет 24x7 работать на вашем облачном сервере. Облачный сервер, ещё раз напомню, мы арендовали в Select.
На этом на сегодня всё, друзья. Огромное спасибо за подписку. Не забывайте подписываться на мой Telegram-канал, ссылочка в описании. И до новых встреч. Пока.