OBEC POCTE
NEVSEREMOS'!

Оцінка користувачів: 5 / 5

Активна зіркаАктивна зіркаАктивна зіркаАктивна зіркаАктивна зірка
 
Multithumb found errors on this page:

There was a problem loading image http://static.xscreenshot.com/2012/08/28/12/screen_d339367bf8b2d77373df33fe541fa610
There was a problem loading image http://static.xscreenshot.com/2012/08/28/12/screen_d339367bf8b2d77373df33fe541fa610
There was a problem loading image http://static.xscreenshot.com/2012/08/28/12/screen_c6c126bb03da19710e08ad9e0f3702cd
There was a problem loading image http://static.xscreenshot.com/2012/08/28/12/screen_c6c126bb03da19710e08ad9e0f3702cd
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_bf7610e5215fd0a7e04024dbf5b75dc7
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_bf7610e5215fd0a7e04024dbf5b75dc7
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_c5c04445921ebbd9aef2378d6aaf4471
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_c5c04445921ebbd9aef2378d6aaf4471
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_282de2ddc89ce08e08625e21aa162e3d
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_282de2ddc89ce08e08625e21aa162e3d
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_eb236a78d2d641adee95686ec72d48fb
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_eb236a78d2d641adee95686ec72d48fb
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_74d23482b5cbbff7a9f53e6ead328654
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_74d23482b5cbbff7a9f53e6ead328654
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_cb3ef1890434263407d3e65cf294f806
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_cb3ef1890434263407d3e65cf294f806
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_a845b5ecd0fd69ba53b33d622b029c29
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_a845b5ecd0fd69ba53b33d622b029c29
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_985b7c328e7bc42fbd97ef3ae457a0ab
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_985b7c328e7bc42fbd97ef3ae457a0ab
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_d082f620595f1c07c0603998813561f3
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_d082f620595f1c07c0603998813561f3
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_1ae9f81d33369c1235b7551182cb7837
There was a problem loading image http://static.xscreenshot.com/2012/08/28/13/screen_1ae9f81d33369c1235b7551182cb7837
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_80ef9f1fb85909761a81719190df5869
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_80ef9f1fb85909761a81719190df5869
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_a1ae5e7d0c8cbb2b69e60859ad2af8f1
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_a1ae5e7d0c8cbb2b69e60859ad2af8f1
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_5fdb2984dc9079ddfaa31cc6ba801a30
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_5fdb2984dc9079ddfaa31cc6ba801a30
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_69b3d38655560c201dc1be5d2b3d0a0a
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_69b3d38655560c201dc1be5d2b3d0a0a
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_a081040149806b1a4c7cb2d96cda85fb
There was a problem loading image http://static.xscreenshot.com/2012/08/28/14/screen_a081040149806b1a4c7cb2d96cda85fb
З часу написання цього матеріалу, в Unison з’явилась підтримка без застосування inotify. Я все ще користуюсь описаним ниже методом, та можете спробувати і новий. Докладніше на stackoverflow

spider.24990811 stdДано

Віддалений Linux'овий сервер і локальна машина під Linux (OpenSuse). SSH доступ до віддаленої машини.

Задача

Я розробляю сайт на віддаленому сервері. Маю список задач. Зазвичай я переношу сайт на локальну машину, працюю на локалці, а коли все завершено, повертаю на сервер. Втім, якщо клієнт хоче бачити результат наживо, або хоче працювати в цей час з сайтом, треба діяти інакше. FTP мене не влаштовує з деяких причин. Зокрема неможна зробити текстовий пошук по всіх файлах. Або під KDE я не можу працювати у Geany з FTP чи SFTP. 

А треба працювати, ніби віддалений сайт є змонтованим жорстким диском. Всі монтування по FTP чи SFTP, які я пробував, були жахливо повільні.

Теорія

Існує супер-пупер мега-всьошна утілітка Unison, що дозволяє синхронізувати дві теки - віддалені, локальні, які хочеш. Але є мінус, що після кожної зміни треба запускати Unison руками, щоби відбулась реплікація. То ж задача є запускати Unison автоматично при будь-яких змінах.

Такі загальні крокі ми зробимо нижче:

  1. Налаштуємо безпарольну аутентифікацію до віддаленого сервера.
  2. Встановимо Unison на віддаленій і локальній машинах.
  3. В перший раз синхронізуємо теки вручну.
  4. Напишемо скрипт, що за допомогою inotifywait буде спостерігати за змінами у теці і запускати Unison при потребі.

Рішення

Налаштуємо безпарольну аутентифікацію до віддаленого сервера.

Промовимо у терміналі закляття:

ssh-copy-id -i root@yoursite.com.ua

Дух спитає чи згодні ви прийняти в себе відбиток-пальця під йменя RSA-ключ. Після згоди він запитає гасло.

Тут хроніки мого чаклування:

