Материалы для WEB разработки на LAMP
Как организовать среду для web разработки

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

И так, давайте рассмотрим эти варианты подходов по организации среды web разработки под LAMP и обсудим их возможности, достоинства и недостатки. Сразу скажу, что эти варианты не претендуют на исключительность и полный охват, а являются лишь моим взглядом, но этот вопрос. Варианты я буду описывать в порядке убывания их некой правильности, с моей точки зрения, для использования. Т.е. чем более правильно использовать описываемый подход с моей точки зрения, тем ближе к началу я его буду описывать.

1. Самым первым из вариантов я бы рассмотрел, пожалуй, такой вариант, как разработка на машине под управлением одной из Unix подобных систем. Это может быть MAC OC или различные дистрибутивы Linux OC, например, Ubuntu (достаточно популярная в последнее время). Эти OC являются родной средой для web приложений, базирующихся на наборе LAMP. На мой взгляд это самый удачный вариант, когда Вы имеете возможность разрабатывать и эксплуатировать ваше web приложение, основанное на LAMP в его родной среде. Здесь вы можете, так сказать, потрогать и попробовать все нюансы разработки настолько глубоко, насколько это вообще возможно. Те же программисты, которые уже работают на Linux OC могут Вам сказать, что у них нет проблемы поиска и выбора пакетов LAMP для web разработки т.к. у них вообще нет такой проблемы, да и многих других неудобств, которые испытывают web разработчики под LAMP, работающие на Win машинах. Главные достоинства такого подхода — это отсутствие различных кроссплатформенных проблем с совместимостью, доступность всего требуемого ПО и полная свобода в web разработке. Здесь вы можете быть в подавлявшем большинстве случаев уверены, что если ваши скрипты работают у вас на машине, то они также будут работать на Linux web сервере вашего хостинг провайдера. Единственное на что нужно будет обращать внимание при развертывании приложения на продуктивном сервере, так это различия версий, установленных на нем и у вас на машине компонентов LAMP. При сильном различии версий и их несовместимости могут быть проблемы. Однако эти проблемы больше теоретические, чем реальные, т.к. если вы на своей машине используете текущие стабильные версии компонентов LAMP и не гонитесь за самыми последними бета версиями, то вы всегда найдете web сервер с такими же или с совместимыми версиями компонентов LAMP. Поэтому мой вывод здесь такой - если Вас ничто не держит, кроме привычки, на Windows OC, то смело переходите на Unix подобную систему. Сейчас достаточно много доступных и хороших дистрибутивов Linux. Я, например, в свое время пробовал Ubuntu, и остался полностью доволен. Все, что мне нужно было для web разработки, я там без труда нашел и даже скажу больше, я думаю, что на долго остался поклонником этого дистрибутива Linux. Возможно мои впечатления субъективны, так как других desktop дистрибутивов Linux я не пробовал, но мне с головой хватило Ubuntu. Также работа под Linux дала мне больше опыта и понимания по настройкам и администрированию web сервера. Одно дело, когда хостинг провайдер предлагает вам настроенный web сервер, и совсем другое дело, когда Вы сами у себя на рабочей машине разворачиваете полноценный Web сервер разработки. Выполняя это вы получаете ценный дополнительный опыт по настройке и администрированию и много других полезных знаний. Если вы действительно хотите поднять свой уровень в web разработке, то по своему опыту скажу, что если вы хотя бы раз полноценно поработаете под Linux, то вам по своей воле не захочется возвращаться на Win среду, во всяком случае для web разработки.

Резюмирую: этот вариант идеальный для web разработки под LAMP, но подходит тем, кто готов расстаться с Win OC в web разработке и готов изучать Linux. А как же иначе web разработчику под LAMP:)

2. Второй подход для тех, кто не готов расстаться с Win OC, но хочет получить все плюсы первого подхода. Это вполне возможно, для этого нужно иметь две системы одновременно на вашей рабочей машине, Windows как основную и Linux как дополнительную. Здесь, на мой взгляд, возможны следующие варианты.

