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

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

Первым делом я подумал о GIT ( bitbucket, github ), но с ним очень проблематично синхронизировать базы данных. Тем более хотелось полностью автоматического решения. Поэтому этот вариант отпал.

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

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

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

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

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

После недолгих поисков я наткнулся на 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% вероятностью, причиной этому был мой косяк в коде. Скорость и удобство синхронизации покрывает всю мороку с настройкой и позволяет значительно улучшить поток работы.

Комментарии запрещены.