LXF155:Сохранять Drupal
|
|
|
Сисадмину Узнайте, как поддерживать ваш сайт Drupal
Содержание |
Резервные копии Drupal
Джонатан Робертс нормализует ваш сон, научив вас создавать резервные копии и поддерживать основные файлы Drupal.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Linux – ОС для Интернета. Люди любят ее, потому что она бесплатная, быстрая и стабильная. Они также любят ее, потому что это идеальная платформа для запуска одной из многих свободных и открытых систем управления контентом (CMS), таких как Drupal и Wordpress.
Раньше мы публиковали учебники, показывающие вам, как начать использовать эти CMS, но они были сосредоточены в основном на начальной установке и настройках. Тем не менее, запуск сайта, будь то лично для себя или для своего бизнеса, не ограничивается этим.
Другим, более важным, фактором является постоянное обновление, которое следует выполнять. По соображениям безопасности, вы должны следить за текущими обновлениями программного обеспечения, а также обеспечивать целостность данных; следует выполнять регулярное резервное копирование вашего сайта на случай взлома, случайного удаления базы данных или порчи из-за сбоев железа.
На нашем уроке мы покажем все необходимое, чтобы держать основанный на Drupal сайт в хорошем состоянии – а именно резервное копирование и обновление.
Мы используем Drupal в качестве примера, потому что он очень популярен, и навыки, которые вы получите по резервному копированию в Drupal, можно будет применить к ряду других CMS, в том числе Joomla и WordPress. Начнем с резервного копирования: живой сайт без предварительного основательного резервного копирования обновлять не стоит. Итак, учитывая все сказанное выше, приступим.
Прежде чем создать резервную копию всего что ни на есть, важно отступить назад и подумать о стратегии. Не зная, как часто вы собираетесь выполнять резервное копирование, для каких файлов вы собираетесь создать резервную копию, или как вы собираетесь это делать, вы, скорее всего, в конечном итоге окажетесь в сплошном завале: неполные резервные копии, хранящиеся где попало, не сильно помогут, если придется восстанавливаться после катастрофы.
Итак, часто ли следует делать резервное копирование? На самом деле это зависит от загрузки вашего сайта. Если вы ежедневно получаете десятки новых постов и комментариев, было бы разумно выполнять резервное копирование каждый день. А если жизнь на вашем сайте гораздо тише, и приходит лишь несколько новых сообщений в неделю или месяц, можно позволить себе делать резервную копию реже.
Знать свой предел
Частота резервного копирования может также диктоваться ограниченностью ресурсов. Если у вас мало места для хранения и скромный бюджет на трафик, вы можете решить делать резервную копию реже, чем при неограниченных ресурсах.
Ряд ограничений ресурсов можно частично смягчить, внимательно рассмотрев, для чего вы будете делать резервную копию. Drupal, например, может быть в общем описан как состоящий из трех компонентов:
- Основные файлы, содержащие PHP, HTML, CSS и файлы конфигурации, которые лежат в основе работы Drupal.
- Сопутствующие файлы, содержащие сторонние модули, пользовательские темы и загруженные файлы.
- База данных, содержащая сообщения и метаданные, комментарии пользователей и их настройки.
Даже на бойком сайте, где содержание базы данных меняется по нескольку раз на дню, маловероятно, что вы будете регулярно изменять основные или сопутствующие файлы. А значит, можно создавать резервную копию этих файлов реже – может быть, раз в месяц – а базу данных копировать ежедневно. Это сэкономит вам значительные объемы дискового пространства и пропускной способности.
Ограничения ресурсов также можно обойти, включив в свою стратегию инкрементальные резервные копии. Вместо постоянного выполнения полного резервного копирования можно просто записать изменения с момента последнего копирования. Объединив их, вы получите самый актуальный набор файлов для восстановления.
Выберите местоположение
Прежде чем рассматривать резервное копирование, прикиньте, где вы намерены хранить резервные копии.
Резервное копирование вас не спасет, если копии хранятся на той же машине, что и исходный контент. На самом деле, не очень хорошо, даже если они хранятся в том же здании. Если компьютер сломался или случился пожар, и оригинал, и копии будут уничтожены.
Принимая все сказанное во внимание, какую следует выбрать стратегию для резервного копирования? Ну, мы собираемся создавать резервную копию основных и сопутствующих файлов раз в месяц, а заодно и полную резервную копию базы данных; но, чтобы не потерять обновления между резервными копированиями, будем также делать ежедневное инкрементное резервное копирование базы данных. Резервные копии будут создаваться на сервере и храниться в /home/<user>/backups/. Инкрементные резервные копии будут отсылаться на удаленную машину раз в неделю, а наша ежемесячная полная резервная копия, в том числе основных и сопутствующих файлов и базы данных, будет выслана сразу по изготовлении.
Вместо вечного хранения резервных копий, что требует большого пространства для хранения, мы будем замещать резервные копии старше шести месяцев на сервере и на удаленной машине.
И, наконец, отметим, что все наши резервные копии будут датированы. Таким образом, в непредвиденной ситуации мы будем точно знать, какие резервные копии самые последние и какие из них наиболее подходят для восстановления.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Копирование файлов
Составив план, давайте посмотрим, как создать резервную копию каждого из компонентов, а затем – как объединить их вместе, чтобы получить полную резервную копию.
Начнем с основных и сопутствующих файлов. Основные файлы Drupal хранятся в каталоге под названием “Drupal root folder”. Это та же папка, которую вы загрузили с сайта при первой установке, и теперь, скорее всего, она находится в корневом каталоге документов web-сервера.
Сопутствующие файлы по умолчанию хранятся в подпапке sites/ этой же директории.
Это значительно все упрощает: для создания резервной копии основных и сопутствующих файлов достаточно создать архив
tar -cvzf /home/<user>/backups/drupal-files-backup-<date>.tar.gz /var/www/drupal/
В этом примере мы использовали опции tar -c и -z, указывающие на создание нового архива и сжатия его по алгоритму gzip.
Мы также использовали опцию -v, которая ставит «разговорчивый» режим, и -f для вывода архива на первый аргумент. Второй аргумент определяет исходную папку.
<user> можно заменить на имя домашнего каталога любого пользователя, где хранятся резервные копии, а <date> – текущей датой. В зависимости от настроек, вы также можете изменить путь к корневой папке Drupal (в нашем случае /var/www/drupal/).
Копирование базы данных
И это все, что требуется для резервного копирования основных и сопутствующих файлов для Drupal. Теперь пора взглянуть на то, как выполнить резервное копирование базы данных, и обсудить стратегию.
Мы говорим здесь о выборе стратегии, поскольку есть два способа сделать это, каждый со своими плюсами и минусами.
Первый метод известен как логическое резервное копирование. Он предполагает создание единого файла, включающего операторы языка SQL (Structured Query Language) для восстановления базы данных. К ним относятся инструкции CREATE DATABASE, CREATE TABLE и INSERT.
Второй метод известен как физическая резервная копия. Речь идет просто о создании копии файлов и каталогов, которые представляют собой базу данных, как мы делали для основных и сопутствующих файлов Drupal.
Документация MySQL содержит убедительные аргументы в пользу физических копий, утверждая, что они быстрее и требуют меньше места для хранения резервных копий, чем логическое копирование.
Логическое резервное копирование, однако, гораздо более гибкое (оно работает со всеми движками хранилища MySQL, и копии могут быть восстановлены на любой машине – чего нельзя сказать о физических резервных копиях), а их медлительность и большие требования к хранилищу можно смягчить, делая инкрементные копии.
Итак, мы все-таки остановимся на логическом резервном копировании. Однако не забывайте о возможности физического копирования: если ваш босс будет не в восторге от многочасового восстановления, оно подойдет вам больше!
Инкрементные резервные копии
Чтобы система резервного копирования базы данных заработала, включая инкрементные копии, надо прежде всего настроить MySQL на запуск с нужными параметрами. Инкрементное резервное копирование по сути представляет собой двоичный файл журнала MySQL, скопированный в безопасное место. Поэтому следует включить ведение журнала в двоичном виде. Чтобы включить эту функцию,
- Откройте /etc/MySQL/my.cnf в любом текстовом редакторе.
- Найдите раздел, помеченный [mysqld].
- Убедитесь, что присутствует log-bin.
- Перезапустите MySQL командой
sudo service mysql restart
или ее эквивалентом в вашем дистрибутиве.
По умолчанию, двоичные журналы будут храниться в каталоге данных (в большинстве систем это /var/lib/MySQL), с именем файла, основанном на имени хоста компьютера, с расширением .bin. Можно изменить это, добавив =/path/to/log/<base-name> в строку log-bin в /etc/mysql/my.cnf..
Затем вы можете использовать это, чтобы все журналы писались в единое каноническое место резервного копирования, типа /home/<user>/backups/incremental. Если вы сделаете это, не забудьте изменить права доступа, чтобы пользователь MySQL имел право на запись в этом каталоге.
Включив эту функцию, вы можете создать новую инкрементную копию в любое удобное время, запустив:
mysqladmin -u <mysql-user> -p flush-logs
Согласно нашей стратегии резервного копирования, эта команда должна выполняться раз в день. Раз в неделю надо также при помощи tar связывать эти файлы вместе в датированной резервной копии, которая также помечена как инкрементная, а затем сохранять на удаленной системе.
Полное логическое копирование
Настроив инкрементные резервные копии, рассмотрим, как сделать полное резервное копирование базы данных (без которого наши инкрементные резервные копии были бы бесполезны!).
MySQL поставляется со скриптом mysqldump, автоматизирующим этот процесс, и все, что вам нужно сделать – это выполнить команду
mysqldump -u <mysqluser> -p --single-transaction –flushlogs --master-data=2 --databases <databasename> > / home/<user>/backups/db-backup-<data>.sql
Рассмотрим эту команду поподробнее, чтобы понять, что происходит:
- -u <mysqluser> определяет, какой пользователь MySQL получает доступ к базе данных. Вы можете указать суперпользователя-root или конкретного пользователя, имеющего доступ к базам данных в Drupal. Если вы укажете не-root, ему понадобятся привилегии RELOAD. Опция -p велит MySQL авторизовать пользователя, запрашивая пароль.
- --single-transaction гарантирует, что mysqldump видит данные только один раз – если база данных изменится во время резервного копирования, это не приведет к увеличению mysqldump, так как изменения не будут ему видны.
- --flush-logs записывает текущий журнал на диск. Тогда вы можете быть уверены, что любые данные, которые не видит mysqldump, войдут в инкрементные копии.
- --master-data=2 добавляет запись последнего файла журнала к файлу полной резервной копии. Это позволит вам знать наверняка, какие файлы журнала надо использовать для восстановления при инкрементном резервном копировании.
- --databases позволяет определить, для каких баз данных создавать резервную копию. Вы можете указать несколько баз данных, а также использовать --all-databases вместо этого.
- > Перенаправляет вывод mysqldump в любой указанный вами файл. Как правило, mysqldump просто выводит данные на stdout.
Когда команда закончит выполнение, вы должны получить папку /home/<user>/backups, содержащую запись основных и сопутствующих файлов Drupal и баз данных. Можно использовать tar, чтобы связать эти файлы вместе и создать полную резервную копию всех файлов, необходимых для восстановления Drupal. Не забудьте указать дату, маркировать архив как полную резервную копию и сохранить его в безопасном месте – на другой машине.
Восстановление из копии
Отлично! Теперь у вас есть полная резервная копия, и вы также делаете регулярные инкрементные резервные копии содержимого, которое изменяется чаще всего. Но это вас не сильно спасет, поскольку вы не умеете его восстанавливать.
Чтобы избежать неловкой ситуации, когда ваша система рухнула и у вас есть резервная копия, но вы не знаете, как ее применить, сделаем-ка учебное восстановление.
Во-первых, надо установить тестовую машину. Можно использовать физическую или виртуальную машину – какая вам удобнее. Затем установите дистрибутив и убедитесь, что Apache и MySQL установлены и запущены, вместе со всеми PHP-зависимостями, нужными для Drupal. Помните, что установка по умолчанию LAMP не всегда включает php5-gd, на который ссылается Drupal, так что его тоже нужно установить.
Затем скопируйте последнюю полную резервную копию (которая, как мы предполагаем, содержит все основные файлы, а не только подпапку sites/) на машину, с помощью scp, rsync или любого другого инструмента, который вам нравится. Кроме того, скопируйте все инкрементные резервные копии, сделанные со времени последней полной резервной копии.
Извлеките файлы с помощью tar командой
tar -xvzf full-backup-<date>.tar.gz
Здесь ключ -х используется для извлечения файлов, в отличие от ключа -с, который мы использовали ранее и который отвечает за создание нового пакета. Когда вы это сделаете, появится новая папка в текущем каталоге, внутри которого будет резервная копия файлов Drupal и базы данных.
Если вы сначала извлечете содержимое архива drupal-файлов командой, аналогичной команде выше, вы получите старый корневой каталог Drupal обратно. Скопируйте его прямо в корневой каталог документов нового web-сервера.
Затем восстановите базу данных с помощью файла .sql от mysqldump и соответствующего набора инкрементных копий:
mysql -u <user> -p < backups/db-backup-<date>.sql
Эта команда выполнит все команды SQL, содержащиеся в файле, восстановив таблицы базы данных, строки, столбцы и т. д.
В завершение восстановления базы данных примените инкрементные резервные копии, чтобы ее содержимое соответствовало последним изменениям. Для этого скомандуйте
mysqlbinlog inc-backup-file-1 inc-backup-file-2 ... | mysql -u <user> -p
Тепрь почти все работает, но при попытке получить доступ к сайту Drupal вы получите сообщение об ошибке. Это означает, что Drupal еще не имеет доступа к серверу MySQL и его базам данных.
Чтобы исправить это, можно настроить Drupal, указав нового пользователя и пароль для MySQL, или создать нового пользователя MySQL, имеющего те полномочия, на использование которых Drupal уже настроен.
В последнем случае, просто повторите инструкции из нашей врезки Установка Drupal для предоставления привилегий пользователя на работу с базой данных Drupal.
Вот и все. Теперь у вас есть возможность посетить вашу установку Drupal, вероятно, зайдя на http://localhost/drupal или нечто подобное, в зависимости от того, что вы установили на тестовой машине.
Скрипты для копирования
Знать, как выполнить резервное копирование – только половина проблемы. Обеспечение регулярного резервного копирования по графику – другая ее половина. Нечто спешное всегда приводит к прерыванию резервного копирования, и оно откладывается на потом.
Лучший способ избежать такого рода проблем – скрипт резервного копирования и использование задания cron, обеспечивающего автоматический запуск по установленному расписанию.
Мы не будем объяснять это здесь подробно: вам требуется всего-навсего собрать все команды нашего урока в один файл .sh, а затем прочитать man-страницу cron, чтобы установить автоматический запуск скрипта.
А что касается автоматизации ведения двоичного журнала, можно обойтись и без cron. Откройте файл /etc/mysql/my.cnf снова, и в разделе [mysqld], где вы включали log_bin, добавьте max_binlog_size и установите его в относительно небольшое значение. Таким образом, всякий раз, когда двоичный журнал достигнет определенного размера, MySQL будет автоматически очищать журнал.
Это не совсем то же, что сброс журналов каждый день, но имеет такой же эффект.
Другие web-приложения
Как мы намекнули во введении к этой статье, резервное копирование других web-приложений часто следует процедурам, очень похожим на использованные здесь. Но что это за приложения?
Ну, для начала, есть Wordpress, очень популярная блог-платформа. Хотя это совершенно разные платформы, резервное копирование Wordpress идет практически через ту же процедуру: копирование базы данных и копирование основных файлов.
Также есть Joomla. На самом деле это производная Drupal, и ее процедура резервного копирования точно такая же. А если вы работаете на Wiki MediaWiki или в форуме phpBB? Без проблем, процедура и здесь такая же!
Итак, пользуйтесь вновь обретенными навыками управления любым из этих web-приложений, и спокойный сон ночью вам гарантирован.
Обновление Drupal
Обновление Drupal так же важно, как поддержание регулярного резервного копирования – по крайней мере, не менее важно, чем обновления после малых релизов. Это обеспечивает безопасность и исправляют ошибки, делая ваш сайт более безопаснем и менее подверженным сбоям – короче, обновления сделают вашу жизнь в роли системного администратора менее напряженной!
Перед выполнением любых обновлений сделайте полную резервную копию вашего сайта. После этого можно обновить сайт Drupal 7.x на другой релиз версии 7.x.
- Загрузите последнюю версию Drupal и распакуйте ее содержимое.
- Войдите в Drupal как пользователь с правами администратора и установите сайт в режим техобслуживания, выбрав Конфигурация > Администрирование > Развитие > Режим техобслуживания.
- Удалите из корневой директории Drupal все файлы, принадлежащие к старой версии, кроме файлов sites/ и profiles/.
- Скопируйте новые файлы, загруженные с сайта Drupal, обратно в корневой каталог Drupal.
- Запустите скрипт update.php, чтобы перенастроить базу данных по domain.name/drupal/update.php.
- Убедитесь, что все прошло хорошо, войдя в журнал и проверив Администрирование > Отчеты > Статус.
- Выключите режим техобслуживания.