Рубрики
Uncategorized

Почему вам больше не нужен местный сервер Apache / Nginx, чтобы проверить свой веб-сайт

Отказ от ответственности: Когда я говорю «Местный веб-сервер», я имею в виду программное обеспечение с расширенными функциями, установленными … Теги с DevOps, WebDev, Docker.

Отказ от ответственности: Когда я говорю «Местный веб-сайт», я имею в виду программное обеспечение с расширенными функциями, установленными во всем мире на вашем компьютере. На протяжении всей этой статьи вы увидите, что мы действительно используем серверы, чтобы удовлетворить наши потребности, но требование — иметь почти нулевую конфигурацию и управлять нашими ресурсами в изоляции.

В начале 2000-х годов Когда мы хотели разработать наш веб-сайт, мы вообще завершили установку Apache локально с PHP, MySQL и PHPMYADMIN (Эй, я слышал, что кто-то сказал «EEW!» в сборке). Эта настройка может занять несколько часов до дней, в зависимости от того, что вы хотели достичь с помощью файлов конфигурации Apache.

Вы также можете установить EasyPHP или WAPP, чтобы сэкономить вам много времени, но эти инструменты всегда пришли с аналогами, и в настоящее время хорошее приложение/веб-сайт должно содержаться в своем собственном каталоге проекта (E.g. Git Repository).

В 2020 году (OMG, я что старый ?!), Инструменты развития сильно улучшились . Больше не нужно установить локальный веб-сервер со сложной конфигурацией. Кроме того, для максимизации того же поведения в зависимости и ресурсах проекта машин и ресурсы должны работать в изоляции и не утечке на систему.

Давайте посмотрим, как достичь его с некоторыми из самых трендовых языков!

Самый быстрый не такой грязный путь

Эти различные методы будут полагаться на статический веб-сайт или внутреннюю маршруту в вашем приложении. Любое более сложное маршрутизация/переписывание, конечно, требуется настоящего веб-сервера. То же самое следует отметить, если вам нужно использовать базу данных, которую вы не можете издеваться. Эти конкретные потребности обрабатываются в следующем разделе.

Обратите внимание, что все следующие команды создают сервер, доступный в http://localhost: 8080/ Служение текущего каталога и что я не перечислял все возможные альтернативы из каркасов (вы уже должны знать, как их использовать, верно?) Или любой доступный пакет, чтобы сохранить эту статью.

Я поощряю использование Makefile (или любого другого инструмента, такого как Scripts NPM ) Так что вам больше не нужно беспокоить с этим «Что уже за команда?» Вопрос при переключении между различными проектами. Например:

Затем вы всегда будете иметь ту же команду, чтобы ввести свои проекты: сделать подачу Отказ

Во всяком случае, вот мы идем!

Для статических сайтов

Вы можете использовать HTTP-сервер Пакет NPM. Это очень мощный веб-сервер с поддержкой GZIP, SSL или Catch-All Moulting. Просто установите его в зависимости вашего проекта и запустите его с NPX HTTP-сервер Отказ

Есть также несколько других библиотек веб-серверов, таких как взгляд или Harp Отказ

Для проектов DENO

Вы можете использовать стандарт file_server lib:

$ deno install -f -allow-net -allow-read file_server https://deno.land/std/http/file_server.ts
$ ~/.deno/bin/file_server -port 8000

Для приложений PHP 5.4+

Вы можете использовать Behary PHP с: PHP -S localhost: 8080 Отказ

Также: если вы не мигрировали на PHP 7, пожалуйста, сделайте.

Для Ruby Projects.

Начиная с 1.9.2, используйте Ruby -Run -e httpd. -P 8080 Отказ

С более старыми версиями, используйте Ruby -rwebrick -e'webrick:: httpserver.new (: port => 8080,: documentroot => dir.pwd) .start ' Отказ

С Python

Как PHP, Python имеет также свой интегрированный сервер!

С Python 2: Python -M SimpleHttPServer 8080 Отказ

С Python 3: python3 -m http.server 8080 Отказ

С поиском языка

Вы можете использовать искру:

$ go get github.com/rif/spark
$ spark -port 8080

В кристалле

Мы можем использовать стандартную библиотеку:

