Синхронизация рабочего пространства веб-разработчика

от автора

Доброго времени суток, Хабр!

Недавно я озадачился синхронизацией рабочего пространства среди всех используемых мной компьютеров. Я понял, что таскать все файлы и базы данных сайта с одного компьютера на другой, не вариант. Решив автоматизировать этот процесс, я обратил внимание на Dropbox \ Google Drive \ Yandex.Disk \ любой другой облачный диск ( выбрать свой вариант ).

Для начала я решил поискать некий сервис, который выполнил бы все необходимые мне действия, в том числе:

  • Синхронизация рабочих файлов сайтов ( PHP, HTML, CSS, etc ) таким образом, чтобы они могли редактироваться на обоих системах ( Windows, Mac )
  • Синхронизация баз данных
  • Синхронизация настроек IDE, плагинов и сниппетов
  • Возможность локальной работы, без интернета. Поэтому были исключены многие онлайн сервисы, такие как koding.com, а так же системы контроля версий.
  • Возможность синхронизации через используемый мной облачный диск Google Drive

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

К сожалению, ни одна статья не имела исчерпывающих инструкций по всем интересующим меня пунктам. Так же, в процессе я наткнулся с немалым количеством проблем, которые и вовсе не были освещены.

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

image

После недолгих поисков я наткнулся на AMPPS

Преимущества:

  • Кроссплатформенный( Windows, Mac OSX )
  • Бесплатный
  • Удобный интерфейс запуска и настройки сервера
  • Полная синхронность версий PHP, MySQL и других. Обновление в один клик
  • Отличный web-интерфейс, с кучей возможностей. Например, установка любой CMS или фреймворка.
  • Поддержка MongoDB ( мне он не нужен, но вдруг кому-то необходим )

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

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

image

Необходимо зайти в раздел Apache, и выбрать пункт Configuration. Откроется конфигурационный файл, в котором нам надо найти и изменить строчку

# DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "D:\путь\к вашему\облачному диску" 

Следующим действием нужно синхронизировать базу данных. Здесь было больше всего проблем и конфликтов. Для того, чтобы использовать синхронизацию, нужно изменить конфигурацию. Заходим в панель, кликаем MySQL и выбираем пункт конфигурация. Далее ищем и меняем строчку:

# Replication Master Server (default) # binary logging is required for replication #log-bin=mysql-bin 

Необходимо закомментировать логирование MySQL, т.к. из-за него происходили сбои и конфликты. Далее нужно синхронизировать сами базы. Для этого мы переходим в папку AMPPS\mysql. Нужно сделать символическую ссылку на папку data и связать ее с папкой в облачном диске. Для этого открываем консоль:

Для первой машины, Windows:

cd “C:\путь\к\AMPPS\mysql” mkdir "D:\путь\к\облачному\диску\mysql" mv data “D:\путь\к\облачному диску\Sublime\User” cmd /c mklink /D data "D:\путь\к\облачному\диску\mysql\data" 

Для каждой последующей, Windows:

cd "C:\путь\к\AMPPS\mysql\" rmdir -recurse data cmd /c mklink /D data "D:\путь\к\облачному\диску\mysql\data\" 

Для первой машины, MacOSX:

cd ~/Application/AMPPS/mysql/ mkdir ~/путь/к папке/облачного диска/mysql/ mv data ~/путь/к папке/облачного диска/mysql/ ln -s /путь/к папке/облачного диска data 

Для каждой последующей машины, MacOSX:

cd ~/Application/AMPPS/mysql/ rm -r data ln -s /путь/к папке/облачного диска data 

Теперь ваши базы данных синхронизированы. Для создания нового сайта, нужно пройти в web-панель управления, адрес localhost/ampps/. Далее в раздел Add domain. Главное, что нужно заполнить правильно в данном разделе — Domain path. Указываем здесь папку в облачном диске, созданную в той же директории, куда был прописан DocumentRoot Apache. Эту процедуру нужно проделать для каждой машины. После этого у вас будет доступен полностью синхронный проект.

Последним пунктом, я хотел синхронизировать проекты, настройки и плагины для моего любимого IDE Sublime text. В данный момент я использую 3 версию. Для правильной синхронизации необходимо синхронизировать только папку Packages/User, т.к. для каждой OS, может быть своя версия плагина. А в таком случае, будет синхронизирован список плагинов ( нужно заранее установить Package Control ), и правильная версия загрузится автоматически.

Для первой машины, Windows:

cd "$env:appdata\Sublime Text 3\Packages\" mkdir “D:\путь\к\облачному диску\Sublime” mv User “D:\путь\к\облачному диску\Sublime\User” cmd /c mklink /D User “D:\путь\к\облачному диску\Sublime\User” 

Для каждой последующей, машины Windows:

cd "$env:appdata\Sublime Text 3\Packages\" rmdir -recurse User cmd /c mklink /D User “D:\путь\к\облачному диску\Sublime\User” 

Для первой машины, MacOSX:

cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/ mkdir ~/путь/к папке/облачного диска/Sublime mv User ~/путь/к папке/облачного диска/Sublime ln -s ~/путь/к папке/облачного диска/Sublime/User 

Для каждой последующей машины, MacOSX:

cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/ rm -r User ln -s ~/путь/к папке/облачного диска/Sublime/User 

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

Прежде чем написать этот пост, я провел тестирование данного способа синхронизации. Были написаны 3 проекта, от начала и до конца. Лишь единожды произошел сбой базы данных и не значительная потеря данных. С 90% вероятностью, причиной этому был мой косяк в коде. Скорость и удобство синхронизации покрывает всю мороку с настройкой и позволяет значительно улучшить поток работы.

ссылка на оригинал статьи http://habrahabr.ru/post/195800/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *