Работаем на MacOS с Valet Plus

Привет, друзья!

Многие знают, что я всегда был против локальной разработки, и предпочитал использовать виртуальную машину с настоящим GNU/Linux, где всё работает точно так же, как и на хостинге. Никаких XAMPP, WAMP и прочих Denwer.

Но недавно меня познакомили с Valet Plus, и как-то очень уж он мне понравился. Внимание, Valet работает только на MacOS, поэтому дальше стоит читать исключительно обладателям этой ОС.

Итак, Valet Plus, это улучшенная версия обычного Laravel Valet, которым я ни разу не пользовался. Смысл в том, что вам на компьютер устанавливаются PHP, Nginx, DnsMasq и MySQL, а потом постоянно работают в фоне. И когда вы добавляете новый сайт, он просто сразу начинает работать по адресу типа new-project.test. Не нужно править /etc/hosts и колдовать с настройками Nginx, всё работает само.

И самое важное, что работает точно так же, как и на хостинге, потому что MacOS — это Unix-совместимая система, очень похожая на GNU/Linux и FreeBSD, которые крутят 99% всех shared-хостингов. И вы устанавливаете нормальные версии сервисов для неё, а не какие-то специально приготовленные.

Чем же отличается Valet Plus от обычного? Смотрим официальную документацию:
  • Возможность переключать версию PHP
  • Возможность использовать Xdebug
  • Дополнительные модули PHP (mcrypt, intl, opcache)
  • Работа с MySQL
  • Поддержка Redis, Elasticsearch, GeoIP, Mailhog
Очень круто, жаль только что взять это всё и установить без проблем у меня ни разу не вышло, всегда какие-то заморочки. Именно поэтому я и пишу этот гайд.

Установка Brew


Итак, я всё проделываю на чистой свежей MacOS Catalina, установленной в Parallels Desktop.

Первым делом ставим Homebrew, там всё просто:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Открыли терминал, скопировали, вставили, нажали Enter, подождали. Если спросят пароль — укажите, он понадобится для установки Xcode Command Line Tools, если их еще нет.



Через несколько минут у вас появляется настоящий пакетный менеджер, как в Debian и других GNU/Linux-based системах.

Дальше всё ставится так же в консоли через команду brew. Я советую потренироваться на полезных утилитах для начала:
brew install htop wget mc
Как вы догадались, теперь у вас есть htop (монитор процессов), wget (закачка файлов) и mc (двухпанельный менеджер).



Кстати, в качестве самого терминала я искренне советую вам бесплатный iTerm2.

Установка Valet Plus


Homebrew — менеджер пакетов, но скачивает он не уже собранные приложения, а их исходники и скрипты сборки, как это в BSD принято (там это называется «собрать из портов», то есть ports). Понятное дело, что источники этих скриптов можно добавлять командой brew tap.

Воспользуемся этим и установим PHP 7.4 из специального репозитория Valet:
brew tap henkrehorst/php
brew install valet-php@7.4



Если PHP не ставится с руганью на icu4c, то нужно установить его вот так:
brew install --build-from-source valet-php@7.4

php -v показывает нам версию 7.3, а это значит, что импользуется родной PHP из дистрибутива MacOS. Нужно это исправить:
brew link valet-php@7.4 --force
После этого перезапускам терминал и проверяем версию PHP. У меня она стала PHP 7.4.5.



Теперь устанавливаем composer
brew install composer

Ну и дальше уже можно поставить сам Valet Plus в пользовательскую директорию:
composer global require weprovide/valet-plus

И добавляем путь к нему в переменные окружения ZSH:
echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.zshrc
или Bash, если вы еще не перешли на новый коммандный интерпритатор:
echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.bash_profile

После чего обновляем переменные в терминале
source ~/.zshrc

Дальше набираем
valet install
Обратите внимание, что официальная документация рекомендует перед этим запустить valet fixне делайте этого. Лично у меня этот fix приносит одни проблемы, потому что зачем-то меняет версию PHP на 7.2 и не может установить для него php-apcu.

Так что запускаем сразу install и всё должно пройти как по маслу. Если кто предпочитает MariaDB вместо MySQL, то нужно указать это так:
valet install --with-mariadb
Лично я использую обычную MySQL.



После этого, по идее, всё должно работать — и вы можете это проверить путём отправки ping на локальный адрес:
ping -c4 mysite.test
Но в реальности, как правило, веб-сервер не работает — это видно потому, что не открывается встроенный сайт mailhog.test, который ловит отправляемую локальную почту. Будем исправлять.

Исправление ошибок и запуск


Первым делом смотрим ситуацию по запущенным сервисам:
brew services list
У меня такой ответ:
Name          Status  User Plist
dnsmasq       started root     /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
mailhog       started bezumkin /Users/bezumkin/Library/LaunchAgents/homebrew.mxcl.mailhog.plist
mysql@5.7     started bezumkin /Users/bezumkin/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist
nginx         started root     /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
redis         started bezumkin /Users/bezumkin/Library/LaunchAgents/homebrew.mxcl.redis.plist
valet-php@7.4 started root     /Library/LaunchDaemons/homebrew.mxcl.valet-php@7.4.plist
Несмотря на то, что Nginx указан как started, цвет у статуса жёлтый, значит brew в этом вовсе не уверен.



И правда, Nginx у нас не работает, и причину можно увидеть, если проверить его конфигурацию командой sudo nginx -t:
nginx: [emerg] open() "/usr/local/etc/nginx/valet/elasticsearch.conf" failed (2: No such file or directory) in /usr/local/etc/nginx/nginx.conf:44
nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed
То есть, в Nginx указано, что должен быть конфиг ElasticSearch, а его нет. Видимо потому, что никто его не устанавливал.

Комментируем этот конфиг в конце файла настроек:
nano /usr/local/etc/nginx/nginx.conf
и перезапускаем Nginx
valet restart nginx


Урраааа, Mailhog открывается!

На этом исправление работы в моём случае окончено. На других компьютерах видел подобные проблемы с конфигом GeoIP из-за того, что он как-то криво установился. Было такое, что не запускался DnsMasq из-за неверных прав на директорию логов.

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

Установка MODX


Пробуем установить первый сайт. Создаём директорию для проектов и качаем MODX:
mkdir ~/Sites && cd ~/Sites
wget https://modx.com/download/latest -O modx.zip
unzip modx.zip
mv modx-2.7.3-pl modx
cd modx
Вот и wget пригодился. Скачали, распаковали, переименовали, зашли внутрь.



Дальше превращаем эту директорию modx в сайт:
valet link modx
Ответ: Current working directory linked to modx.test.

Пытаемся зайти по этому адресу, и о чудо!, он открывается! Добавляем к адресу /setup/ и устанавливаем движок.



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



MODX установлен и работает. Осталось настроить всякие вкусняшки, ради чего, собственно, вся эта локальная разработка и затевалась.

Установка дополнений


Первым делом устанавливаем Xdebug:
pecl install xdebug



Еще я советую установить ImageMagick для работы с картинками:
brew install imagemagick
brew insatll pkg-config
pecl install imagick
Сначала ставим саму библиотеку, затем нужную либу для сборки PHP обёртки, а потом и её саму через Pecl.



После установки обновок, как обычно, перезапускаем PHP:
valet restart php

Вообще, принцип установки дополнений следующий:
1. Ищем что нужно в Homebrew brew search имя
2. Если чего-то нет, а это запросто, ищем в pecl search имя
3. Если нет и там — ищем уже в поисковике

Я пока что всё, что мне нужно, нахожу и устанавливаю без проблем. Обычно через Pecl.

Работа с PhpStorm


Ну вот и финал нашего путешествия — открываем наш MODX сайт в PhpStorm.



Первым делом идём в настройки, там Languages & Frameworks -> PHP. Добавляем наш PHP интерпретатор по адресу /usr/local/bin/php:



Затем идём чуть ниже в Debug и отключаем там оба пункта Break at first line when ...


Иначе нас будут дёргать каждый раз на запуск файла server.php в директории Valet, а нам это совсем не интересно.

Теперь нужно установить браузерное расширение для запуска отладки, и мой Safari тут уже не поддерживается. Да и вообще для разработки не под iOS его использовать бесполезно.
Так что я ставлю Firefox и добавляю Xdebug Helper. Ему в настройках нужно включить PhpStorm и теперь можно использовать жука в панели адреса.



Дальше выставляем в index.php точку остановки, включаем телефонную трубку в правом верхем углу PhpStorm (слушать входящие подключения), перезагружаем страничку в браузере, видим запрос на подключение — соглашаемся…



И происходит невероятное! Выполнение нашего скрипта остановлено именно в указанной точке, мы можем посмотреть все объявленные переменные, их содержимое, походить по соседним методам, понаставить еще точек — и продолжить или остановить отладку. Браузер при этом нас ждет и скрипт не выполняется дальше.



Ну и кто тут теперь главный, а, PHP? С этого момента никаких print_r и var_dump — мы видим всё в коде сайта через Xdebug.

Заключение


Наигравшись с Xdebug посмотрим теперь, что еще можно сделать с Valet Plus. Для этого набираем просто
valet



И видим, что можно работать с базами данных из консоли: создавать, удалять, открывать (если скачаете бесплатный SequelPro), читать логи, менять версии PHP и еще много-много всякого.
valet db create test
valet db drop test
ну и всё в таком духе — очень удобно.

Для закрепления материала давайте-ка еще установим PhpMyAdmin:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.5/phpMyAdmin-4.9.5-english.zip -O ~/Sites/pma.zip
cd ~/Sites && unzip pma.zip
mv phpMyAdmin-4.9.5-english pma && cd pma
mv config.sample.inc.php config.inc.php
valet link pma
valet open pma
Открываем pma.test, там логин и пароль — root

Дальше, конечно, можно поднастроить его конфиг, но принцип вы поняли — создание сойтов становится очень простым делом.

Так что желаю вам всем отличного настроения с локальной разработкой через Valet Plus.
Василий Наумкин
28 мая 2020, 07:10
modx.pro
4
1 459
+21

Комментарии: 34

Николай Савин
28 мая 2020, 09:15
+1
Ох еще бы не клавиатура-бабочка, которая все больше глючит в последнее время!

Пользуюсь Valet для разработки под Laravel — как то даже в голову не приходило что можно и MODX установить, что очевидно конечно.
Попробую для прикола.