gruz@gruz:/mnt/sda2/home/gruz>;; ssh-copy-id -i root@yoursite.com.ua
The authenticity of host 'yoursite.com.ua (95.95.95.95)' can't be established.
RSA key fingerprint is 48:36:22:32:45:09:1d:04:eb:63:d1:60:27:7e:f6:ba.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'yoursite.com.ua' (RSA) to the list of known hosts.
root@yoursite.com.ua's password: 
Now try logging into the machine, with "ssh 'root@yoursite.com.ua'", and check in:
  ~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
gruz@gruz:/mnt/sda2/home/gruz>;

screen_d339367bf8b2d77373df33fe541fa610

Тепер перехід у той бік реальності буде без гасла:

gruz@gruz:/mnt/sda2/home/gruz>;ssh root@yoursite.com.ua
Last login: Tue Aug 28 12:34:13 2012 from 174-235-133-95.pool.ukrtel.net
[root@portall ~]#

screen_c6c126bb03da19710e08ad9e0f3702cd

Описане вище треба здійснити лише раз.

Встановимо Unison на віддаленій і локальній машинах

На локальній OpenSuse закляття:

sudo zypper in unison

На віддаленому CentOS закляття:

yum install unison

Примітка: Весрії Unison мусять бути (майже?) однакові, проте в сучасних дистрибутивах лінукс так і є, то ж хвилюватись не доведеться.

В перший раз синхронізуємо теки вручну

Опціонально. Можливо, в перший раз варто зробити копію сайта на локальній машини вручну. Для джумли я використовую AkeebaBackup. Це може бути швидше, ніж синхронізація.

Незалежно, чи ви зробили вручну, чи маєте пусту локальну теку, мусите знати два шляхи - локальний і віддалений.

Мій локальний /home/gruz/www/bulat.uaa/www_sync, а віддалений -  /some/remote/path/bulat.ua


Запускаємо Unison і натикаємось на графічний інтерфейс:

screen_bf7610e5215fd0a7e04024dbf5b75dc7

Тицнемо Add і йдемо за кроками:

screen_c5c04445921ebbd9aef2378d6aaf4471 screen_282de2ddc89ce08e08625e21aa162e3d
screen_eb236a78d2d641adee95686ec72d48fb screen_74d23482b5cbbff7a9f53e6ead328654
screen_cb3ef1890434263407d3e65cf294f806 screen_a845b5ecd0fd69ba53b33d622b029c29

Далі ви побачите пропозиції до дій. Деякі "не впевнені". Оберіть все так клікніть "Right to Left"

screen_985b7c328e7bc42fbd97ef3ae457a0ab

Тицніть "go" і чекайте. Після завершення закрийте вікно.

screen_d082f620595f1c07c0603998813561f3

Я рекомендую відкривати графічний інтерфейс і здійснювати ручну синхронізацію кожен раз перед початком роботи із сайтом. Це дозволить розв'язати конфлікти, що виникають при розсинхронізації. Все з права на ліво!

Напишемо скрипт, що за допомогою inotifywait буде спостерігати за змінами у теці і запускати Unison при потребі

Давайте відредагуємо файл на локалці і запустимо unison у терміналі:

unison -ui text -auto -batch bulat.ua

Пригадуємо, що bulat.ua є іменем мого профайла unison.

Тож у локальній теці я редагую README.txt і запускаю Unison. Вивід команди ось:

