Выбираем среду для локального развёртывания сайта.

LAMP-стек

Излюбленный вопрос новичков (и не только) "как развернуть сайт для разработки" по-прежнему вызывает множество споров. С каждым годом появляются всё новые варианты, но в последнее время я стал натыкаться в интернете на вопросы новичков, попавших в какие-то совершенно нелепые ситуации из-за того, что среда для развёртывания сайта была выбрана изначально неверная. Именно поэтому я решил написать эту статью о выборе среды, обобщив свой личный опыт и наиболее часто встречающиеся ошибки.

Далее я перечислю разные способы начиная от наименее предпочтительных, заканчивая наиболее предпочтительными, попутно перечислив их достоинства и недостатки. Сразу отмечу, что речь идёт о развёртывании сайта для разработки, а не для продакшена.

1. Разработка сразу на shared-хостинге.

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

  • во-первых, новичку вряд ли придёт в голову закрывать тестовый сайт от индексации.
  • во-вторых, нет оперативного доступа к файловой системе (все эти синхронизации и FTP очень сильно замедляют работу)
  • в-третьих, зачем платить за это?
  • в-четвёртых, у вас может быть недостаточно опыта, чтобы выбрать подходящий хостинг, а когда вы это поймёте, тестовый бесплатный период скорее всего закончится.

А потом кто-то гордый и обиженный напишет в интернете после пяти дней мучений "перешёл на вордпресс, потому что друпал так и не заработал на моём хостинге"

2. Денвер.

Этот способ я не советую использовать никогда. Вообще странно, что в 2018 году кто-то пользуется денвером. Когда я впервые использовал его в 2013, уже тогда его не советовали использовать, т.к. он уже тогда морально устарел. Как правило, те корчи, которые всё же отважились его использовать, переходят на что-то другое, когда пытаются развернуть на нём хотя бы самый примитивный интернет-магазин.

3. OpenServer.

Хорошо подойдёт для контент-менеджеров или для начинающих разработчиков. В принципе, там есть всё, что нужно для развёртывания почти любого сайта. Также есть расширенная версия пакета,  куда включено огромное множество софта для веб-разработки, что может быть полезно новичкам. Но есть у него и ряд минусов:

  • непонятно, как обстоят дела с серверным софтом за пределами LAMP-стека, а именно со всякими Node.js, Solr, Redis и т.д.
  • консольные инструменты не очень удобны. Это извечная проблема Windows - одна консолька для гита,  одна для mysqldump, третья для drush, четвёртая для composer, но она не работает.

4. Виртуальная машина.

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

5. Разработка на нативном Linux.

Это очень хороший вариант, но по понятным причинам подходит не всем. Но даже если вас полностью устраивает работа на Linux, всё равно здесь есть несколько подводных камней - если вы работаете над разными проектами, у которых разные продакшн-среды, вам нужно постоянно устанавливать весь серверный софт на свою машину. И если переключаться между версиями PHP можно сравнительно легко, то развернуть два проекта с разными версиями Node.js на одной машине будет крайне затруднительно, если вообще возможно.

6. Docker.

Мой любимый и, пожалуй, самый актуальный на данный момент способ. Docker - это способ контейнерной виртуализации linux-машин. С помощью утилиты docker-compose вы можете за считанные секунды поднять среду с абсолютно любой конфигурацией. Но главное преимущество докера - это экосистема. Вы можете найти контейнер для абсолютно любого серверного софта и включить его в свою сборку. Нужен к примеру solr - добавили пару строк в конфигурационный файл, при этом рядом можно развернуть проект с другой конфигурацией или другими версиями ПО, не загаживая свою систему. Docker можно использовать на любой ОС, правда для Windows нужна 10 версия,иначе не будет работать docker-compose. И даже если вы привыкли работать в нативном Linux, докер всё равно даст вам ряд преимуществ и ускорит работу. В частности в моей компании вся разработка ведётся в докере, все сборки основаны на сборке docker4drupal, ставшей уже де-факто стандартом в мире Drupal-разработки.

Заключение.

Если у вас лапки, используйте Openserver, если вы разработчик, используйте Docker. Остальное - отговорки.

Поделиться: