image

Пытаться разрабатывать большие и средние PHP проекты на Windows, по моему, не совсем правильно. Поэтому если PHP разработка это ваше основное занятие, то скорее всего вас давно на рабочей машине стоит Linux и горя вы не знаете. Но если по каким-то причинам вы также, как и я, прилипли к Windows, но при этом вам необходимо работать с веб проектами, эта статья поможет вам настроить и запустить 100% полноценную среду для веб разработки с любым набором линукс софта, докером, и при всем этом красиво интегрированную в Windows.

Спойлер - для тех, кому лень много читать
После долгих лет работы под всякими Denwer/OpenServer, мучениями с нативным докером для Windows, VirtualBox-ом, попыткой использовать подсистему Ubuntu в Windows и прочее, прочее… я наконец-то нашел связку ПО, которая позволяет поднять безупречную Linux систему поверх Windows и сделать работу внутри Linux такой же органичной, как и работу с любым приложением Windows.

И так, это

  • VMware Player 7 для создания виртуальной машины
  • Xubuntu 14.02 64-bit как подсистема линукс
  • VMware Tools
  • VMware Unity mode
  • Несколько простых настроек, чтобы все было удобно (см. ниже)

Ниже все тоже самое, но развернуто…

Немного истории TL DR


Когда-то очень давно был Денвер, Far manager и FTP. Этого хватало. Потом подключались ssh, git, phing, composer — но все это так или иначе, с небольшими танцами с бубном, можно было настроить в Windows и продолжать жить в своем счастливом мире. Это было предельно просто, понятно и легко.

Такая счастливая пора длилась довольно долго. Но в какой-то момент стартовала неистовая гонка за новыми технологиями, которая с каждым годом лишь набирала обороты. Денвер не успевал и не хотел успевать за выходом новых версий PHP, проекты росли и становились сложнее, зоопарк технологий плодился на глазах.

Спасением на некоторое время стал OpenServer. Очень адекватное решение для Windows с большим количеством инструментов и достаточно актуальными версиями ПО. На нем удалось продержаться несколько лет. Если вы начинающий разработчик, прилипший к Windows, если у вас относительно простые проекты, или веб разработка это ваше не основное занятие, то выбор в пользу OpenServer для вас может быть очень хорошим решением. Просто, удобно и понятно.

Но зоопарк технологий в нашей компании тем временем продолжал расти — nodeJS, elastic, разные версии PHP для разных проектов — от 5.6 до 7.1. Стартанули проект на PHP 7.1, а OpenServer оказывается не поспевает… На момент написания этой статьи поддержка 7.1 уже есть, но тогда не было. Да и обновлять OpenServer занятие не очень приятное, т.к. с переносимостью настроек между версиями у них тяжело.

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

Подсистема Ubuntu в Windows 10?


Была предпринята попытка настроить подсистему Ubuntu на Windows. Потыкался, что-то попытался поставить и настроить. Это не работает, то глючит, документации внятной не найдешь.

Docker на Windows?


Пришлось проапргрейдить домашнюю версию до professional, чтобы все заработало нативно. Несколько дней возьни с настройками, перенастройками, установками. Ну и плюсом погружение в докер. Работает!

Серьезно, докер на Windows работает вполне вполне успешно, и наверняка пойдет для мелких и средних проектов. У меня же все уперлось в производительность файловой системы в shared volumes. Этот баг давно известен и хорошо описан, например здесь, проявляется он на Windows и Mac.

На практике на моей машине с SSD диском это выглядело так — открытие стартовой страницы сразу после дефолтной установки Symfony 3 занимало в среднем 1.5 секунды. Проект над, которым мне надо было работать, самую простую страницу открывал около 10-15 секунд, некоторые тяжелые страницы вообще не открывались. Работать в таких условиях я посчитал нереальным.

Существует проект docker-sync, который как раз призван решить проблему со скоростью работы файловой подсистемы. Вместо использования shared volumes, docker-sync организует двунаправленную синхронизацию файлов между вашей локальной системой и докер контейнерами. К сожалению, попробовать docker-sync в реальной работе мне так и не довелось. К тому моменту я устал от обилия костылей, которыми обрастала моя конфигурация среды разработки на Windows и решил снова дать шанс виртуальным машинам.

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


