DkLab, Конструктор, dkLab RealSync realtime-синхронізатор вихідників з локальної машини на

Головна відмінність RealSync від аналогів - у тому, що він вкрай стійкий до нестабільності інтернет-з'єднання, реконнектів та тайм-аутів. При цьому використовується SSH-з'єднання, доступ через яке конфігурується автоматично при першому запуску утиліти (тобто не потрібно возитися з ключами – налаштування здійснюється в інтерактивному режимі).
І навіщо цей велосипед, коли є Samba чи Денвер чи XAMPP?
Взагалі, існує кілька способів вести розробку веб-скриптів. Перший спосіб – використовувати локальний веб-сервер. У даного методу є як маса переваг (більший контроль, поліпшення переносимості та кросплатформенності і т. д.), так і маса недоліків, як то: потенційна відмінність конфігурації локального сервера від конфігурації дев-і продакшен-зон, необхідність або стежити за синхронністю локальної SQL-бази, або чекати, поки гальмує доступом до єдиної дев-базе з Інтернету тощо. буд. Ми не будемо в даній статті розглядати цей метод, хоча він, безумовно, має право на життя (і, як мінімум, застосовується 1 мільйоном зареєстрованих користувачів того ж таки Денвера).
Другий спосіб - використовувати веб-сервер,встановлений в офісі компанії (або на тестовій машині в датацентрі), який обслуговує штатні адміни. На такому веб-сервері може бути кілька директорій по одній для кожного розробника. Кожен програміст веде роботу у своїй директорії, щоб не заважати іншим, і дивиться результат на своєму піддомі (або на своєму номері порту). Ось цей спосіб ми розглянемо.
Використання віддаленої папки для веб-розробки
До директорії на віддаленому сервері потрібно якось "доступатися". У найбільш поширеному випадку її просто підключають як мережну папку на локальну машину по Samba. Цей спосіб має відразу кілька незручностей:
- Для переносної швидкості роботи ви повинні знаходитися в тій же локальній мережі, що і сервер.
- Але навіть у цьому випадку вам буде важко запустити пошук по всіх файлах великого проекту в IDE - занадто велика затримка.
- У разі розриву з'єднання (або ж ви не дай боже працюєте з дому через інтернет) - будьте готові до дивних ефектів та неприємних лагав.
Я знаю багатьох людей, які для обходу незручності (2) заходять по SSH на сервер і в консолі використовують grep для пошуку файлів, причому самі працюють в IDE. Мені це здається верхом незручності. Тим більше що в phpStorm, наприклад, пошук по всіх локальних файлах навіть дуже великого проекту працює відчутно швидше за grep-а і займає 1-2 секунди (як вони цього досягли - для мене загадка; мабуть, індексують щось заздалегідь). Особисто я постійно і з комфортом користуюся пошуком у phpStorm по локальних файлах - в середньому раз по 50 на день.
Є ще, звичайно, любителі працювати в VIM у SSH-консолі прямо на сервері; я їх поважаю, але навряд чи коли долучуся до їхнього табору: все-таки зручності,надані гарною графічною IDE, для мене переважують.
За великим рахунком, RealSync - це вирішення проблеми швидкості роботи IDE
А якщо мені потрібна двостороння синхронізація?
Це дуже популярне питання, пов'язане з тим, що RealSync завжди затирає будь-які зміни, що відбуваються безпосередньо в папці на сервері (якщо не відразу, так при черговому реконнект точно). Тільки зміни в локальній папці мають сенс та пріоритет.
Але давайте подумаємо, навіщо може знадобитися двостороння синхронізація?
- Ви хочете працювати, наприклад, з Git у консолі на сервері? Але навіщо? Адже можна поставити Git на свою машину і користуватися всіма перевагами локальної роботи та різними GUI для Git.
- Ваші скрипти пишуть до якоїсь локальної папки в рамках директорії документів? Додайте цю папку у виключення RealSync (це робиться легко, одним рядком у конфізі або при першому запуску). До того ж робити директорію документів доступною для запису скриптами – це антипаттерн.
- Ви працюєте на ноутбуці вдома та на іншому десктопі – на роботі та хочете синхронізувати файли через папку веб-сервера? Але веб-сервер - це не засоби синхронізації та контролю версій. Використовуйте краще Dropbox або керуйте системою контролю версій.
- Ви активно використовуєте симлінки у робочій копії на сервері? Ну. а чи не пробували перестати їх використовувати, це як мінімум спростить підтримку та розгортання в майбутньому?
Установка RealSync та перший запуск

Якщо ви вже маєте безпарольний доступ до сервера по SSH-ключу, пароль не буде запитуватись взагалі, навіть вперше. Якщо ще не маєте - RealSync сам згенерує відкритий+закритий ключ, відкритий покладеться на сервер, а закритий - у вашу домашню директорію на локальній машині (у спеціальну папку, яку сприймає RealSync).
Інші налаштування конфігурації запишуться у файл Повний Шлях До Вашої Папки Вихідників/.
Тепер можна правити будь-які вихідні коди і переконуватися, що вони моментально потрапляють на сервер. Якщо клацнути на іконку запущеного RealSync у треї, то процес можна спостерігати приблизно ось у такому вікні: