- PVSM.RU - https://www.pvsm.ru -
Пытаться разрабатывать большие и средние PHP проекты на Windows, по моему, не совсем правильно. Поэтому если PHP разработка это ваше основное занятие, то скорее всего вас давно на рабочей машине стоит Linux и горя вы не знаете. Но если по каким-то причинам вы также, как и я, прилипли к Windows, но при этом вам необходимо работать с веб проектами, эта статья поможет вам настроить и запустить 100% полноценную среду для веб разработки с любым набором линукс софта, докером, и при всем этом красиво интегрированную в Windows.
И так, это
Ниже все тоже самое, но развернуто…
Когда-то очень давно был Денвер [1], Far manager и FTP. Этого хватало. Потом подключались ssh, git, phing, composer — но все это так или иначе, с небольшими танцами с бубном, можно было настроить в Windows и продолжать жить в своем счастливом мире. Это было предельно просто, понятно и легко.
Такая счастливая пора длилась довольно долго. Но в какой-то момент стартовала неистовая гонка за новыми технологиями, которая с каждым годом лишь набирала обороты. Денвер не успевал и не хотел успевать за выходом новых версий PHP, проекты росли и становились сложнее, зоопарк технологий плодился на глазах.
Спасением на некоторое время стал OpenServer [2]. Очень адекватное решение для Windows с большим количеством инструментов и достаточно актуальными версиями ПО. На нем удалось продержаться несколько лет. Если вы начинающий разработчик, прилипший к Windows, если у вас относительно простые проекты, или веб разработка это ваше не основное занятие, то выбор в пользу OpenServer для вас может быть очень хорошим решением. Просто, удобно и понятно.
Но зоопарк технологий в нашей компании тем временем продолжал расти — nodeJS, elastic, разные версии PHP для разных проектов — от 5.6 до 7.1. Стартанули проект на PHP 7.1, а OpenServer оказывается не поспевает… На момент написания этой статьи поддержка 7.1 уже есть, но тогда не было. Да и обновлять OpenServer занятие не очень приятное, т.к. с переносимостью настроек между версиями у них тяжело.
Немного потыкался, погуглил более продвинутые аналоги OpenServer. Не нашел ничего вразумительного. Ну и бросил это дело, т.к. для средних и больших проектов с кучей зависимостей этот путь развития кажется тупиковым.
Была предпринята попытка настроить подсистему Ubuntu на Windows. Потыкался, что-то попытался поставить и настроить. Это не работает, то глючит, документации внятной не найдешь.
Пришлось проапргрейдить домашнюю версию до professional, чтобы все заработало нативно. Несколько дней возьни с настройками, перенастройками, установками. Ну и плюсом погружение в докер. Работает!
Серьезно, докер на Windows работает вполне вполне успешно, и наверняка пойдет для мелких и средних проектов. У меня же все уперлось в производительность файловой системы в shared volumes. Этот баг давно известен и хорошо описан, например здесь [3], проявляется он на Windows и Mac.
На практике на моей машине с SSD диском это выглядело так — открытие стартовой страницы сразу после дефолтной установки Symfony 3 занимало в среднем 1.5 секунды. Проект над, которым мне надо было работать, самую простую страницу открывал около 10-15 секунд, некоторые тяжелые страницы вообще не открывались. Работать в таких условиях я посчитал нереальным.
Существует проект docker-sync [4], который как раз призван решить проблему со скоростью работы файловой подсистемы. Вместо использования shared volumes, docker-sync организует двунаправленную синхронизацию файлов между вашей локальной системой и докер контейнерами. К сожалению, попробовать docker-sync в реальной работе мне так и не довелось. К тому моменту я устал от обилия костылей, которыми обрастала моя конфигурация среды разработки на Windows и решил снова дать шанс виртуальным машинам.
«Это то, с чего надо было начать!» — скажет продвинутый читатель, и окажется почти прав.
Конечно, за всю историю своей веб разработки на Windows, я не раз пытался переключиться на использование виртуальных машин. Но ни одна из тех попыток не была успешной из-за значительного ухудшения User Experience, который я получал при использовании виртуалок. Не знаю, с чем это связано, может с недостатками VirtualBox, который я использовал, может с кривыми руками и ленью, но факт, остается фактом — я пробовал Linux в VirtualBox, натыкался на какие-то проблемы одна за одной, плевался, все бросал и возвращался в свой уютный Windows.
В очередной раз, обернувшись в сторону виртуализации, я нашел очень многообещающую инструкцию по установке Linux на бесплатную версию WMVare Player.
Минимальный набор требований к виртуальной машине для комфортной работы выглядел с моей стороны примерно так:
И вот, наконец-то, звезды сошлись вот в таком варианте использования ПО:
Для еще большего удовольствия от работы следует выполнить несколько дополнительных настроек виртуальной машины. Для этого в меню Player, Manage, выберите Virtual Machine Settings. Там внутри
Вот так в несколько довольно простых шагов мы получили практически идеальную среду Linux для разработки, работающую внутри виртуальной машины. При этом для нас любое приложение из виртуальной машины выглядит так, как будто оно запущено в среде Windows.
Я очень надеюсь, что с установкой xubuntu в виртуальную машину вы справились самостоятельно, также как и справитесь с настройкой необходимого ПО для запуска своих веб проектов на Linux. Для этого достаточно следовать любой инструкции по установке Nginx, Apache, MySQL, PHP и других приложений на Ubuntu. Либо использовать Docker, как это делаю теперь и я.
Кстати, приложение которое у меня выполнялось по 15 секунд и больше в докер контейнерах на Windows, в виртуальной машине отрабатывает секунды за 3, т.е. в 5 раз быстрее. Конечно, хотелось бы еще большей скорости, но пока это лучший вариант из найденных мной, и он очень удобный.
Данная статья во многом основана на материале из данного видео [7]. Если вы хотите увидеть полную пошаговую инструкцию по установке и настройки виртуальной машины, то рекомендую к просмотру. Язык — английский, автор видео — Nick Janetakis.
Автор: dmtr81
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/269238
Ссылки в тексте:
[1] Денвер: http://www.denwer.ru
[2] OpenServer: https://ospanel.io
[3] здесь: https://github.com/docker/for-win/issues/188
[4] docker-sync: http://docker-sync.io
[5] по ссылке: https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/7_0
[6] тут: http://mirror.us.leaseweb.net/ubuntu-cdimage/xubuntu/releases/14.04/release/xubuntu-14.04.2-desktop-amd64.iso
[7] данного видео: https://www.youtube.com/watch?v=ropU_aT-D6o
[8] Источник: https://habrahabr.ru/post/343312/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.