crystal eval 'require "http/server"; HTTP::Server.new(8000, HTTP::StaticFileHandler.new(".")).listen'

Для проектов ржавчины

Я не забыл наш Руунс Люди 😉️.

$ cargo install https
$ http

Вы также можете использовать Минисервис Отказ

Наконец-то, с эликсиром

elixir --no-halt --app inets -e ":inets.start(:httpd,[{:server_name,'s'},{:document_root,'.'},{:server_root,'.'},{:port,8080}])"

Самый длинный и надежный путь

Может быть, вы уже знаете Docker? Это инструмент управления контейнером, в настоящее время использовал в настоящее время для отправки приложений с их основным стеком (например, база данных, сервер, менеджер журнала и т. Д.).

Чтобы проверить сайт локально, Создание образа докера с той же конфигурацией, что и ваш производственный сервер, явно является предпочтительным и более чистым способом Отказ Наличие ваших ресурсов контейнеризации сводит к минимуму побочные эффекты различной среды с вашим кодом и делает вашу команду счастливой.

Для нашего примера я не буду входить в все детали создания изображения, но создал репозиторий GitHub с образцом веб-сайта, чтобы показать вам, как это сделано. Этот пример охватывает изображение докера с nginx и php7: https://github.com/pyrsmk/docker-nginx-example Отказ Но тот же принцип легко настраивается для Apache и любого другого языка.

Возьмите глубокий взгляд на репозиторий, чтобы лучше понять, о чем я буду говорить.

Для следующего вам нужно Установите Docker на вашей системе Отказ Когда это сделано, вы должны добавить своего пользователя к Докер группа:

$ sudo usermod -aG docker ${USER}
$ su - ${USER}

Теперь создайте учетную запись на Dockerhub и Войти к этому.

Выполнено? Теперь давайте посмотрим на то, как выглядит наш образ.

Вот наш Dockerfile :

С комментариями, это довольно просто, чтобы понять, что происходит, но здесь есть несколько вещей:

  • Мы используем Linux Alpine. построить наш образ, потому что он маленький, как ад (вопреки Ubuntu), так что он строит и работает быстро
  • Чтобы иметь быстрые стартапы и изящные отключения для наших услуг, которые мы установили S6-наложение
  • Мы добавили башмак как зависимость только для цели отладки
  • Мы перезаписываем файлы конфигурации напрямую, потому что оно проще, чем обработка каждого файла отдельно; Эти файлы конфигурации хранятся в и т. д. Папка на нашем примере репозиторий

Другой интересный файл — Makefile (В следующем примере является конконтрация обоих макияжа из примера репозитория для простоты):

Код для построить Задача кажется немного сложной, но это потому, что мы хотим автоматизировать все остальные задачи, поскольку она лучше для Установите номер версии для каждого изображения, которое мы строим . Это на самом деле не нужно, и этот код может быть упрощен, но почему бы не начать с передовой практики?

Давайте немного объясним, что делают задачи:

  • сделать сборку : Это показывает нам текущую версию Docker Image и спрашивает нас для новой версии, затем строит ее
  • сделать публикацию : Он публикует наше изображение на Dockerhub, особенно полезен при работе над командой, но и сделать резервные копии
  • сделать bash : Действительно полезно, когда нам нужно отладить, когда мы работаем над нашим изображением (Dockerfile, файлы конфигурации и т. Д.), Он работает на Bash внутри контейнера
  • служить : Это то, что мы заинтересованы, он запускает изображение и обнажает внутренний сервер в localhost: 8080.

Обратите внимание, что вы не должны/не сможете запустить команды с репозитория напрямую, так как они полагаются на мою учетную запись Pyrsmk 😉️.

Мы сделали на сегодня!

Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать, как я знаю, что Docker не легко наступить!

Если вам интересно узнать больше о Docker, Есть много полезных официальных ресурсов для чтения Отказ

Вы можете подписаться на мой Список рассылки Отказ

Если вы цените свою работу, вы можете поддержать меня за небольшую цену кофе ☕️ через Ko-fi (предпочтительно) или Парреон Отказ

Оригинал: «https://dev.to/pyrsmk/you-don-t-need-a-local-apache-nginx-server-anymore-to-test-your-website-3nh1»