Кстати, в качестве самого терминала я искренне советую вам бесплатный iTerm2.
А чем тебя родной терминал не устраивает?
    Василий Наумкин
    28 мая 2020, 10:24
    0
    Ох еще бы не клавиатура-бабочка, которая все больше глючит в последнее время!
    Ну это на старых моделях, на новых вернули ножницы, бе-бе-бе!

    А чем тебя родной терминал не устраивает?
    Как-то странно он текст рендерит, некрасиво. Да и настроек маловато.
    Павел Бигель
    28 мая 2020, 13:17
    +1
    Это конечно классно, но все еще не проще чем MAMP Pro + нужные пакеты с homebrew.
    Я полностью согласен с
    Многие знают, что я всегда был против локальной разработки, и предпочитал использовать виртуальную машину с настоящим GNU/Linux
    Но тогда мне тотально не понятно чем все это лучше чем Docker?

    Один раз конфиг сделал и юзай для разработки сколько угодно. Захотел докинуть сервис — дописал в compose и полететели.
      Pavel Zarubin
      28 мая 2020, 15:43
      0
      Но тогда мне тотально не понятно чем все это лучше чем Docker?
      Присоединяюсь к вопросу, только докер в отличии от этого еще и мультиплатформенный
        Василий Наумкин
        28 мая 2020, 17:30
        0
        Я не силён в Docker, но как там будет выглядеть работа с Xdebug в PhpStorm, проверял?

        Судя по тому, что пишут в интернетах, настройка каждого проекта занимает приличное количество времени.
        Василий Наумкин
        28 мая 2020, 15:58
        +2
        Но тогда мне тотально не понятно чем все это лучше чем Docker?
        Я где-то написал в заметке, что «данное решение лучше Docker»? Нет, не написал. Поэтому нет никакого смысла спрашивать, а «чем это лучше моего любимого решения X?».

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

        Но тебя никто не заставляет бежать сломя голову и менять Docker на Valet Plus. Лучше напиши заметку, как это прекрасно и замечательно — использовать Docker для локальной разработки.
          Павел Бигель
          28 мая 2020, 20:13
          0
          Если нравится поднимать отдельное окружение для каждого сайта, по сути отдельную виртуалку — на здоровье. Мне вот не нравится, тем более, что проекты всякие разные бывают, и на каждый конфигов не напасёшься.
          Вась, изучи предметную область.
          У меня один конфиг на 80% проектов. Если мне нужно докинуть elasticsearch или какой-то tarantool — я добавлю это в три строчки и перезапущу контейнеры.
          Все!

          По факту — valet крутая штука если тебе влом отдать денег на MAMP Pro. А нужные пакеты которые тебе нужны ты доставишь с помощью homebrew. Но ты ведь против локальной разработки. А получается что в нее же и влез :)

          И самое важное, что работает точно так же, как и на хостинге, потому что MacOS — это Unix-совместимая система, очень похожая на GNU/Linux и FreeBSD, которые крутят 99% всех shared-хостингов. И вы устанавливаете нормальные версии сервисов для неё, а не какие-то специально приготовленные.
          Ах если бы!
          Тот же MySQL хранит данные все же по разному. php.ini так же может отличаться от системы к системе даже внутри UNIX. И так далее.
            Павел Бигель
            28 мая 2020, 20:35
            0
            Посыпаю голову пеплом
            что я всегда был против локальной разработки
            Не увидел слово был
            Павел Бигель
            28 мая 2020, 20:19
            0
            Лучше напиши заметку, как это прекрасно и замечательно — использовать Docker для локальной разработки.
            Помимо многочисленных постов в интернете, даже тут было пару статей. Да и я в одной из статей (не про Docker) светил свой конфиг для работы с тройкой. Где все делается нажатием ровно двух команд.
              Василий Наумкин
              29 мая 2020, 03:24
              0
              Где все делается нажатием ровно двух команд.
              Я выше кинул статью про настройку работы PhpStorm + XDebug + Docker, и там далеко не 2 кнопки. У тебя как с этим?
                Павел Бигель
                29 мая 2020, 11:24
                0
                Ты это делаешь один раз на все проекты.
                  Василий Наумкин
                  29 мая 2020, 12:28
                  0
                  Это как так?

                  Вот у меня 2 проекта (на самом деле больше), и я каждый засунул в свой контейнер в Docker. То есть, там внутри своя копия GNU/Linux, PHP и Xdebug — как это я из двух разных контейнеров смогу дебажить PHP одной разовой настройкой? Да и еще и одновременно (а мне такое надо, потому что ядро системы это один проект, а сайт клиента на этом ядре — другой).

                  А судя по этой статье, там настраивается удалённый PHP интерпретатор, который для каждого контейнера будет свой. Ну и тесты нужно запускать внутри каждого контейнера примерно так:
                  docker-compose run --rm php-fpm vendor/bin/phpunit --testsuite unit

                  Скажи честно, ты пробовал сам Xdebug через Docker пользоваться, или просто предполагаешь, что с этим нет никаких проблем?

                  В данной статье был описан простой способ настройки и использования отладчика Xdebug в PhpStorm, если используется удаленный интерпретатор в виде Docker-контейнера.
                  Интерпретатор, как видно, в единственном числе.

                  Ну и внизу комментрии о том, что на Windows это всё не взлетает, потому что опять-таки, он для подобного не предназначен.

                  Ну и в чём же тогда офигенное удобство Docker для локальной разработки, если его надо вот так настраивать?
                    Павел Бигель
                    29 мая 2020, 14:23
                    0
                    Потому что его нужно вот так настраивать )
                    И 1 контейнер != один проект
                    Все немного иначе )
                      Василий Наумкин
                      29 мая 2020, 15:25
                      +2
                      Потому что его нужно вот так настраивать )
                      Вот как? Ссылку забыл?

                      И 1 контейнер != один проект
                      Раз ты в один контейнер монтируешь несколько проектов — то как ты их там внутри разруливаешь, настраиваешь Nginx, БД, и всё остальное? В чём тогда разница между обычной виртуальной машиной?

                      Все немного иначе )
                      Мне нужно всё пасатижами из тебя тянуть?

                      Покажи как удобно работать с разными проектами в Docker с Xdebug без вот этих плясок с удалёнными интерпретаторами и прочими заморочками — я сравню.

                      А пока, увы, ты только делаешь умный вид, и никакой конкретики.
          srs
          srs
          29 мая 2020, 00:37
          0
          Не являюсь обладателем мака, но судя по описанию очень похоже на laragon.
          Но возможно я чего-то не понял.
            Василий Наумкин
            29 мая 2020, 03:30
            +3
            Ну как похоже… Это же Windows, она совсем не похожа на MacOS и GNU/Linux.

            Не так команды набираются, не те команды набираются, нет кучи утилит, типа cat, sed, nano, ssh и т.д. Лично мне (лично мне) разрабатывать на Windows почти физически больно.

            Вот например у меня локально есть большой проект, и мне переодически нужно обновлять БД для него с продакшена. Знаешь, как это делается на MacOS?
            #!/bin/zsh
            
            source ../.env
            
            ssh ${DB_USERNAME}@site.ru "mysqldump -u${DB_USERNAME}  -p${DB_PASSWORD} ${DB_USERNAME} \
              --skip-lock-tables --add-drop-table --skip-comments --force --single-transaction --quick \
              | bzip2 --fast" | bunzip2 | mysql -uroot -proot local_db
            В 2 строчки читаем настройки окружения, а затем через SSH запускаем на удалённом сервере mysqldump, пакуем вывод в bzip2, оно летит через зашифрованный канал на локальный комп, где распаковывается обратно и сразу грузится в БД. Даже без создания временного файла.

            Не могу себе представить подобного удобства на Windows, увы.
              Сергей Шлоков
              29 мая 2020, 12:27
              0
              А в чём проблема с PuTTy/phpStorm? Переменные не раскроются? Реально не знаю. Можешь объяснить?
                Василий Наумкин
                29 мая 2020, 12:32
                0
                Ну для начала на Windows нет bash\zsh и прочих sh — power shell, насколько я знаю, и рядом не валяется по своим возможностям.

                А потом там нет консольного SSH с авторизацией по ключам (как минимум, из коробки, возможно Putty это умеет). Ну а потом там нет pipelines (это палочки такие, которые перенаправляют вывод из одной команды в другую).

                Так что этот однострочник на Windows превратится в небольшую программу.

                P.S. На сайте MS пишут, что они уже умеют в pipelines, так что было бы интересно, если бы какой-нибудь знаток Windows переписал мой скриптик на Power Shell. Ну и вообще проверил, возможно ли это.
                  Сергей Шлоков
                  29 мая 2020, 14:02
                  0
                  Понял. Мне phpStorm хватает. Там и ssh консоль есть и доступ к базе данных через ssh тоннель, чтобы в myPhpAdmin не лазить. Так что тьфу на этот PowerShell ))
                    Василий Наумкин
                    29 мая 2020, 15:22
                    0
                    Там и ssh консоль есть и доступ к базе данных через ssh тоннель, чтобы в myPhpAdmin не лазить.
                    Это да, но мне нужно именно забирать полный дамп на локалку, и через консольный скрипт это работает в разы быстрее. Просто потому, что качается уже сжатый дамп, а PhpStorm гонит все гигабайты напрямую.

                    Потому и придумал этот скриптик, который радует каждый раз.

                    Так что тьфу на этот PowerShell ))
                    Да он всё равно будет только бледной копией нормальных интерпретаторов.
                      Сергей Шлоков
                      29 мая 2020, 16:32
                      +1
                      Ну мне с тобой не ровняться. У меня нет проектов. А мои разработки мелкие. Поэтому можно и напрямую гнать без архивации.
                srs
                srs
                29 мая 2020, 23:40
                0
                Это и так очевидно, что не те команды и нет некоторых утилит, и что мак это не виндовс.
                Я говорил о конечном результате, вот ты пишешь:
                Смысл в том, что вам на компьютер устанавливаются PHP, Nginx, DnsMasq и MySQL, а потом постоянно работают в фоне. И когда вы добавляете новый сайт, он просто сразу начинает работать по адресу типа new-project.test. Не нужно править /etc/hosts и колдовать с настройками Nginx, всё работает само.
                По сути, ларагон выполняет туже функцию, только для винды. Вот и все!
                  Алексей Соин
                  04 июня 2020, 07:52
                  0
                  мне по работе (и по моему незнанию в настройке vpn и маршрутизации) требуется использовать в основное рабочее время Windows 10, для решения проблемы нехватки linux утилит я пользуюсь подсистемой WSL на винде. В ней конечно есть некоторые ограничения, но для локальной разработке на php и nodejs у меня было всё норм. Также скоро выйдет WSL2, которое множество этих ограничений исправит, насколько помню там вроде как и gui программы с linux запускать можно будет.

                  возможно ктото скажет, что это всёравно не то, что разрабатывать из под тойже Ubuntu, но когда требуется работать на винде и не особо хочется изучать виндовый синтаксис терминальных команд, то мне кажется это вполне норм решение, vs code и phpStorm из коробки поддерживают wsl.
              Александр Мельник
              29 мая 2020, 09:03
              +2
              Ничто не вечно) Вот и вы уже, хоть и были ярым противником, но перешли на локальную разработку. Это хорошо, что вы экспериментируете, это вы молодец.
              Скажу два слова, какой для себя нашел способ работать с сайтами. В редакторе Visual Studio Code допилили работу с проектами через ssh. Шикарно на мой взгляд. Редактор подключается к серверу, мы работаем со всеми файлами совершенно не скачивая их на свой локальный компьютер, при этом код индексируется, не нужно настраивать никаких дополнительных загрузок файлов при сохранении — любое сохранение и так влияет на файл на сервере. Что еще — редактор устанавливает на сервер к которому мы подключились свой «сервер», который позволяет установить поддержку работы для php например, или javascript. Терминал редактора сразу уже работает на удаленном сервере, тоесть если мы вызывали терминал, то мы уже подключены к удаленному серверу и передаем команды туда. Работает xdebug (каюсь пока не проверял, инфа с сайта microsoft). Для меня чем хорошо — у нас чаще всего ведется не разработка новых сайтов, а поддержка и переработка старых. Так вот сайты иногда весят по 100 а то и 200 гигабайт. И как с таким работать? Локально скачивать 200 гигов себе? Или даже если создать подключение через phpStorm то все равно создается ведь локальный проект и тебе нужно заранее точно выбрать, какие директории и какие файлы тебе пригодятся в работе. А в случае подключения через ssh даже если сайт весит 200 гигов — мне нет разницы, я подключился и вижу все файлы. Что еще могу добавить — каким то чудом соединение не разрывается. Редактор может быть открытым 18 часов в сутки и я сажусь и все работает, никаких переподключений к серверу. Хотя например если я просто со своего терминала подключусь к тому же cерверу по ssh, то меня через 10 минут выкинет — напишет, что выбросило по таймауту с ошибкой — broken pipe.
              Я пытался найти аналогию такого же подключения в phpstorm и не нашел, возможно плохо искал. Ну и большой плюс для visual studio code для меня — это синхронизация всего что можно, я частенько переустанавливаю системы, экспериментирую с разными семействами linux, и я могу одной командой чистую установку vscode превратить в свою — внешний вид, настройки, подключения, установленные дополнительные плагины, не знаю, даже разный размер шрифта если я ранее его задал для разных файлов — все это за минуту устанавливается и применяется. Очень удобно, тоже не нашел ничего подобного в phpstorm.
                Николай
                29 мая 2020, 09:53
                0
                В линуксе, а может и MacOS, можно примонтировать удалённую папку с помощью SSH к пустой папке. И работать с её содержимым локально как с родной. В том числе редакторы будут её видеть. Правда все эти удалённые способы хороши если соединение с интернетом хорошее, и сервер быстро отдаёт информацию. Во многих случаях это не так. Тот же Digital Ocean порой меньше мегабита скорость передачи показывает, даже меньше 300 кбит. И из-за этого всё тупит. Короче, локальная разработка с нуля удобнее. Ведь мы с максимальной скоростью лопатим данные на SSD. Удалённо если только поправить что-то, или когда нет возможности выкачать полностью сайт.
                  Александр Мельник
                  29 мая 2020, 10:35
                  0
                  можно примонтировать удалённую папку с помощью SSH к пустой папке.
                  совершенно верно, какое-то время поступал так. Но поверьте, не сравниться с удобством, которое дает редактор
                  — не разрывается связь никогда, не знаю как они этого добиваются
                  — и самая фишка, которую я не стал выше описывать, потому что обещал всего два слова, а накатал 200). vscode при подключении к удаленному серверу позволяет установить конкретно для этого сервера свой набор плагинов. Тоесть если на этом сервере вы работаете c apache, php — вы в редакторе устанавливаете соответствующие плагины и они находятся на сервере. Тоесть если вы отключились — то их на локальном компьютере нет. На втором сервере работает с nodejs, vuejs — устанавливаете плагины для них и опят таки только для этого сервера. И локально может стоять свой набор. И выходит что достаточно просто подключиться к нужному серверу, чтобы не только удобно работать с файлами, но и иметь уже настроенную среду (не знаю как правильно сформулировать).
                  локальная разработка с нуля удобнее.
                  С нуля — вопросов нет. А вот если сайт уже проработал 5 лет и разросся до огромных размеров, а еще если это самописка кем то написаная и файлы с кодом там находятся в любых самых неожиданных местах, то мне показалось удобным работать именно через vscode по ssh — работет индексация, работает поиск по файлам и их содержимому.
                  Для примера, частая проблема с которой я сталкивался в phpstorm
                  есть сайт огромный, пришел нам от каких то разработчиков и уже через час начинают валить задачи от заказчика, от руководства, от сеошников (от них особенно ибо как показать работу, если сайт уже 5 лет на рынке и заказчик недоволен результатами? Нужно говорить что все на сайте было плохо, но сейчас мы вам тут такое СЕО наведем — завтра станете миллионером). У тебя максимум час на то чтобюы вообще понять на чем создан сайт, это cms framework самописка? Какой язык там вообще) Ты создаешь проект в phpstorm удаленный, и начинаешь настройку. Нужно указать какие директории с сайта будут скачаны на локальный компьютер. Ты примерно прикинул, что вот тут вроде ядро или что то похожее. Вот тут какой, то код. А вот тут файлы изображений. Зачем они нам, убрать конечно. Создается локальный проект и пошла работа. Но через неделю соешники говорят, мы провели анализ и изображения на сайте слишком большие, нужно уменьшить. Вижу что да, на сайте как-то гененрируются превьюшки. Ищем ищем как и находим, что есть файл lalala.php в котором код по ресайзу картинок и этот файл находится точнехонько в директории с файлами картинок, которую мы на первом этапе исключили. И вот далее проблемы. У меня всегда возникают проблемы при добавлении даже директории в проект, если она ранее была исключена, вечно что то глючит после этого, но тут можно списать на криворукость. Но как добавить один файл?? помоему phpstorm этого не позволяет, можно добавить в проект только всю директорию целиком, а в ней 50000 картинок и один файл php.
                  Вот у меня с этим часто проблемы возникали.
                  Сергей Шлоков
                  29 мая 2020, 12:21
                  +1
                  Я пытался найти аналогию такого же подключения в phpstorm и не нашел, возможно плохо искал.
                  Можно не искать. Вот выдержка из доки
                  PhpStorm does not support direct editing of files on remote hosts. Therefore to work with remote sources in PhpStorm, you need to download them and arrange them in a PhpStorm project.
                    Алексей Соин
                    04 июня 2020, 07:59
                    0
                    единственный минус при работе через vs code подключаясь по ssh(если мы говорим об одном и томже расширении) это мегапрожорливость vs code при подключении к серверу, там он запускает свой процесс и один раз у меня vs code съел 98% оперативной памяти на сервере и 80 с чемто процентов был загружен процессор, но чтобы понять, что сервер не отвечает изза vs code, а не изза сайта я не сразу понял)))

                    надеюсь в дальнейшем это исправят))
                    Sergey Leleko
                    31 мая 2020, 17:36
                    +1
                    @Василий Наумкин Спасибо, блестящая статья и очень полезная!
                      Дмитрий
                      02 июня 2020, 19:04
                      0
                      Кто на последней MacOS и будет ставить, будут проблемы с php. Он просто так не взлетит, это из-за того, что собран с другой версией icu4c. Решается вот так brew install --build-from-source valet-php@7.4.
                      @Василий Наумкин большое спасибо за статью.
                        Василий Наумкин
                        03 июня 2020, 05:40
                        0
                        Проверил и на своём рабочем компе, и на виртуальной машине на последней версии 10.15.5 — всё работает без проблем.

                        Но в заметку инфу добавил, спасибо.
                        Fabian Christen
                        13 июня 2020, 12:51
                        +3
                        Thank you, Vasily.
                        Great article! The installation is a bit painful, but when it works, it is quite lightweight and easy to use.
                        Very useful that you describe the solutions for the installation problems.
                        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                        34