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

Главные вкладки

gun_dose 3 ноября 2018 в 13:01
5

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

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

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. Остальное - отговорки.

Ссылка на оригинал статьи: https://wellsolutions.by/article/vybiraem-sredu-dlya-lokalnogo-razvyorty...

Автор

Комментарии

Аватар пользователя Orion76 Orion76 4 ноября 2018 в 14:10

Как-то раз я сижу я на VDS-ке заказчика, работу работаю..
Заказчик грит: VDS у него крутой, кучу бабла стоит..

И тут откуда ни возьмись - ошибки непонятные посыпались.
Гуглю я, значица, эти ошибки, а гугл меня на форумы по докер-тематике посылает..

Так я и не понял, при чем тут докер? VDS же? -))

Аватар пользователя gun_dose gun_dose 4 ноября 2018 в 14:21

Ну мало ли, 2018 год, как никак. Кто-то купил на амазоне сервак, поставил докер-сборку, чтобы поднять на этом серваке ещё 50 серваков и перепродать их. Так 10 раз по кругу, и в результате самую маленькую матрёшку из этой цепочки впарили заказчику, как дедик))))

Аватар пользователя Max-Z Max-Z 5 ноября 2018 в 15:27
1

zazen wrote:

автор не осилил vagrant

Громоздкое, устаревшее и ресурсоёмкое решение. Что правда, Docker на Windows тоже работает невыносимо медленно даже с Hyper-V (особенно с большими сайтами), но это проблема эмуляции Linux-контейнеров, а не самого Docker.
В статье не упоминается наиболее удобное Docker-решение для новичка (и не только), а именно Lando.
Docker4Drupal со старта засыпает ошибками доступа и прочими нюансами, за которыми приходится лезть на различные форумы, что мне кажется несколько странноватым.

Аватар пользователя madt madt 9 ноября 2018 в 13:56
1

Плюсую!

К тому же документация у lando лучше. Из коробки меньше телодвижений нужно сделать для первого старта и для каждого нового проекта.

Аватар пользователя gun_dose gun_dose 9 ноября 2018 в 14:44

А какие телодвижения нужно делать на docker4drupal?

По поводу lando - смотрел код на гитхабе, вообще не понял, как это работает. Какая-то громоздкая и непрозрачная фигня.

Аватар пользователя Orion76 Orion76 5 ноября 2018 в 15:58
2

Короче вывод:

линуксоиды

используют родные оси.

виндузятники

1.Новички используют виртуальные машины
https://www.virtualbox.org/
образ ununtu-server - https://www.osboxes.org/ubuntu-server/#1540309113928-1a3d4381-0f93
там же можно найти другие образа , в т.ч. и для тех кто любит мышкой.
2.Мальчики-девочки постарше (кто может сам установить linux-сервер ) используют старые системники, микро-писи или облачные ВДС.
3. А дряхлые извращенцы используют докер и прочие вагранты.

Аватар пользователя gun_dose gun_dose 5 ноября 2018 в 16:47

Под линуксом в докере работать удобнее, чем без него. Да и в целом не могу согласиться ни с одним предложением из этого комментария.

Аватар пользователя Orion76 Orion76 5 ноября 2018 в 17:00

Ну, комментарий, в общем то - шутка-) (с небольшим намеком)

А вот зачем мне докер в моих "стандартных" юзкейсах, я пока еще не придумал.

Если окружение моего сервера подходит для того чтобы развернуть проект (новый или из дампа) - зачем мне докер?

Нее.. понятно, если вдруг проект потребует какого-то специфичного окружения, которое без заморочек на рабочем сервере (где уже крутятся другие проекты) не организовать, тогда возможно докер и пригодиться.

Тогда, получается, нет смысла пихать докер и в хвост и в гриву.-)

Аватар пользователя Max-Z Max-Z 5 ноября 2018 в 17:24

gun_dose wrote:

Max-Z написал:

Docker4Drupal со старта засыпает ошибками доступа и прочими нюансами

Вот ни разу такого не было


Вот на видео человек при установке Drupal на чистую D4D получает ошибку.

Аватар пользователя gun_dose gun_dose 5 ноября 2018 в 17:29

Не знаю, читал только официальные доки. Одной командой поднял контейнеры, потом composer create project, потом drush si. Многократно проделывал это на разных конфигурациях d4d

Аватар пользователя ivnish ivnish 6 ноября 2018 в 8:55

В основном на создание каталогов. config/sync и другие установщик не может создать сам. А если создаешь вручную, нужно еще и права выставить 777, иначе установщик не видит каталога.

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

Аватар пользователя gun_dose gun_dose 5 ноября 2018 в 17:24
1

Orion76 wrote:

нет смысла пихать докер и в хвост и в гриву.-)

Ещё одно преимущество докера - снести проект можно значительно быстрее))

Аватар пользователя gease gease 6 ноября 2018 в 1:18
1

По мне хоть на WAMPе работай, лишь бы результат был.
Докер даёт большое преимущество при командной работе на хитровывернутых проектах, когда всем нужно одинаковое окружение и там что-то ещё, кроме какого-нить сервера и пхп с нодой. Всё прозрачно, docker-compose, а в случае чего и сами докерфайлы под гитом.
Так-то и drupalvm, и docker4drupal - отличные проекты, сильно облегчающие работу. Но Докер гораздо прозрачней и гибче в плане добрать/убрать/прикрутить/открутить, собирать docker-compose и писать несложные докерфайлы (то есть докручивать чужие) я научился, а все эти chef-puphet - что там ещё - упаси господь.

Аватар пользователя gun_dose gun_dose 6 ноября 2018 в 9:50

Есть статистика конкретно по wodby-образам:

По этой статистике можно предположить, что этой сборкой пользуются все, кроме нескольких завсегдатаев друпал.ру)))

Аватар пользователя madt madt 8 ноября 2018 в 11:15
1

Вопрос звучит некорректно, так как lando построен на базе docker. А если имелось в виду сравнение docker4drupal и lando, то, думаю, можно сравнить статистику репо проектов.

Lando

Контрибьюторов: 73
Ишью: 172/696
Пул реквестов: 22
Звезд: 1016

Docker4drupal

Контрибьюторов: 33
Ишью: 38/254
Пул реквестов: 1
Звезд: 739

Аватар пользователя adano adano 6 ноября 2018 в 11:35

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

Вообще, правильный вопрос должен быть таким: "А чем же он так хорош?"

Аватар пользователя gun_dose gun_dose 6 ноября 2018 в 11:45
2

Хорош тем, что есть одновременно фотошоп и вменяемая консоль)) А причём тут контент-менеджеры, я вообще не понял.

Аватар пользователя madt madt 8 ноября 2018 в 10:58
1

Поддерживаю! Еще есть Acquia Dev Desktop 2, который мне показался приятнее OpenServer. Сам использую lando для долгих проектов и add2 для остального.