Первый, когда вы устанавливаете на Вашу рабочую машину одновременно две системы. Практически это выглядит как дополнительная установка на ваш PC второй системой Linux OC, например, ту же самую Ubuntu. Ubuntu, по своему опыту, легко устанавливается второй системой к Windows. И после этого Вы при включении PC сможете выбирать в меню загрузки OC систему с в которой будете в настоящий момент работать. Ubuntu, так же, может читать ваши Win файлы. Теперь Вы будете иметь все плюсы первого варианта и при этом всегда сможете перейти к работе под Windows выполнив перезагрузку PC. Вариант весьма продвинутый, но на практике, по моему опыту, не совсем удобный. В этом варианте значимость сохранения Windows на рабочей машине становиться достаточно минимальной. Ведь замете, что перезагружать PC для смены системы не совсем удобно, и если такой подход вас устраивает, то значит, что Windows Вы используете достаточно редко и, в принципе, сможете без нее обходится, а это уже прямой путь к полному переходу на Linux. Это вариант особенно подходит тем, кто еще твердо не определился стоит ли полностью переходить на Linux OC не только для web разработки, но и для всех остальных задач.

Второй вариант этого подхода, это установить Linux систему на виртуальную машину запушенную на вашем PC с Windows. При таком подходе вы сможете продолжать работать в Windows как обычно, но в тоже время получите возможность запустить свои скрипты в полноценной Linux среде на виртуальной машине. В этом варианте на виртуальную машину лучше устанавливать северную версию Linux. Так вы сможете получить полное сходство, как если бы вы работали с реальным хостингом. Тут вам и SSH подключение, и FTP, и настройка, одним словом полный реализм, как на продуктивном сервере. С виртуальной машиной вы можете организовать общие папки для вашей основной системы и гостевой и разместить в этих папках свои проекты. Тем самым вы будете работать с вашими проектами из-под редактора кода в Win, а запускать на исполнение уже на виртуальной машине в среде Linux. Также если в ваш проект вовлечено несколько разработчиков, то такой вариант тоже удобен. Вы сможете настроить на виртуальной машине web сервер и передать файл виртуальный машины своим коллегам, и у всех будет единая среда для запуска и тестирования скриптов. Из недостатков этого варианта я вижу несколько повышенные требования к железу вашего PC, хотя все это достаточно относительно так как большинство современных ноутбуков спокойно потянут такой вариант. Некоторым такой вариант может показаться излишне сложным, хотя из моего опыта, это только на первый взгляд сложно, в действительности же это не сложнее чем та же работа с хостингом.

