Название: Результат падения сайта. Отправлено: Mode от Май 08, 2005, 16:16:05 Никто не застрахован от ошибок. Теперь представьте, что может случиться с вашими данными и скриптами сайта, если на сервере провайдера откажет винчестер? и не будет копии данных, а вы провели довольно значительные изменения программного обеспечения? Вы храните данные у провайдера и полностью ему доверяете? Тогда представьте себе, что вас с завтрашнего дня будет обслуживать незнакомый администратор. В таких случаях не помешает иметь под рукой копию данных и скриптов вашего сайта, если вы хотите иметь возможность оперативно возобновить работоспособность сайта из резервной копии в случае возникновения проблем с хостинг-провайдером*.
В зависимости от возможностей и ваших прав доступа к серверу, на котором расположен веб-сайт, подлежащий архивации, существуют следующие способы сохранения контента и программ вашего сайта: * применение CMS*, имеющих встроенные функции архивации и восстановления контента; * архивация средствами сервера хостинг-провайдера*; * архивация данных, запускаемая на сервере провайдера с удаленного компьютера. Какой способ архивации веб-сайта выбрать? В ведущие CMS - например, в CMS Mambo Studio - встроены механизмы архивации контента. Как правило, использование таких функций специализированных систем управления контентом носит интерактивный характер. Применение встроенных средств CMS Подавляющее большинство хостинг-провайдеров представляют доступ по протоколу SSH* к веб-каталогу вашего сайта. Если вы имеете необходимые права доступа к планировщику сервера и необходимым для архивации программам, задача значительно упрощается. В случае с UNIX-сервером достаточно написать шелл-скрипт* для архивации данных сайта. Его можно сделать доступным планировщику cron* с помощью соответствующих команд. Можно также поместить его в специальную директорию либо же указать ссылку на него в конфигурационном файле планировщика. Архивация, запускаемая с сервера Оптимальным способом для архивации данных на UNIX является использование программы tar с соответствующими ключами. Эта утилита существует во всех UNIX-совместимых операционных системах. Архивация с помощью tar Если скрипты вашего веб-сайта находятся в каталоге /home/www, то команда архивации будет выглядеть следующим образом: # tar -czf /home/arh.tar.gz /home/www/* Также желательно называть файл архива с учетом текущей даты, чтобы впоследствии было легче ориентироваться. Для этого можно использовать такой шелл-скрипт: #!/bin/sh date_time=`date +"%Y-%m-%d_%H-%M-%S"` /bin/tar -czf /home/arh/arh_$date_time.tar.gz /home/www/* Если разместить такой шелл-скрипт (назовем его arh_www) на сервере в каталоге /etc/cron.daily, задать ему права доступа 750 (команда chmod 750 /etc/cron.daily/arh_www) и создать каталог /home/arh, то архив скриптов вашего сайта будет создаваться раз в день. Скрипты для архивации контента В случае если часть контента вашего веб-сайта находится в базе данных MySQL, достаточно немного усложнить скрипт для архивации также и самой базы: #!/bin/sh to_cat=/home/arh/ web_cat=/home/www/* date_time=`date +"%Y-%m-%d_%H-%M-%S"` /usr/bin/mysqldump -h mysql_host -u mysql_user -pmysql_pass -d base >$to_cat/mysql_$date_time.sql /bin/tar -czf ${to_cat}arh_$date_time.tar.gz $web_cat $to_cat/mysql_$date_time.sql rm $to_cat/mysql_$date.sql В вызове /usr/bin/mysqldump следует указать ваши реквизиты подключения к базе данных, хост (если база расположена локально - в качестве имени хоста следует указать localhost), имя пользователя, пароль и наименование вашей базы. Архивируем как скрипты, так и базу данных Операционные системы, совместимые с UNIX, предоставляют возможность выполнять периодические задания также и непривилегированному пользователю системы. Для указания времени запуска и программы, которая будет запускаться, используется команда crontab. Она имеет следующие режимы работы: * редактирование конфигурации: crontab -e; * вывод всех заданий: crontab -l; * удаление всех заданий: crontab -l. Управление cron'ом для пользователя Редактирование crontab'ом пользовательской конфигурации cron. После запуска из командной строки crontab -e вызывается текущий редактор (скорее всего, это будет текстовый редактор vim*). Для того чтобы задать периодический запуск, необходимо указать в полях текстового файла числа или символ "*" - если планируется периодическое выполнение задачи. К примеру, если первыми двумя полями файла задать числа 10 15, то задача будет выполняться в 15-10 по системному времени на сервере. Для того чтобы войти в режим редактирования vim, следует нажать insert. После внесения изменений переход в режим команд осуществляется через нажатие escape. Для того чтобы записать внесенные изменения в файл, нужно дать команду :wq!, что означает запись без дополнительных условий. В случае применения утилиты crontab необходимо запускать команды архивации с правами пользователя, который имеет права на чтение скриптов веб-сайта. Архивацию данных можно выполнять, не имея прав на доступ к файлам веб-сайта, поскольку утилита mysqldump имеет свой собственный механизм авторизации доступа к базе данных. Использование утилиты crontab Распаковка резервной копии с помощью mc. Для восстановления скриптов сайта из архива вам достаточно распаковать архив в каталог, в котором расположен корень веб-сайта (в нашем примере это /home/www). Удобнее всего это выполнить с помощью Midnight Commander'а*. Восстановление базы данных выполняется с помощью утилиты mysql, которой передается файл дампа базы данных* mysql_xxx.sql, который заносится в общий архив: #mysql -h mysql_host -u mysql_user -pmysql_pass -d base < $to_cat/mysql_xxx.sql Как восстанавливать сайт из архива? Созданный архив необходимо передать на удаленный компьютер. Для клиентской станции на Microsoft Windows идеально подходит утилита pscp.exe из состава проекта Putty*. Вы можете указать планировщику вашей операционной системы выполнять операцию копирования автоматически. В UNIX-совместимых операционных системах для таких целей можно применять команду scp (secure copy). Передача данных на удаленный терминал Если исходные материалы сайта подготавливаются клиентом, и их объем довольно существенен, можно отказаться от архивирования всех таблиц базы данных сайта. Утилита mysqldump позволяет выборочно указывать список таблиц базы данных, которые необходимо архивировать. К примеру, команда: mysqldump -u root -p123 mysql host > /home/arh/mysql_host.txt выводит таблицу host из базы данных под названием mysql в текстовый файл. Оптимизация процесса архивации Даже если у вас нет административных прав на системе хостинг-провайдера, вполне возможно управлять всей схемой архивации данных с удаленного компьютера. Достаточно запускать процесс архивации с помощью скрипта, запускаемого на удаленном компьютере, или применив программу wget* следующим образом: wget.exe http://site.com.ru/run_arh.php. Также можно применить следующий PHP-скрипт: @file("http://site.com.ru/run_arh.php"); ?> Что делать, если прав доступа не хватает? В скрипте run_arh.php задается запуск скрипта архивации сайта. Этот вариант возможен, если у вашего провайдера есть интерпретатор скриптов PHP*, и он работает не в защищенном режиме. Тогда возможно воспользоваться одной из команд для запуска внешних команд из PHP. В случае если PHP работает в защищенном режиме, вам следует воспользоваться утилитой, предназначенной для запуска команд на удаленном сервере через SSH-доступ. В этом случае следует учитывать, что время работы скриптов PHP ограничено 30 секундами (по умолчанию), и разрабатывать такой механизм, который бы выполнял архивацию сайта по частям. Безвыходных ситуаций не бывает Существуют несколько функций, встроенных в PHP, которые позволяют выполнить архивацию на сервере. Одна из них - pack. Эффективное использование этой функции можно посмотреть на примере PHP-класса zipfile Использование специализированных классов PHP Если клиент, запускающий архивацию, расположен на компьютере с установленной операционной системой Windows, вы также можете воспользоваться plink.exe из состава проекта Putty для запуска скриптов на удаленном сервере. Вот пример запуска этой утилиты: >plink.exe -ssh test@192.168.2.1 /home/www/arh_site Использование plink.exe Конечно же, необходимым условием является присутствие скрипта архивации контента сайта в веб-директории и его доступность через Веб. При этом обостряются вопросы обеспечения безопасности веб-сайта. Но особой сложности здесь нет. Достаточно дать разрешение на запуск скриптов только для определенных IP-адресов или же просто указать длинное имя скрипта. Не забывайте про права доступа и безопасность Процесс сохранения данных и скриптов сайта и архивация сайта носят скорее профилактический характер. Но в случае возникновения сложностей только умело построенная копия программного обеспечения позволяет быстро восстановить работоспособность сайта. Часто кажется, что при разработке веб-сайта нет времени на такие рутинные операции. Но если вы хотите быть полностью уверены в том, что время и средства, вложенные в разработку и поддержание вашего сайта, не пропадут, наличие архивации - необходимое условие вашего спокойствия. Взято тута - http://postman2005.strana.de/2004_150.htm#20050505194638@699 Название: Re: Результат падения сайта. Отправлено: tFF от Май 08, 2005, 22:52:48 Мод, Grand-респект тебе за столь детальное описание проблемы... ;)
Попытался с первого раза прочитать... Но не тут-то было... Сконцентрируюсь попозже, сейчас меня деконцентрирует бутылка Jim Beam и приятная кампания. Ждем новых сообщений... |