Местная среда разработки с бродяженым/усадьбой позволяет вам работать над проектами более безопасно и эффективно
Эндрю Уэлч/ nystudio107.
Homestead — это инструмент предоставления, который устанавливает локальную среду развития, которая позволяет работать над проектами WebDev без страха. Вы получаете современный стек со всем необходимым для разработки, включая массив фантастических инструментов отладки.
Мы собираемся поговорить о том, почему я использую усадьбу на местное развитие, но прежде чем мы попадем в орехи и болты, давайте поговорим о том, почему мы используем местную среду развития с.
N.B.: Хотя Craft CMS На ссылке ссыловается в данной статье, Homestead работает хорошо для любого вида веб-разработки с любым видом CMS или DEV Stack (Laravel, Nodejs, Whatevs).
В плохих старых днях веб-разработка была сделана коммандос, редактирование .html Файлы прямо на сервере. Тогда люди начали осознавать, что это был Плохая идея И файлы были отредактированы локально, а затем скопированы на сервер, используя приложение FTP после некоторого элементарного тестирования.
Проблема в том, что современная веб-разработка уже не просто редактирование разметки. Современная веб-разработка находится на курсе столкновения с программным обеспечением и информационной архитектурой. Некоторые будут спорить — я очень справедливо — что мы уже там.
Это означает, что мы должны серьезно относиться к нашему инструменту. Нам нужно иметь способ разработки, разработки и отладки наших проектов, используя современные инструменты, так как не мешают на веб-сайте общественности.
Multi-Environment Config для Craft CMS Статья говорит более подробно о том, как настроить CRAFT CMS для этого типа настройки, где у вас есть Местный Развитие, Постановка и жить производственные условия.
Если вы не используете некоторые Вид местной среды развития, вы найдете его всё трудно оставаться в курсе скорости. Так что давайте сделаем это.
Почему бродяга/усадьба?
Есть столько способов создать местную среду развития, так как есть коже кошка. Причина, по которой я отчасти, чтобы использовать Homestead, чтобы создать свою местную среду развития, заключается в том, что она создает совершенно отдельную виртуальную машину (VM) внутри твой компьютер.
Это имеет несколько преимуществ:
- Вы можете установить все, что вы хотите в своем Whawestead VM, не влияя на ваш фактический компьютер
- Вы можете легко создавать и уничтожить как можно больше виртуальных машин, так как вы хотите, так что момент «ой» означает минуты, а не часы
- Вы получаете Real ™ Linux Box, который отражает ваш производственный сервер как можно ближе
- Вы получаете все инструменты, которые вам нужны предварительно установлены, без необходимости добавлять их в частями
Наличие чего-то, что близко отражает производственную среду, означает меньшее количество неожиданных сюрпризов, когда вы развертываете до производства, и это означает, что вы тратите меньше времени на «Meta-Work» для получения вашей среды развития.
Тот факт, что вы можете быстро создать предварительно предоставленную виртуальную машину и легко значит, что вы можете развиваться без страха. Если вы Roylally прикрутите свою среду развития, нет большого значения, вы просто раскрутите еще один.
Вот что похоже:
Усадьба — это брунт коробка (Наряду с некоторыми сценариями настройки и обеспечения). Vagrant — это программное обеспечение для обеспечения предварительной настройки «коробка» для настройки виртуальной машины из провайдер Отказ «Поставщик» — это то, что на самом деле запускает VM, и может быть либо VirtualBox (что бесплатно), VMware (который не свободен), или Параллелс (который также не свободен).
Я собираюсь предположить, что вы дешевы, как я, и вы собираетесь использовать VirtualBox, потому что это бесплатно. Но любой из трех будет делать, и на самом деле, VMware Предлагает значительно лучшую производительность, чем бесплатная виртуальная коробка, поэтому вы можете подумать об этом.
Все это работает как виртуальная машина (VM) внутри вашего компьютера. Ничего, что в этом VM может повредить вашему фактическому компьютеру, это совершенно отдельно и изолированы.
У вас есть свой маленький сервер внутри вашего компьютера, и в сочетании с настройкой, как описано в синхронизации базы данных и актива между средами в статье CRAFT CMS, у вас есть мобильная среда, которую вы можете использовать где угодно. Даже без доступа в интернет.
Более того, если вы работаете с другими людьми, детерминистистический способ, которым умосадимые положения вашего VM означает, что вы можете гарантировать, что они Также имейте то же одинаковую местную среду развития, которые вы делаете.
Согласованность в инструментах среди вашей команды означает меньшее трение и меньше проблем.
Становиться усадьба
Таким образом, поговорить! Давайте получим обстановку усадьбы. Если вы предпочитаете видео инструкции, проверьте Настройка Craft CMS на бродяжественную усадьбу YouTube видео.
Во-первых, вам нужно скачать и установить:
Оба они поставляются с родными установщиками для Mac, Windows и Linux. Вам не нужно делать какие-либо настройки для любого из них, просто установите их. Тогда нам нужно добавить Laravel/Homestead коробка для бродяга через следующее:
vagrant box add laravel/homestead
Далее нам нужно будет установить Усадьба Клонируя репо:
git clone https://github.com/laravel/homestead.git Homestead
… и проверить желаемую версию ( v5.1.0 — новейшая как написание):
cd Homestead git checkout v5.1.0
Касательно: Слово о версиях. Как мы упоминали ранее, усадьба приходит в две части, бродяжную коробку Homestead, а затем сценарии, которые составляют самости самости. Есть отдельный номер версии для каждого. По состоянию на это написание, последняя версия блуждающей коробки Homestead является 2.0.0 И последняя версия самости самости является 5.1.0 . Просто что нужно помнить, когда Обновление усадьбы Отказ
Наконец, в первый раз мы устанавливаем Homestead, нам также нужно инициализировать его из Усадьба каталог. На Mac/Linux мы делаем:
bash init.sh
… а на окнах мы делаем:
init.bat
Это создает Homestead.yaml Файл в Усадьба/ каталог. Это файл, который мы будем использовать, чтобы настроить нашу настройку Homestead. Вот простой пример (редактируйте свой Homestead.yaml Файл, чтобы удовлетворить свои собственные потребности, используя это в качестве руководства):
--- ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox mariadb: true authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: /Users/andrew/webdev/sites to: /home/vagrant/sites type: nfs sites: - map: nystudio107.dev to: /home/vagrant/sites/nystudio107/public - map: craft3.dev to: /home/vagrant/sites/craft3/public databases: - nystudio - craft3 variables: - key: APP_ENV value: local # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar # ports: # - send: 93000 # to: 9300 # - send: 7777 # to: 777 # protocol: udp
Это сделает это, это предоставление нашей виртуальной машины, чтобы иметь 2048 МБ памяти и использовать 1 виртуальный процессор. Приличное правило — использовать 1/8 RAM вашего компьютера, чтобы посвятить VM.
Мы используем Мариадб вместо MySQL потому что у него нет Раздражает проблему с Craft CMS 2.x. что mysql 5.7 делает. Мариадб не скулит о Предупреждение: Использование пароля на интерфейсе командной строки может быть небезопасно И это более активная кодовая база.
Не волнуйтесь, Mariadb 100% замена для MySQL, и это 100% совместимо (это вилка того же кодовой базы, по первоначальному автору MySQL). Если по какой-то причине вы Действительно Не хочу использовать Mariadb, просто опустите эту линию, и это будет использовать MySQL по умолчанию.
папки Позволяет отображать каталоги с вашего компьютера к вашим VM. Это позволяет использовать собственные редакторы, такие как Sublime или PhPStorm для редактирования вашего кода, а также позволяя VM также получить доступ к файлам.
Помните, что виртуальная вирция эффективно является отдельным компьютером, поэтому этот каталог сопоставление — это мост между двумя. Таким образом, вы можете редактировать те же файлы на вашем компьютере, либо в VM. Настройка клавиш — использовать NFS. Как Тип Потому что это более исполнительный способ сделать этот файл для совместного использования/синхронизации.
сайты Позволяет настроить отображения из доменного имени в каталог на VM, где живет сайт. Вы можете добавить столько, сколько хотите в том же виртуальной машине.
Базы данных Позволяет вам сообщить Homestead, чтобы создать базы данных MySQL для вас. Опять же, вы можете иметь столько баз данных, сколько вам нравится в том же виртуальной машине.
Тогда нам нужно сказать нашему компьютеру, где их найти эти сайты нашим хосты Файл, который на /etc/hosts на Mac/Linux, а в C: \ Windows \ System32 \ Drivers \ etc \ Hosts В окнах:
192.168.10.10 nystudio107.dev 192.168.10.10 craft3.dev
Самый простой способ редактирования файла хостов на Mac просто делает: Sudo Nano/etc/hosts Что приведет к очень простому редактору. Поскольку это системный файл, вам нужно ввести пароль администратора для его редактирования.
В Windows вам так же нужно редактировать хозяева Файл с правами администратора. Например, запустить блокнот с Щелкните правой кнопкой мыши> Беги как admin а затем отредактируйте хозяева файл.
Если вы устали от редактирования файла Hosts вручную, вы всегда можете использовать HostsuppDater Блубный плагин, чтобы сделать это для вас.
Наконец, давайте сделаем немного настроек, которые не являются строго необходимыми, но это сделает вашу повседневную жизнь с усадьбой намного приятнее.
Homestead — это определенный тип бродяга; Итак, мы мог бы Используйте стандартные бродные команды при работе с нашей домохозяйственной коробкой. Но это намного удобнее настроить команду, которая работает конкретно с нашей средой усадьбы.
На Mac сделайте это для редактирования вашего профиля Bash: Nano ~/.bash_profile и добавьте это в конец этого:
function homestead() { ( cd ~/Homestead && vagrant $* ) }
Обязательно настроить ~/Homestead. Путь в функции на местонахождение вашей фактической установки усадьбы.
Пока вы там, если вы хотите, если вы хотите, если вы хотите подсказать командную строку, чтобы сказать вам, что GIT REPO и филиал, в котором вы в настоящее время, добавьте это в конец вашего ~/.bash_profile тоже:
parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' } export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
Вам придется закрыть окно терминала и откройте его за изменения в вашем ~/.bash_profile Влиять, так что сделайте это сейчас.
В Windows создайте Homestead.bat Пакетный файл в любом месте на вашем компьютере со следующим содержимым:
@echo off set cwd=%cd% set homesteadVagrant=C:\Homestead cd /d %homesteadVagrant% && vagrant %* cd /d %cwd% set cwd= set homesteadVagrant=
Обязательно настроить пример C: \ Homestead Путь в скрипте к фактическому расположению вашей усадьбы. После создания файла добавьте местоположение файла в ваш ДОРОЖКА
Там много больше, что вы можете сделать с усадьбой, в том числе установку его через композитор на основе PER-проекта и многое другое. Проверьте Документация по усадке Для получения дополнительной информации.
Дамы и джентльмены, начните своих двигателей
Фу! Это было много работы настроек, но, к счастью, нам нужно только сделать это один раз. Давайте выстрелим нашу вирту! Тип:
homestead up
Что на самом деле происходит, это Усадьба Команда меняет текущую работу туда, где мы устанавливаем усадьбу, а затем отображает остальные аргументы на бродяга Из-за команды мы устанавливаем ранее.
То, как бродячие работы — это то, что если есть Вагрантиль В текущем рабочем каталоге при выполнении бродяга Команда, она предполагает, что вы хотите работать с этим VM, и он использует его.
Так что создает это Усадьба Команда сохранила нас от необходимости переключиться на Усадьба/ каталог (или знайте бродягую машину ID) каждый раз, когда мы хотим что-то сделать с ним. Это все.
Первый раз, когда вы делаете Усадьба вверх Это займет немного времени, и вам придется войти в свой пароль администратора, чтобы позволить NFS. каталог сопоставление на работу.
После этого, однако, это гладкое плавание. Я вообще просто покиную свою виртуальную машину постоянно, так как я использую его каждый день, и он имеет очень небольшое влияние CPU/аккумулятора, когда он просто на холостом ходу на заднем плане.
Я настроил это так, чтобы каждый проект я работаю над жизни в том же виртуальной машине. Сверяние нового проекта просто включает в себя добавление соответствующих линий к места и базы данных в Homestead.yaml Файл, добавление доменного имени на хосты Файл, а затем предоставление виртуальной машины, делая:
homestead reload --provision
Не волнуйтесь, ни один Усадьба перезагрузка ни Перезагрузка усадьбы --Провизация повлияет на ваши файлы или базы данных, хранящиеся на вашу виртуальную машину.
Все базы данных, которые усадьба создает для вас следующие учетные данные:
- Пользователь: усадьба
- Пароль: секретарь
Так что вы захотите ввести это в ваш Совместная конфигурация Так что вы можете получить доступ к вашей базе данных. На данный момент самый простой способ вытащить вашу производственную базу данных, чтобы сделать это через Craft-Scripts , как обсуждалось в Синсинг базы данных и актива между средами в Craft CMS статья.
Если вы хотите получить доступ к вашему веб-сайту, который работает с VM, просто поставьте доменное имя в веб-браузере, и выезжаете, например, E.g.: nystudio107.dev.
Сайты, которые вы указали через сайты в Homestead.yaml Результат файла в соответствующем nginx .CONF Файлы для виртуальных хостов в /etc/nginx/сайты - доступны (и SymLink в /etc/nginx/sites-site ). Вы можете редактировать их, как вы видите, но они будут сброшены, если вы сделаете Усадьба вверх --провизия или Перезагрузка Homestead - Provision Отказ
Если вы хотите SSH в вашу виртуальную машину, просто введите:
homestead ssh
… а ты в! Нет паролей или чего-либо. Это настоящая коробка Linux, работает Ubuntu 16.04 (во время этого письма), чтобы вы могли установить все, что вам нравится.
Одна вещь, которую вам нужно будет установить, если вы используете Craft 2.x — это Mycrypt Пакет для PHP. Mycrypt устарели как PHP 7.1 (хотя он все еще работает), а ремесло 3.x Не использует его, но нам нужен этот наследийный пакет для Craft 2.x. Итак, давайте установим его.
Пока мы на этом, давайте также установим ImageMagick, чтобы сделать наш образ трансформации и такое. Усадьба поставляется с GD, установленным по умолчанию, но мы можем легко добавить ImageMagick. Изнутри вашей виртуальной машины просто делай:
sudo apt-get install php7.1-mcrypt php-imagick
Важно: Если при установке вещей можно просить вас, хотите ли вы заменить существующие .CONF Файл, всегда говори Нет (или просто нажмите Вернуть Клавиша, который по умолчанию в самых безопасных вариантах).
Вы также можете установить другие вещи тоже!
Допустим, вы хотите играть с использованием .webp Изображения согласно Создание оптимизированных изображений в Craft CMS статья; Просто установите Cwebp На вашу виртуальную машину через:
sudo apt-get install webp
… и далеко ты идешь. Если вы хотите редактировать свои файлы, вы знаете, на самом деле выполняют некоторые работы, просто сделайте это, однако вы обычно бы.
Файлы автоматически синхронизируются между вашим компьютером и вашим VM. Отредактируйте их в Sublime или PhPStorm на вашем компьютере. Редактировать их в нано или погибший на твоей виртуальной машине Homestead не заботится.
Если вы планируете использовать PHPSTORM для локального развития, проверьте использование PhPStorm с блуждающей/усадьбой для того, как установить это.
Homestead Словно Проводить
Теперь, когда у нас есть усадьба и работает, вот несколько советов, которые я обнаружил, что может сделать его действительно петь. Вам не нужно делать какие-либо из этих вещей, они не являются обязательными, но некоторые сделают вашу жизнь на след гораздо проще.
Мы уже используем NFS Для нашего каталога отображается, что отлично, потому что в противном случае VirtualBox может быть довольно медленным при синхронизации файлов. Однако есть один раздражающий побочный эффект, что является то, что все ваши общие файлы будут выглядеть так:
vagrant@homestead /htdocs/nystudio107 (develop) $ ls -al gulpfile.js -rw-r--r-- 1 501 dialout 11269 Feb 15 04:51 gulpfile.js
Что здесь происходит то, что он использует UID и GID с вашего компьютера в VM; и имеют различные пользователь и группы, чем ваш компьютер делает. Если вы не знакомы с пользователями Unix, группами и разрешениями Unix, проверьте статью разрешений CMS CRAFT CRAFT CRAFT для грунтовки.
Так что в этом случае нет пользователя с UID 501 В VM и Персонал GID на моем компьютере бывает току Диализат Пользователь на моем виртуальной машине.
Хотя это слегка раздражает, как иногда он может стать настоящей проблемой с разрешениями. Итак, давайте исправим это. Для этого мы будем использовать Vagrant-bindfs Брустный плагин; Просто установите его на свой компьютер через:
vagrant plugin install vagrant-bindfs
Homestead автоматически использовал этот блубный плагин, если он присутствует, поэтому нет необходимости изменять ваш Вагрантиль Отказ Затем перезагрузите VM Config с:
homestead reload
… И все будет хорошо со вселенной:
vagrant@homestead /htdocs/nystudio107 (develop) $ ls -al gulpfile.js -rw-r--r-- 1 vagrant vagrant 11269 Feb 15 04:51 gulpfile.js
В дальнейшем есть удобный скрипт оболочки в Усадьба/ Папка называется после.sh Отказ Этот скрипт выполнен после того, как усадьба завершила предоставление виртуальной машины, чтобы вы могли добавить все, что вы хотите, и он будет выполнен после Усадьба вверх --провизия или Перезагрузка Homestead - Provision Отказ
В качестве написи я использую индивидуальные версии Nginx .CONF Файлы для моих сайтов, настройки через Nginx-Craft Отказ Они обычно будут получать возврат к их значениям по умолчанию после Усадьба вверх --провизия или приусадебных перезарядка --provision . Таким образом, мы можем раскрыть настроенные версии в Настройка/сайты каталог внутри Усадьба/ папка и восстановить их через после.sh :
# -- Copy over customized nginx configs # As per: https://laracasts.com/discuss/channels/requests/homestead-provision-deletes-custom-nginx-settings # define your sites config directory located on your host machine SITES=/home/vagrant/setup/sites/* # copy every site file from /home/vagrant/setup/sites/ to your Nginx sites-available folder yes | sudo cp -rf $SITES /etc/nginx/sites-available # enable each site by creating a symbolic link to each file for p in $SITES do FILE=$(basename $p) sudo ln -s /etc/nginx/sites-available/$FILE /etc/nginx/sites-enabled/ done # restart the nginx service sudo service nginx restart
Нам также нужно добавить дополнительный каталог на наше папки в Homestead.yaml Топка тоже:
- map: /Users/andrew/Homestead/setup to: /home/vagrant/setup type: nfs
Убедитесь, что вы измените первый путь, чтобы указать на ваш Homestead/установка каталог.
Далее давайте сделаем некоторые настройки нашим монтажам NFS, чтобы ускорить их при работе с большим количеством файлов (таких как GIT REPOS, Node_ Modules Folders и т. Д.). Добавьте это к нижней части Бродячего файла:
# Speed up NFS as per: https://www.jverdeyen.be/vagrant/speedup-vagrant-nfs/ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # … config.vm.synced_folder "/Users/andrew/webdev/sites", "/home/vagrant/sites", type: "nfs", mount_options: ['rw', 'vers=3', 'tcp', 'fsc' ,'actimeo=2'] end
Измените пути, чтобы быть тем, что вы устанавливаете свой папки быть в вашем Homestead.yaml файл. Обратите внимание, что первый каталог является каталогом на вашем компьютере, второй каталог является каталогом в вашей виртуальной машине. Затем перезагрузите ВМ с:
homestead reload
Один окончательный совет, связанный с производительностью, вот некоторые твики, которые вы можете сделать, добавив это в нижнюю часть вашего Вагрантиль :
# As per https://www.mkwd.net/improve-vagrant-performance/ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # … config.vm.provider "virtualbox" do |v| # change the network card hardware for better performance v.customize ["modifyvm", :id, "--nictype1", "virtio"] v.customize ["modifyvm", :id, "--nictype2", "virtio"] # enable IO APIC so that the virtual machine can make use of the additional cores v.customize ["modifyvm", :id, "--ioapic", "on"] end end # Speed up VirtualBox i/o as per: https://joeshaw.org/terrible-vagrant-virtualbox-performance-on-mac-os-x/ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # … config.vm.provider "virtualbox" do |v| v.customize [ "storagectl", :id, "--name", "SATA Controller", "--hostiocache", "on" ] end end
Затем перезагрузите виртуальную машину с:
homestead reload
Так что же плохие новости?
Так каковы нисходящие для использования Vmestead VM? Если вы прочитали это далеко, вы знаете, что участвуют некоторые настройки. Но учитывая, что это одноразовая вещь, и она устанавливает современные версии все Вам понадобится в одном выстрел, я не нашел это обременительным.
Выберите день, получите чашку кофе и потратите Маленький Время отдалется до конца вашей трудовой жизни.
Другим недостатком VM является то, что он может быть медленнее, чем если вы используете «родные» местные условия развития, такие как Валь , MAMP или что у тебя.
Эти «родные» инструменты устанавливают среду разработки на самом компьютере, так что нет слоя VM. Я обнаружил, что удобство и функциональность, предлагаемые фактическим VM; Не говоря уже о времени, сохраненном, имея его сопоставить вашу производственную среду, а не для того, чтобы не поддаваться некоторому настроенную настройку.
В общем, как это ни парадоксально местное развитие часто может быть медленнее, чем производственный сервер, независимо от того, какого инструмента вы используете. Это потому, что вы бегаете такие вещи, как Xdebug. , DevMode включен, TemplateCaching выключен, и в целом вещи созданы для разработки/отладки, а не производительность.
Ваш пробег, конечно, может варьироваться. Использовать любой инструмент; половина битвы — это просто тот факт, что вы используете что-то для местного развития.
Инструмент вверх. Будь офигенным.
Дальнейшее чтение
Если вы хотите быть уведомленным о новых статьях, следуйте nystudio107. в Твиттере.
Copyright © 2020 Nystudio107. Разработанный nystudio107
Оригинал: «https://dev.to/gaijinity/local-development-with-vagrant-homestead-2kn7»