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