gruz@gruz:/mnt/sda2/home/gruz>;; unison -ui text -auto -batch bulat.ua
Contacting server...
Connected [//gruz//mnt/sda2/home/gruz/work/www/bulat.uaa/www_sync -> //some/remote/path/bulat.ua]
Looking for changes
  Waiting for changes from server
Reconciling changes
changed  ---->            README.txt  
Propagating updates
UNISON 2.40.63 started propagating changes at 13:58:09.03 on 28 Aug 2012
[BGN] Updating file README.txt from /mnt/sda2/home/gruz/work/www/bulat.uaa/www_sync to //some/remote/path/bulat.ua
[END] Updating file README.txt
UNISON 2.40.63 finished propagating changes at 13:58:09.47 on 28 Aug 2012
Saving synchronizer state
Synchronization complete at 13:58:10  (1 item transferred, 0 skipped, 0 failed)
gruz@gruz:/mnt/sda2/home/gruz>;

screen_1ae9f81d33369c1235b7551182cb7837

Як ще його запускати автоматично при будь-якій зміні в файлах?

Мусите мати встановлениу на локальній машини утіліту  inotifywait. У OpenSuse вона йде в пакунку inotify-tools і валяється тут http://software.opensuse.org/package/inotify-tools.

Мій підхід такий. На рівень вище від локальної теки  /home/gruz/www/bulat.uaa розміщую скрипт sync.sh з наступним вмістом:

#!/bin/sh
while inotifywait -r -e modify -e create -e delete ~/www/bulat.uaa/www_sync/; do
    unison -ui text -auto -batch bulat.ua
done

screen_80ef9f1fb85909761a81719190df5869

Робимо його виконуваним:

cd //home/gruz/www/bulat.uaa; chmod +x sync.sh

І запускаємо файл у терміналі. Доки термінал відкрито, працює і синхронізація. Коли ви скінчили роботу, або закрийте термінал, або тисність Ctrl+C.

gruz@gruz:~/www/bulat.uaa>;; ./sync.sh
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.

screen_a1ae5e7d0c8cbb2b69e60859ad2af8f1

Тепер, коли я відредагую README.txt, то термінал відгукнеться:

gruz@gruz:~/www/bulat.uaa>; ./sync.sh
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/home/gruz/www/bulat.uaa/www_sync/ CREATE .goutputstream-Q5DJJW
Contacting server...
Connected [//gruz//mnt/sda2/home/gruz/work/www/bulat.uaa/www_sync -> //some/remote/path/bulat.ua]
Looking for changes
  Waiting for changes from server
Reconciling changes
changed  ---->            README.txt  
Propagating updates
UNISON 2.40.63 started propagating changes at 14:16:12.02 on 28 Aug 2012
[BGN] Updating file README.txt from /mnt/sda2/home/gruz/work/www/bulat.uaa/www_sync to //some/remote/path/bulat.ua
[END] Updating file README.txt
UNISON 2.40.63 finished propagating changes at 14:16:12.64 on 28 Aug 2012
Saving synchronizer state
Synchronization complete at 14:16:13  (1 item transferred, 0 skipped, 0 failed)
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.

screen_5fdb2984dc9079ddfaa31cc6ba801a30

Надалі я рекомендую зробити термінал мааалесенького розміру і повісити згори над іншими вікнами десь у куточку, щоби бачити процес реплікації.

screen_69b3d38655560c201dc1be5d2b3d0a0ascreen_a081040149806b1a4c7cb2d96cda85fb

Обмеження

  • Реплікація  не має швидкості світла, а займає долю секунди. Тому варто мати вікно з терміналом перед очима, щоби бачити завершення реплікації. Зазвичай вона встигає завершитись за час вашого alt+tab між редактором і бравзером.
  • Після певного часу, що ви не працювали над віддаленим сайтом, відбувається серйозна розсинхронізація (кеш, зображення, зміни файлів іншими адмінами), яку Unison не може вирішити самостійно. Тоді він питає в користувача, що робити. Тому перед роботою над сайтом рекомендую здійснити ручну синхронізацію через GUI, а тоді вже пускати sync.sh.
  • Оскільки синхронізація не миттєва, то може статися, що ви зберігаєте один файл, до реплікується інший. Тоді Unison може проігнорувати ці зміни. Це вимагає певно уваги.

Інше

Якщо вам потрібна одностороння синхронізація, тобто вас не турбують зміни на сервері, то простіше і швидше користуватись таким ПЗ RealSync: replicate developer's files over SSH in realtime

Коментарі   

sv
# sv 21.07.2014, 11:19
Как по мне проще sshfs.

Зареєструйтесь, щоби додавати коментарі

Якщо ви помітили помилку, то виділіть фрагмент тексту та натисніть Ctrl+Enter
FaLang translation system by Faboba
Електронна бібліотека «Exlibris»: історичні дослідження, мемуаристика, публіцистика, художня література Українська етнографія: книги, курси лекцій, статті й матеріали, мапи, фотоальбоми, веб-ресурси Правителі України: портрети, життєписи, матеріали Твори Адріана Кащенка: романтика козацьких часів Народна війна 1917-1932
Orphus System

Коментарі

  • Форматування PHP коду у VS Code відповідно до Joomla Coding Standards, тобто про phpcs та php-cs-fixer

    oppo oppo 16.03.2018 09:54
    спасибі, грамотно написано

    Детальніше...

     
  • Урок на майбутнє. Зброя і революція.

    Chillipepper Chillipepper 20.12.2016 22:59
    "... малі держави не можуть ефективно покладатися виключно на стримування в якості основної стратегії ...

    Детальніше...

     
  • AutoReadMore - автоматичне додавання кнопки Детальніше для статей Joomla, інших компонентів і модулі

    gruz gruz 13.07.2016 18:38
    Виправив в останній версі 4.5.3

    Детальніше...

     
  • AutoReadMore - автоматичне додавання кнопки Детальніше для статей Joomla, інших компонентів і модулі

    гром гром 13.07.2016 10:01
    Привіт! Відмінний плагін, не можу застосувати його до категорій. Або скрізь працює або ніде! У ...

    Детальніше...

     
  • VirtueMart 2.x Categories accordion menu

    gruz gruz 28.12.2015 12:54
    http://static.xscreenshot.com/small/2016/01/06/02/screen_12a86996b1b92dde3e5c4ca5b872b516 ...

    Детальніше...