«Это то, с чего надо было начать!» — скажет продвинутый читатель, и окажется почти прав.
Конечно, за всю историю своей веб разработки на Windows, я не раз пытался переключиться на использование виртуальных машин. Но ни одна из тех попыток не была успешной из-за значительного ухудшения User Experience, который я получал при использовании виртуалок. Не знаю, с чем это связано, может с недостатками VirtualBox, который я использовал, может с кривыми руками и ленью, но факт, остается фактом — я пробовал Linux в VirtualBox, натыкался на какие-то проблемы одна за одной, плевался, все бросал и возвращался в свой уютный Windows.

В очередной раз, обернувшись в сторону виртуализации, я нашел очень многообещающую инструкцию по установке Linux на бесплатную версию WMVare Player.

Минимальный набор требований к виртуальной машине для комфортной работы выглядел с моей стороны примерно так:

  • адекватная скорость
  • работа с приложениями Linux также как с обычными приложениями Windows (unity mode в WMvare или Seamless mode в VirtualBox).
  • нормальная работа буфера обмена между хост машиной и виртуальной машиной в обе стороны
  • общие файлы без тормозов с синхронизацией в обе стороны
  • полноценная Linux среда со всеми возможностями, в т.ч. вложенной docker виртуализацией
  • крайне желательна простая настройка без плясок с бубном и поиском костыльных решений

И вот, наконец-то, звезды сошлись вот в таком варианте использования ПО:

  • VMware Player 7.x. Обязательно нужна именно 7-я версия. Более поздние версии не поддерживают режим Unity для Linux. Т.е. пользоваться то тоже можно, но будет не так удобно, как с 7кой. VMware Player бесплатен для некоммерческого использования. Скачать нужную версию можно по ссылке
  • В качестве гостевой Linux системы берем xubuntu 14.02 64-bit. Скачать можно тут
  • После создания виртуальной машины и установки ОС требуется установить VMware Tools. VMware сама вам напомнит об этом при установке и после, но если вы этот момент пропустили, то для установки нажмите на меню Player, потом Manage и выберите Install VMware Tools.
  • С VMware Tools мы можем переводить нашу виртуальную машину в Unity mode, а на любое Linux приложение создавать ярлыки на рабочем столе или закреплять его на панели задач, как обычное Windows приложение.

Для еще большего удовольствия от работы следует выполнить несколько дополнительных настроек виртуальной машины. Для этого в меню Player, Manage, выберите Virtual Machine Settings. Там внутри

  • Hardware, Network Adapter. Выберите режим соединения Bridged и отметьте опцию Replicate physical network connection state. В таком режиме виртуальная машина будет выглядеть, как компьютер подключенный к вашей локальной сети, а при перезапуске машины она будет пытаться сохранить свой прежний IP адрес.
  • Во вкладке Options вы можете настроить общие папки между вашей и виртуальной машинами. По умолчанию Shared Folders отключены.
  • Ну и в Options, Unity можно поснимать галочки с пунктов Show borders и Show badges, чтобы Linux окна никак не выделялись на фоне остальных. Хотя это совсем не обязательно.

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

Я очень надеюсь, что с установкой xubuntu в виртуальную машину вы справились самостоятельно, также как и справитесь с настройкой необходимого ПО для запуска своих веб проектов на Linux. Для этого достаточно следовать любой инструкции по установке Nginx, Apache, MySQL, PHP и других приложений на Ubuntu. Либо использовать Docker, как это делаю теперь и я.

Кстати, приложение которое у меня выполнялось по 15 секунд и больше в докер контейнерах на Windows, в виртуальной машине отрабатывает секунды за 3, т.е. в 5 раз быстрее. Конечно, хотелось бы еще большей скорости, но пока это лучший вариант из найденных мной, и он очень удобный.

Данная статья во многом основана на материале из данного видео. Если вы хотите увидеть полную пошаговую инструкцию по установке и настройки виртуальной машины, то рекомендую к просмотру. Язык — английский, автор видео — Nick Janetakis.

Комментарии (56)


  1. Shtucer
    27.11.2017 17:26
    +1

    Ну и в Options, Unity можно поснимать галочки с пунктов Show borders и Show badges, чтобы Linux окна никак не выделялись на фоне остальных. Хотя это совсем не обязательно.

    А можно совсем не ставить никаких иксов.


  1. smarthomeblog
    27.11.2017 17:28

    Пробовал работать на Windows. Поставил все, что надо, промучился неделю, поставил Fedora второй операционкой.


    1. dmtr81 Автор
      27.11.2017 18:49

      Второй — это dual boot? По моему это очень неудобно. По крайней мере для меня, т.к. мне часто приходится переключаться между задачами.
      С другой стороны, если вам нужно чтобы ничего не отвлекало от работы, такой подход может даже оказаться предпочтительнее.


  1. Hazactam
    27.11.2017 17:29

    Была предпринята попытка настроить подсистему Ubuntu на Windows. Потыкался, что-то попытался поставить и настроить. Это не работает, то глючит, документации внятной не найдешь.

    Странно, у меня завелась с пол-тыка. Всё, в целом, работало. Виртуалки, в общем-то уже и не нужны.


    1. Terras
      27.11.2017 17:33

      Иногда бывает гемор, когда в проекте используются компоненты, которые идут только под Линукс. Например, системы очередей и отложенного выполнения.


    1. kahi4
      28.11.2017 13:15

      Ковырял как напрямую этот WSL, так и докер в нем. Все работает замечательно, никаких проблем сейчас нет (но еще этим летом они все же были). Единственное ограничение, которое сейчас мне мешает, это невозможность в vs code заставить python работать через через баш, хотя в теории достаточно прописать путь к питону как bash -ic python. Но issue есть и скоро вроде починят.


  1. SirEdvin
    27.11.2017 17:47

    А почему не dual boot? Мне в целом не понятно, по какой причине windows может быть удобнее как рабочая среда для программиста, если вы не связаны с .net.


    1. dmtr81 Автор
      27.11.2017 18:00

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

      Ну и dual boot в таких условиях это дико неудобно.


      1. Gemorroj
        27.11.2017 19:37

        у нормального программиста на рабочем месте должен быть линукс

        Это такой обязательный атрибут чтобы приобщиться к "илите"?
        Не имею ничего против линукса, но почему не допускается вариант, что может быть удобнее windows?
        Мы работаем, в первую очередь, с набором ПО, а не с самой операционной системой. И набор ПО под windows для решаемых мною задач мне нравится больше.
        Скажем, полноценного аналога Total Commander до сих пор нету.
        И, раз уж речь в статье про веб разработку, то и аналога OpenServer нету. А он крайне удобен.


        1. mozzzg
          28.11.2017 08:17

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

          Когда долгое время в команде в подавляющем большинстве случаев используется Mac OS и различные GNU Linux дистрибутивы, то получается так, что с большинством проблем ты и твоя команда уже сталкивались, вы знаете как их решить. В самом худшем случае — помощь для Mac OS и GNU Linux в гугле находится довольно скоро. И, зачастую, для Mac OS даже не приходится какой-то отдельный подход выискивать.

          А теперь в нашу команду приходит разработчик на Windows, у которого возникают какие-то свои совершенно волшебные проблемы, с которыми помочь не только мы, но и гугл особо не в силах, у него всё почему-то начинает тормозить, файлы в VM не синхронизируются, о нормальном запуске проекта с помощью Docker (к слову, у нас всё на заранее сбилденных образах, поэтому подниматься должно прекрасно) и говорить не приходится.

          Особые умельцы не говорят о своих проблемах и поднимают проект как-то по своему, в итоге, во время разработки, их изменения не работают на стейджинге так, как хотелось бы, а ответ от разработчика банален — «У меня локально всё работает».

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

          Всё вышесказанное относится к веб-разработке на Python + Django.


      1. BeppeGrillo
        27.11.2017 22:27

        и требуют Windows приложений

        VirtualBox с виндой в Seamless mode пробовали?


      1. psFitz
        30.11.2017 10:16

        Тоже раньше так думал, но после очередного обновления убунту, когда все слетело и пришлось сутки заново настраивать сервер, восстанавливать битые пакеты, я плюнул и поставил десятку, на неё накатил все что было на убунте, поставил нормальную консоль, настроил Ide под эту консоль и радости моей нет границ, хотя до этого 4 года сидел на убунте. Единственный минус — из-за файловой системы медленней работают бд.


  1. saw_tooth
    27.11.2017 17:47
    +1

    Статья называется

    Настройка Windows для веб разработки в 2017 году

    Открываю вижу:
    Xubuntu 14.02 64-bit как подсистема линукс

    Где тут настройка Windows?
    PS. Когда я хочу кушать, я покупаю еду, а не завод по изготовлению полуфабрикатов.


  1. T-362
    27.11.2017 17:50

    PhpStorm цепляет на себя композер, месс дететкор, код сниффер и юнит тесты. XAMPP крутит апач и базу — хватает по самые уши, если что-то нужно особенное типа gearman или redis то есть виртуалка — centos с командной строкой, которая подхватывает расшаренную с ней папку htdocs и запускает своим апачем, контент же продолжает использовать mysql с винды по айпишнику.


    В винде вообще ничего настраивать не нужно (ну, хостс по вкусу), в виртуалке и линуксе по минимуму по стандартным мануалам.


  1. ZoomLS
    27.11.2017 17:50

    Честно говоря, очередной набор костылей. Есть же Docker(в винду же завезли уже?), вот она веб-разработка в 2017 году.


    1. dmtr81 Автор
      27.11.2017 17:56

      А вы статью то прочитали, или сразу комментировать пошли? Докер на винде работает медленно. Обходные пути вроде как есть, но выглядит это как раз, как костыли.


      1. SonicGD
        28.11.2017 08:13

        Я не сомневаюсь что у вас есть какие-то проблемы, но у нас вся разработка идёт через Docker for Windows и не могу сказать что мы как-то страдаем от скорости дисковой системы. Учитывая, что затем развёртка на прод идёт также в контейнерах, мы получаем максимально идентичное окружение у разработчиков.


      1. pbatanov
        28.11.2017 13:59

        Докер на Win10 работает нативно быстро, если используется Hyper-V драйвер. Тормоза вольюмов VBox можно обойти, настроив файл-синк проекта шторма в руками созданный докер-хост на убунте. Если у вас Win10 — то просто поменяйте подсистему виртуализации и все залетает


  1. Renaissance
    27.11.2017 20:11

    Автор, а с какими проблемами с VirtualBox вы столкнулись? Там тоже есть Seamless-режим, и он вроде как работает в свежих версиях GNU/Linux дистрибутивов. По функционалу оно точно не уступает 7 версии WMware Player.


    1. Boyd_Rice
      28.11.2017 19:26

      Лично у меня при установке Ubuntu Server 16 с установкой ubuntu-desktop --no-install-recommends в принципе не хотят работать иксы (после логина, выкидывает назад на экран логина), и даже с полной установкой десктопа не устанавливаются дополнения virtual box. Следовательно, даже буфер обмена не пашет.


  1. Singaporian
    27.11.2017 20:48
    +2

    Может я конечно невнимательно прочитал, но у меня вопрос:
    Веб-разработка, за исключением очень редких случаев, делается на интерпретируемых языках, а значит, им плевать на каком типе ОС стартовать (ок, редкие проблемы типа Unicorn на Linux можно обойти).
    Какую конкретно техническую проблему решает все это нагромождение?


    1. E_STRICT
      27.11.2017 21:53

      Веб разработка помимо языков программирования включает в себя много других технологий. Веб серверы, базы данных, сборщики и препроцессоры на NodeJS, Memcache, Varnish, Selenium, Apache Solr, Git, Bash скрипты и много еще всякого, особенного на сложных проекта. Большинство из этих нехнологий можно установить на Windows, но результат не всегда такой же как в Linux.
      Самая большая проблема это отсутствие нативной поддержки Docker контейнеров, (Docker for Windows пока ещё не очень хвалят).


      1. Singaporian
        27.11.2017 22:16

        Так, давайте по списку:

        • NodeJS, Memcache — абсолютно одинаковое поведение, что на Windows, что на Linux.
        • Selenium — не используется на Dev (он нужен для QA). Но даже если бы использовался, то попал бы в список выше к ноде и мэмкэшу.
        • Varnish — не имеет к приложению никакого отношения. Это реверс-прокси.
        • Apache Solr — написана на Java, с ее хваленой кросс-платформенностью
        • Git — он обязан стоять на Windows при любом раскладе, потому что там IDE
        • Bash — не нужен в веб-разработке

        Вопрос «Какую конкретно техническую проблему решает все это нагромождение?» остался открытым :-)


        1. Hazactam
          27.11.2017 22:45

          Мы уже 5+ лет разрабатываем довольно сложный web проект под Windows. Со всем как-то справляемся. Гит (сервер), в офисе, правда, стоит под виртуалкой на линуксе.


        1. zenn
          27.11.2017 22:59

          Присоединюсь, абсолютно никаких проблем в веб-разработке на «венде» нет, как и собственно не понятно какие проблемы затрагивает автор в статье (конкретно не приведено ни 1 проблемы, которую автор решил или настроил). Дополню список:

          • Веб-сервер: никаких проблем, подымайте nginx/apache, готовые бинарники всегда есть на сайтах разработчиков
          • Базы данных: mysql,pgsql а так же ряд noSql вполне удовлетворительно работают, бинарники опять же есть на сайтах разработчиков
          • git отлично работает из cmd/powershell, кроме того есть очень удобные GUI для новичков (привет от github for desktop)
          • Интерпретаторы: php 5/7 TS/NTS, ASP.NET, ruby. Единственное, где я «хапнул горя» был python 3.5.x, где возникли проблемы со сборкой, если верно помню, драйвера для субдб из pip
          • Проблема с докером действительно существует в win, но она не настолько критична для dev-env

          Не обессудьте, но все же несколько «камней» в огород *nix кинуть тоже можно — как часто работаете с версткой? Как там photoshop? Я все понимаю, есть gimp и krita, но не зря большинство дизайнерских разработок в формате .psd…
          Поэтому тоже присоединяюсь к вопросу — какую именно техническую проблему решает автор статьи?
          P.S. — почему автор выбрал 14.04? Мы живем в разных ветках времени с вами? 16.04 вышла полтора года назад, на носу — 18.04 LTS с gnome.


          1. noodles
            27.11.2017 23:55

            как часто работаете с версткой? Как там photoshop? Я все понимаю, есть gimp и krita, но не зря большинство дизайнерских разработок в формате .psd

            Avocode прекрасно закрывает этот вопрос


          1. Hazactam
            28.11.2017 05:55

            Бекенд + сервер у нас свой, Delphi. Апач, насколько я знаю, работает без вопросов под Win.
            БД — firebird или postgres. Так как разработка ведётся под Delphi, проблем с базами нет вообще — можно почти любую относительно быстро и просто подключить.
            Гуёвые GIT клиенты под виндой работают без вопросов.
            Фронт — jQuery. В основном у нас не вёрстка, а довольно навороченное веб-приложение (WebGL). Постепенно переползаем под UniGUI.


        1. E_STRICT
          28.11.2017 07:28

          Selenium — не используется на Dev
          Испольуется. Тесты это часть проекта. Их приходится писать, дебажить и т.д.

          Bash — не нужен в веб-разработке
          Нужен. Очень помогает автоматизировать рутинные задачи.

          Вопрос остался открытым
          Вы пропустили в своём списке «главную» проблему — Докер. Он сейчас в большом тренде. У некоторых компаний наличие Докера на локальной машине это системное требование. Докер испольуются для быстрого разворачивания сложного рабочего окружения, его унификации в команде, для одновременного запуска нескольких версий одного и того же программного обеспечения. Ну и всякие модные нынче микросервисы тоже хотят его.

          P.S. Локальное окружение очень зависит от масштаба и сложности проектов. Тем кто занимается разработкой небольших сайтов с упором на вёрстку, Windows вполне даже подходит. На другой стороне средние и крупные проекты у которых сложность локального стека может зашкаливать.


          1. mayorovp
            28.11.2017 08:43

            Bash — не нужен в веб-разработке

            Нужен. Очень помогает автоматизировать рутинные задачи.

            На винде есть ему альтернатива — powershell. Синтаксис там, не спорю, другой — но не могу сказать что одна из программ заведомо хуже другой. Как правила, аргументы за bash сводятся к привычке.

            Ну и bash тоже не проблема на винде использовать — он есть в составе MSYS, Cygwin и WSL. Выбирайте любой.

            PS если стоит Git for Windows — загляните в папку usr\bin которая там внутрях :-)


            1. Singaporian
              28.11.2017 09:01

              Точно. Мне в жизни пока еще не попадались люди, у которых стоит Git на Венде, а Git Bash при этом не стоит.


          1. Singaporian
            28.11.2017 09:08

            Испольуется. Тесты это часть проекта. Их приходится писать, дебажить и т.д.

            Разработчики пишут модульные тесты, а не интеграционные/системные. Для них Selenium не нужен.
            Очень помогает автоматизировать рутинные задачи.

            Например?
            Вы пропустили в своём списке «главную» проблему — Докер. Он сейчас в большом тренде. У некоторых компаний наличие Докера на локальной машине это системное требование.

            Трэнды, хайпы, моды — это все понятно. Я ж спрашивал про техническое обоснование. Если вы работаете на Windows, это не значит, что вы должны сегодня же удалить все docker-compose/Dockerfile файлы. Нет, пусть они там будут, они правда нужны для других целей.
            На другой стороне средние и крупные проекты у которых сложность локального стека может зашкаливать.

            Средние и крупные проекты — там уже не веб-разработка. Нельзя целый огромный проект назвать вэбом, только потому, что у него есть веб-интерфейс, который даже не поднимает разработчик, который пишет там какие-то недра. К тому же я все еще сомневаюсь, что что-то из этого стэка не встает на Windows.

            P.S. это не я вас минусую.


            1. E_STRICT
              28.11.2017 09:24

              Разработчики пишут модульные тесты, а не интеграционные/системные.

              Средние и крупные проекты — там уже не веб-разработка.

              Ок, наверно я не веб разработчик.


          1. zenn
            28.11.2017 09:11
            +1

            А какие проблемы с Selenium? У меня codeception для AcceptanceTests вполне безошибочно работает с selenium'ом и драйвером для chrome, настройка закончилась загрузкой selenium-standalone.jar и chrome-driver.exe.
            Docker на win вполне себе работает, возможно с некоторыми проблемами в виртуализации, но по моему мнению для dev-env этого хватает за глаза.

            На другой стороне средние и крупные проекты у которых сложность локального стека может зашкаливать.

            Так это не проблема венды, это конкретно проблема самого проекта в плохой организации его структуры или неудачном выборе инструментария…


        1. netmels
          28.11.2017 08:27

          Та же проблема: 10 лет работаю под Windows, не заметил особой нужды в переходе на линукс — доктор, что со мной не так?


  1. wertex15
    27.11.2017 22:20

    А когда вы стартанули свой проект на PHP 7.1?


  1. Dromok
    27.11.2017 23:00

    Как-то статья вообще ни о чем. В итоге всё свелось к банальной виртуалке. Зачем вообще было писать статью?
    Я лично достаточно долго использовал виртуалку, но всё равно это не очень комфортно, так как тормоза портят всё удовольствие. В итоге сейчас у меня отдельная впс, на которой ведется вся разработка. При этом можно менять как перчатки с минимумом усилий и саму машину с которой вести разработку. И опять же можно работать хоть из под винды, хоть из под линукса.


  1. sspat
    28.11.2017 02:31

    Я просто оставлю это здесь
    www.vagrantup.com


  1. chuvashin
    28.11.2017 08:28

    Так вышло, что на моей работе используется только Windows. Переход на какую-то другую ОС просто невозможен. Порядка 50 серверов работают с MySQL 5.7, PHP7.1 и Apache 2.4. MySQL и Apache легко устанавливаются как службы Windows и управляются как из консоли так и обычным способом из списка служб. Каждая программа настраивалась отдельно, потом создавался образ системы и дальше уже он раскатывалась на все машины. На машине разработчика PhpStorm или IntelliJ IDEA запустить не проблема. Также используем MySQL Workbench, Git, Composer и т.д. Каких-то особых проблем с запуском софта или потребностей использовать XAMMP, Denwer и т.п. не возникало.


  1. BrSlava
    28.11.2017 08:28

    Оставлю только одно слово Vagrant


  1. DrakeMazzy
    28.11.2017 08:28

    берем xubuntu 14.02

    Это что еще за зверь? О_о
    Знаю 14.04 и там уже давно есть 14.04.5
    Я в Вашем случае использую VirtualBox в котором крутится Ubuntu 16.04 (без Х) + LXD


  1. Fortistello
    28.11.2017 08:28

    Не знаю, что Вам не понравилось / не удалось в связке Win10 + вся удобная среда разработки + WSL.


    Мое утро (иногда день, вечер или ночь) начинается так: запускается винда, запускается PhpStorm, DataGrip, прочие мелочи для удобной жизни, дальше запускается WSL, вводится команда ./start.sh, и поехали.


    sudo service postgresql start
    sudo service redis-server start
    sudo service elasticsearch start
    sudo service gearman-job-server start
    sudo service rabbitmq-server start
    sudo service php7.1-fpm start
    sudo service supervisor start
    sudo service nginx start

    (да-да, мне все еще иногда бывает нужен gearman)


    все пакеты php и nginx работают из коробки человека с ником ondrej


    sudo apt-add-repository ppa:ondrej/php
    sudo apt-add-repository ppa:ondrej/nginx

    все проекты находятся в своих папках где они обычно лежат в винде: C:\Users\...\PhpStormProjects\MyProject, доступ к ним легко получается по алиасу /mnt/c/Users/.../PhpStormProjects/MyProject. Единственное условие, чтобы юзернейм виндового юзера был латинницей (не знаю, может уже пофиксили), либо класть проекты в папку "не по умолчанию".


    Поскольку WSL и все-все-все работает локально и используется мной для целей разработки/тестирования, мне не нужно заморачиваться насчет прав доступа, мой юзер WSL добавлен в sudoers и в группу root. Вебсервер и прочее заводится с полпинка и ни на что не жалуется. В хосты прописываем что-то вроде myproject.local 127.0.0.1 и вуаля, радуемся жизни.


    Если кому-то интересно, могу запилить подробное описание всего процесса настройки, но я думаю из здесь присутствующих это вряд ли кому-то будет интересно, ибо все и так уже все умеют.


  1. dmtr81 Автор
    28.11.2017 08:35

    Друзья, я думаю, у всех разные проекты, разные задачи. Кому-то подходит одно, другому другое. Я тоже очень долго сидел на Windows, о чем написано в статье. Потом это стало крайне неудобно, в связи с ростом проектов и ростом стеков технологий, а также работой всей остальной команды под Linux. Пришлось искать решение, на что я потратил очень немало времени. Возможно, кто-то другой сбережет свое время благодаря этой статьей.

    Я поделился своим опытом, может он кому-то окажется полезным. Может кто-то найдет для себя приемлемое решение из комментариев. Это тоже хорошо. Поэтому всем, кто поделился своим рецептом, большое спасибо!


    1. mayorovp
      28.11.2017 08:59

      Проблема поста — не в вашем опыте, а в том что заголовок не соответствует содержанию.


      1. dmtr81 Автор
        28.11.2017 09:02

        Ну может быть я и ошибся с заголовком. Посоветуете подходящий?


        1. Singaporian
          28.11.2017 09:14

          Я вижу, вы расстроились, что вас тут закидали. Не расстраивайтесь. Вам нужно просто доработать и статья будет очень полезная.
          Во-первых, нужно переработать это с учетом того, что существует Vagrant.
          Во-вторых, это можно сделать с быстрым Docker'ом — не надо использовать shared volumes просто.

          После этого название статьи само отрисуется.


          1. dmtr81 Автор
            28.11.2017 09:18

            Ну в общем то да.
            А как работать то без shared volumes? Docker-sync или еще что-то? Возможно, но к моменту, когда я до него дошел, у меня накопилась определенная усталость от разных костылей и проблем на Windows, которых у коллег с Linux не было.


            1. Singaporian
              28.11.2017 20:49

              По поводу shared volume. Вы можете подключать двумя путями:

              • -v foo:/mnt
              • -v ./foo:/mnt

              В первом случае — это shared volume (который называется foo и который видно в docker volume list). Во втором случае вы просто получаете прокинутый вниз до хост-машины маунт. Как раз в ту директорию, в которую у вас и IDE смотрит (и в ней в директорию foo).
              Работает очень быстро.

              Одна проблема вас только ждет: docker конфликтует с Hyper-V functions, а VirtualBox от них зависит. Придется переключать в зависимости от того, что выбрали.


              1. dmtr81 Автор
                29.11.2017 16:30

                Спасибо за совет, но кажется, что он мне не поможет. Я посмотрел на конфигурацию докера, которая у меня медленно работает на Windows. В docker-compose.yml используется именно второй вариант из вашего примера

                volumes:
                            - ./app/${APP_FOLDER_NAME}:/var/www
                

                И тем не менее, все очень медленно.


  1. MasMaX
    28.11.2017 08:56

    Зачем тащить иксы, если нужно просто запуске веб-сервера? Ubuntu server тут за глаза. И уже давно 16 версия актуальна.

    А так да в целом статья не соотвествует заголовку. Причем тут windows если все равно все к линуксу свелось? Не проще уж тогда сразу на линуксе сидеть?


  1. vin2809
    28.11.2017 09:02

    Непонятно почему Вы ругаете Windows, если и сами на ней работаете?
    Если Вы считаете себя разработчиком, то не открываете же Вы IDE под Linux на 30 сек?
    Поэтому установите вторую систему и перегрузка в другую ОС для Вас самый оптимальный вариант. И нет никаких проблем: можно использовать все прелести Linux, и спокойно работать в своей любимой Windows!


    1. dmtr81 Автор
      28.11.2017 09:04

      Я лично не ругаю Windows. Dual boot крайне неудобен при частом переключении между задачами, многие из которых часто не относятся к самой разработке.


  1. nxao
    28.11.2017 10:11

    Посидел подумал и появилось пару вопросов:
    1. Зачем ставить VMware если есть Hyper-V из коробки
    2. Зачем ставить Xubuntu если у неё даже нет дистрибутива для сервера, у них даже на сайте написано что дистрибутив для рабочих станиций.

    Xubuntu is perfect for those who want the most out of their desktops, laptops and netbooks with a modern look and enough features for efficient, daily usage. It works well on older hardware too.

    И я не понимаю зачем ставить рабочий сервер с интерфейсом. Если начинать привыкать к консоли, то лучший выбор это — веб сервер. На веб сервере все близко: git, composer, ssh, nginx, php — всё консольное, всё близко и часто используется.


    1. thealexsb
      28.11.2017 15:56

      1. в Hyper-V нет seamless mode и даже просто динамического изменения размера экрана у гостя при изменении размера окна.
      Хотя, конечно, gui на сервере не нужен.


      1. mayorovp
        28.11.2017 17:35

        Говорят, это решается запуском X-сервера на хосте, с последующим подключением к гостю по ssh с пробросом X11


  1. ghost404
    29.11.2017 10:16

    Мой опыт говорит, что Windows это не прихоть, а необходимость.


    В некоторых компаниях, политика компании разрешает только Windows. Не разрешает виртуалки и вторую ось. А локального админа, чтоб хотя бы hosts править, приходится вымаливать через руководство.


    И не подумайте, что компании плохие, просто админам так проще, когда у них несколько сотен компов, а разрабов, которым нужны никсы, всего десяток или два.
    С той же проблемой сталкиваются дизайнеры на маках.


    Решений проблемы много.
    В одной из компаний мне не давали локального админа. Я плюнул и притащил свой ноутбук с ubuntu. Тоже решение.


  1. dmtr81 Автор
    29.11.2017 16:32

    Поменял заголовок на максимально близкий к содержанию статьи.