Как кто настраивает размещение и поддержку сайта на хостинге

Главные вкладки

Аватар пользователя krak krak 13 января 2011 в 20:47

Ребята поделитесь как можно настроить сайт на сервере так, чтобы его потом было проще обновлять?

У меня есть один сайт (на 6ке), который я синхронизирую в Eclipse через sftp. Недостаточно быстр, но прост в настройке.

Один сайт я попробовал сделать при помощи git и bare reposirory. Установка прошла нормальна, но вот после установки когда я пытаюсь новый модуль залить или обновить что - слетает файлы, которые создались/изменились автоматически на сервере (например, settings.php), может я некорректно настроил - не знаю.

В 7ке вообще есть автообновление (если локально запускать) или авто через ftp, в случае если запускать обновление не на локальном сервере.

Слышал про drush. Не знаю его плюсов и минусов.

Какие есть еще методы и их плюсы и минусы?

Комментарии

Аватар пользователя iryston iryston 13 января 2011 в 21:36

Синхронизация данных при помощи утилиты rsync и ssh

Для установки пакета в debian/ubuntu можно использовать команду
sudo apt-get install rsync

Для начала необходимо создать целевые каталоги, например:
mkdir -p /home/username/site.name/www/
(опция -p создаст также родительские каталоги при необходимости.)

Разберём на примере:
Синхронизируем сайт -> локальный каталог
rsync -e ssh --progress -lzthvr --compress-level=9 --delete-after username@xxx.xxx.xxx.xxx:/home/username/site.name/www/ /home/username/site.name/www/
Синхронизируем локальный каталог -> сайт
rsync -e ssh --progress -lzthvr --compress-level=9 --delete-after /home/username/site.name/www/ username@xxx.xxx.xxx.xxx:/home/username/site.name/www/
С опцией --delete-after поосторожнее, она удаляет все файлы в каталоге назначения, которые отсутствуют в каталоге источнике.
Обратите внимание на последний слеш, так как он имеет значение для rsync. Если на конце исходной директории стоит «/», то это означает копирование содержимого директории; отсутствие слеша означает копирование директории и ее содержимого.

Ключи:
e — заменяет протокол с rsh на ssh
если ssh слушается не на стандартном порту то -e "ssh -p443"
progress — вывод хода процесса работы на терминал
l — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься
z — использовать сжатие
u — update. Обновление, он будет пропускать файлы которые новей, чем на удалённом сервере
o — установить владельца конечного файла таким же, как и у исходного
g — установить группу конечного файла таким же, как и у исходного
t — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации
h — вывод информации на терминал в удобном для чтения (human-readable) виде
v — verbose. Вывод сообщений в терминал.
r — рекурсивный режим
n — отладочный режим
x — не выходить за пределы ФС
S - корректно обрабатывать разреженные (sparse) файлы
compress-level — уровень сжатия
delete-after — удалять файлы, которые не были найдены на удалённом сервере, “-after” означает, что удалить их нужно, только после окончания синхранизации. Так-же есть delete-before, delete-during, delete-excluded и просто delete
partial — поддержка докачки

отладочный режим
Перед тем как запустить скрипт на рабочей машине, опробуйте всё в отладочном режиме, для этого используется ключь “-n”. В этом случае, rsync
не будет менять или удалять файлы, но покажет, весь ход работы.

исключение файлов
RSync может как исключать, так и включать файлы, по заданному шаблону. Например -exclude *.run исключит все файлы с расширением run, в Вашем случае можно использовать -exclude *settings.php

Ну и, конечно, полезно почитать man rsync

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

Что касается drush, то для обновления сайта это конечно must have, но обновлять с помощью него сайт на рабочем сервере без предварительного тестирования, мягко говоря рискованно.

Аватар пользователя krak krak 13 января 2011 в 22:04

"eagle" wrote:
Также перед синхронизацией полезно сделать бэкап базы данных, тогда rsync сразу перекачает и дамп, если он лежит в каталоге-источнике.

Как раз мой случай. Только у меня на винде для этих целей Eclipse с дополнением sftp.
Иногда (очень редко) бывают проблемы с доступом (права слетают).

Для drush нужен прямой доступ на сервер, как без входа на этот сервер делать необходимые обновления?

Кто-нибудь с помощью svn или git настраивал обновление сайта? Если да, то вы выкладываете уже готовый вариант? А что делаете с правками на сервере (например, файлы создались автоматически) - они у вас удалялись или загружались в локальную копию?

Аватар пользователя iryston iryston 13 января 2011 в 23:03

"krak" wrote:
Для drush нужен прямой доступ на сервер, как без входа на этот сервер делать необходимые обновления?

Может это поможет.
Drupal Terminal

По поводу прав я всегда после обновления запускаю на сервере скрипт который автоматом ставит нужные права и владельцев (требуется доступ по ssh)

"krak" wrote:
они у вас удалялись или загружались в локальную копию

с помощью svn или git я не настраивал обновление сайта, но с помощью вышеуказанного rsync возможна любая комбинация.
Также советую посмотреть, может найдете еще какие нибудь устраивающие Вас варианты.
http://forum.dklab.ru/viewtopic.php?t=13548
http://homestorage.ru/2010/03/rsync-dlya-windows/