Теперь какие инструменты для этого можно использовать.
Самое удобное, на мой взгляд, это использование виртуальной машины Oracle VM VirtualBox (https://www.virtualbox.org/). Тут все понятно, устанавливаем виртуальную машину себе на PC, затем на эту виртуалку устанавливаем Linux сервер. Настраиваем сеть, общие папки, устанавливаем на Linux сервер все необходимые компоненты. Все эти действия не сложные и хорошо описаны в соответствующих мануалах. Еще, по своему опыту скажу, этот вариант хорошо подходит тем, кому все же необходимо работать на Windows, но в то же время кто только начинает изучать Linux и имеет мало опыта по установке и настройке Linux сервера. На виртуальной машине вы сможете все это сделать легко и без каких-либо дополнительных затрат. Если что-то пошло не так или не понятно, то на виртуалку всегда можно заново все переустановить, потому что, опыт показывает, что с первого раза не получается все сделать и настроить идеально. Только уже после нескольких установок, проб и ошибок, получив нужный опыт удается настроить web сервер именно так как нужно.
Другой инструмент, который я пробовал, это Vagrant (https://www.vagrantup.com/).  Vagrant (англ. бродяга) — это, как пишут в wiki, свободное и открытое программное обеспечение для создания и конфигурирования виртуальной среды разработки. Vagrant является оберткой для программного обеспечения виртуализации, например, VirtualBox, и средств управления конфигурациями, такими как Chef, Salt и Puppet. Иными словами, Vagrant это программная обертка для разных виртуальных машин и нужно заметить, что по умолчанию Vagrant использует все туже Oracle VM VirtualBox. Vagrant позволяет также переносить среду разработки между разными PC сохраняя все настройки, позволяет разворачивать разные варианты Linux сервера. Но здесь нужно понимать, что в конечном итоге у Vagrant суть та же самая, что и при использовании Oracle VM VirtualBox, просто добавлены некоторые дополнительные полезности и больше универсальности. Однако, мне Vagrant показался излишне сложным и навороченным, хотя если бы я использовал его подольше, то думаю это впечатление развеялось бы. Но в тот момент у меня не было лишнего времени на изучение Vagrant, и я раз его попробовал, вернулся на Oracle VM VirtualBox, потому что так было привычнее и быстрее.

Резюмирую: этот подход для тех кому все же необходимо продолжать работать на Windows и в то же время нужна максимально реальная и родная среда LAMP в качестве web сервера разработки, и кто готов администрировать Linux сервер.

3.Третий подход - это использование различных LAMP сборок под Win. Называть их LAMP не совсем правильно, т.к. это WinAMP дистрибутивы, суть которых заключается в конфигурировании в один пакет компонентов (Apache, MySQL и PHP) web сервера скомпилированных для работы на Windows. Нужно заметить, что вы также можете сами установить все эти компоненты по отдельности на свой PC так как каждый из компонентов имеет вариацию дистрибутива под Windows. Однако на мой взгляд удобнее все же пользоваться готовыми сборками, где уже все компоненты настроены по отношению к друг другу, что позволяет экономить время. В таких сборках после их установки вам достаточно добавить только свои проекты, и иногда сделать дополнительные настройки, выполнение которых часто упрошено дополнительным функционалом, которые предоставляют эти пакеты. Теперь давайте приведу примеры таких пакетов.
Первый, на мой взгляд самый удобный, это EasyPHP DevServer (http://www.easyphp.org/). Этот DevServer достаточно гибко настраивается, большинство настроек можно выполнить через web интерфейс, но и при желании можно и руками. Что мне особо понравилось в EasyPHP, так это возможность добавить в него разные версии PHP и свободно переключатся между ними, например, вы можете работать под PHP 5.4.20, можете переключиться на PHP 5.6.4 и работать на этой версии. Этот пакет имеет и разные дополнительные модули которые расширяют его функционал и облегчают настройку, например, модуль настройки виртуальных хостов, модуль xdebug и многое другое. Вообще пакет достаточно гибкий, активно обновляемый, полнофункциональный (в смысле того, что компоненты в нем не урезанные) и постоянно поддерживается в актуальном состоянии, что очень немаловажное. Также эти ребята предлагают и EasyPHP Webserver как хост сервер. Одним словом, сборка стоящая и сможет удовлетворить все ваши потребности и в тоже время может значительно упростить процесс развертывая среды разработки если у вас ограничено время. Сборка легко устанавливается, может работать без административных привилегий, может переноситься на флешке как portable версия. Мне эта сборка очень понравилась, и я ее использую сейчас на постоянной основе. Единственное чего в ней не хватало (может это решение и есть, просто я его не искал, а пошел по удобному для себя варианту) так это функционала по отправке email. Но я поступил в здесь достаточно просто в виду ограниченности времени, это прикрутил в этот пакет заглушку sendmail от пакета Dewnwer (о нем ниже) и меня на данном этапе это устроило, поэтому я не стал искать другого решения.
Второй дистрибутив, который я также попробовал, это wampserver (http://www.wampserver.com/ru/). Wampserver предоставляет весь основной функционал, но на мой взгляд он все же уступает по удобству и главное по функционалу EasyPHP.
Третий пакет, который я активно использовал ранее на протяжении довольно длительного времени - это Denwer (PHP5.3). Пакет в принципе полностью удовлетворял меня до тех пор, пока не возникла потребность переходить на более новые версии PHP, так в результате я попробовал Wampserver и EasyPHP DevServer и остановился на последнем. С тех пор новости по пакету Denwer я перестал отслеживать, поэтому ничего определенного сказать не могу. Однако от пакета Denwer я продолжаю использовать sendmail заглушку вместе с EasyPHP DevServer. Для этого я перенес файлы, отвечающие за работу sendmail Денвера без нарушения структуры каталогов в корневую директорию EasyPHP и когда необходимо запускаю sendmail для перехвата почты отправленной из скриптов.
Помимо описанных мною здесь сборок WinAMP существуют и другие, но все они имеют одинаковый принцип и отличаются в основном только деталями. Поэтому, в конечном итоге, вам нужно самим определиться, что вам больше подходит.

Резюмирую: этот вариант подходит тем, кому необходимо работать на Windows и в тоже время без лишних сложностей и деталей иметь среду разработки для web приложений без необходимости детальных настроек и администрирования Linux сервера. Обычно, это требуется, когда нужно тестового установить и по изучать какую ни будь систему управления контентом.

 

Еще по теме:

LAMP WEB сервер - установка, настройка администрирование. Часть 1