В настоящее время моей средой разработки является Ubuntu v12.04 с VMWare. Я работаю полностью внутри виртуальной машины, с полным графическим интерфейсом и использую общий доступ к файлам samba в Ubuntu только в том случае, если мне нужно получить доступ к файлам с моей операционной системы Windows 7. Я обычно обращаюсь к сетевому диску и сопоставляю его с помощью внутреннего IP-адреса ВМ через NAT для работы в сети с ВМ. Использование других решений оказалось намного медленнее, чем общих папок VMWare. У меня это отключено в моих настройках VMWare Image. Однако я устанавливаю инструменты VMWare, чтобы можно было легко копировать / вставлять данные на мой хост-компьютер и наоборот.
Как отметил Матиас Зейс, будьте осторожны при выборе сетевых / общих папок с вашей виртуальной машиной, так как некоторые из них окажутся проблематичными.
Я был предыдущим пользователем VirtualBox, но обнаружил, что VMWare более стабильный и работает приемлемо (по крайней мере, для меня). Однако я бы выполнил ваши собственные тесты, чтобы лучше всего удовлетворить ваши потребности и требования, т.е. Vagrant использует VirtualBox.
IDE:
я довольно широко использовал Netbeans в качестве своей предпочтительной среды IDE, но с тех пор перешел на более легкое решение, такое как Sublime Text 2 . Я редко открываю Netbeans, так как в основном для целей X-Debug и более простого рефакторинга. NetBeans, PHPStorm, Eclipse и т. Д. Являются IDE на основе Java и могут быть очень ресурсоемкими.
ОБОРУДОВАНИЕ:
Чтобы добавить больше, аппаратное обеспечение всегда будет играть ключевую роль в производительности (очевидно). Если ваши разработчики все еще используют жесткие диски, я бы посоветовал инвестировать в SSD для них. Так как Magento имеет очень большое количество файлов / папок, это значительно повысит производительность разработчиков. Во время разработки: при отключенном кэшировании и при простом обходе дерева папок в SVN / GIT или в вашей IDE. Предоставление вашей виртуальной машине достаточно оперативной памяти также не менее важно.
Мой хост-компьютер: Samsung SSD 512 ГБ. Место на диске, Win7 (64-разрядная), 8 ГБ ОЗУ, i7 2,4 ГГц (8 ядер).
Моя виртуальная машина: Samsung SSD, 30 ГБ дискового пространства, Ubuntu 12.04 (32 бита), 3 ГБ ОЗУ, i7 (выделено 4 ядра).
ВОПРОСЫ, КОТОРЫЕ НАДО ЗАДАТЬ:
Самый большой вопрос заключается в том, чтобы создать один образ виртуальной машины разработчика, который является легковесным и многократно используемым в нескольких проектах, или создать образ для каждого проекта. Раньше я пытался создавать меньшие виртуальные машины для каждого проекта, однако реконфигурирование, постоянно включающее мой рабочий процесс разработки, стало слишком тяжелой работой, и теперь я использую одну большую виртуальную машину и изо всех сил стараюсь сохранить каждый проект как можно более изолированным.
Поддержание ОС, IDE, стека LAMP, обновлений / конфигураций и т. Д. Может стать рутиной, если выбран маршрут для нескольких ВМ на проект. В конечном итоге это приводит к увеличению времени разработки (и еще худшему неоплачиваемому времени для локальных настроек среды).
Это также оказалось полезным, так как я быстро смог получить доступ к другим файлам проекта без необходимости открывать новую виртуальную машину и еще больше разделять свое оборудование. Недостатком является то, что в идеале я бы хотел, чтобы каждый проект был изолирован от других проектов, чтобы предотвратить любые непредвиденные проблемы со средой (например, php.ini, my.cnf, httpd.conf и т. Д.). Пока что компромисс между доступностью всех проектов оказался более изобретательным.
Опять же, это зависит от ваших требований и потребностей, поэтому оцените их заранее.
ОБРАТНАЯ СВЯЗЬ:
что приводит к обратной связи. Получите как можно больше информации от ваших разработчиков. В конечном итоге их требования должны быть удовлетворены, а их проблемы понятны, прежде чем будет найдено правильное решение. У всех разные рабочие процессы, и не всем удобно работать в той ОС, которую вы выбрали для разработки. Мое эмпирическое правило: пусть разработчик выберет свою ОС и IDE, в которых он наиболее удобен и будет работать лучше всего. Таким образом, даже легкая безликая виртуальная машина Linux может оказаться полезной для их нужд, но, очевидно, может столкнуться с проблемой совместного использования папок в локальной сети между хостом и виртуальной машиной.
ПОРТАТИВНОСТЬ:
Я также поиграл с идеей сохранить образ виртуальной машины на чем-то вроде Dropbox, чтобы я мог легко получить к нему доступ в любое время, когда это потребуется. Поскольку такие сервисы, как Dropbox, сравнивают по частям то, что хранится, казалось логичным, что синхронизируются только те биты, которые я изменил. Однако это оказалось не так, поскольку я полагаю, что это связано с внутренними данными о том, как сохраняется файл образа, и я буду ждать весь день / ночь только для синхронизации моей виртуальной машины.
ЗАМЕЧАНИЯ.
Чем больше места на диске выделено для виртуальной машины, тем больше становится образ, помните об этом при распространении образа среди разработчиков. Фронтальная загрузка файлов проекта для каждого проекта может быть излишней, и я бы оставил это каждому разработчику для настройки после того, как у него будет созданный образ.
У Эшли Шредер есть довольно старая связанная статья, которая хорошо читается, а также некоторые комментарии Фумана и Колина
Надеемся, что это поможет понять проблему, указанную в списке, № 6.