Вы здесь

Обновление Drupal 6 и его модулей

Update

Вот и пришло время обновить сайт (Drupal и его модули). Делал я это в первый раз, но всё у меня получилось.

Прежде всего, я зашёл в интернет и решил почитать мнения умных людей. Кое-что я нашёл здесь: Ссылка 1, Ссылка 2, Ссылка 3.

Вроде как, неплохо. И я решил сделать почти так же, но чуть по-своему:

 
  1. Заходим на сайт.
  2. Регистрируемся как администратор (первый пользователь).
  3. Переводим сайт в режим обслуживания :

Управление => Настройка сайта => Сайт на обслуживании

Режим: Обслуживание

 

Для чего делаем: чтобы никто не мог нам помешать выполнить работы по обслуживанию.

 

  1. Сброс кэша :

Управление => Настройка сайта => Производительность

Действие: Очистить кэш данных

 

Для чего делаем: чтобы было меньше мусора в базе данных.

 

  1. Переходим на стандартную тему :

Управление => Конструкция сайта => Темы оформления

Тема: Garland

 

Для чего делаем:

Скорее всего, Вы используете или стандартную тему (отличную от темы по умолчанию) или свою тему (дополнительную или переделанную стандартную). Из-за этого, при обновлении могут возникнуть ошибки. Поэтому, лучше вернуть стандартную, а после обновления – вернуть свою любимую. J

 

  1. Рекомендуется отключить дополнительные и нестандартные модули.

Управление => Конструкция сайта => Модули

 

Примечание: я этого делать не стал, так как таких модулей много, а ошибки, которые могут возникнуть – легко «лечатся». Кстати, ошибки могут возникать и при обновлении стандартных модулей.

 

  1. Делаем копию базы данных.
  2. Делаем копию файлов сайта.

Для чего это делается: для возможности восстановления.

 

  1. Сделал локальную копию сервера, на которой стал тренироваться.
Локальный сервер у меня был сделан заранее. Как делать – описал Здесь. Почему я так поступил? Хотел прежде потренироваться и увидеть все проблемы-ошибки, которые могли возникнуть. Вторая причина – я обновлял не только модули, но и сам Drupal, т.е., практически всё… Поэтому, полученные каталоги я просто потом скопировал на свой сайт в интернет и, таким образом, почти не проиграл в скорости.

 Можно ли сразу всё делать на «живом» сайте, не тренируясь? Да, конечно, без

проблем. Всё зависит от Вашего мастерства.

 

На эту тему в и-нете есть много советов. Например, Этот. Здесь описан один из вариантов - сделать параллельную папку, в которой проделать все операции, а потом – подменить ею основную.

 

Моя критика этого варианта:

 

  • Могут возникнуть проблемы с местом на сайте (например, у меня мало места).

Поэтому лучше готовить файлы локально или сразу всё делать на сайте.

 

  • Так же, здесь рассказано, как хорошо менять в update.php строку $access_check = FALSE; на $access_check = TRUE;

Это плохое решение. Т.к., резко снижается безопасность операции. Правильное решение – перед проведением операция обслуживания зайти администратором (первым пользователем), как мы и сделали.

 

 

Вопросы, которые у Вас могут возникнуть:
  • Как зайти на сайт в режиме обслуживания
  • Как включить сайт после выполнения технического обслуживания
Я столкнулся со вторым вопросом, т.к. работал с локальной копией, и снял режим обслуживания (на локальном сайте) через выполнение SQL-запроса:

 

UPDATE variable SET value = 's:1:"0";' WHERE name= 'site_offline';
DELETE FROM cache WHERE cid = 'variables';

 

 

Теперь, что и куда я копировал:

 

  • В папке своего сайта удалил все директории, кроме «Sites» и все файлы, кроме «.htaccess» и «robots.txt».
Примечание: Если Вы используете какие-то специальные настроечные файлы в корне своего сайта – их тоже лучше оставить (иначе, их придётся потом пересоздать). Например, файлы подтверждения подлинности Google и Яндекс (google***.html, yandex***.html), иконки для iOS-устройств (apple-touch-icon***.png) и т.п.
 
  • После этого, в папку сайта распаковываем новый Drupal.
  • Если надо обновить ещё и модули, то заходим в папку «Sites/All/Modules», удаляем старый дополнительный модуль и на его место – распаковываем новый.
  • Т.к., я обновлял версию Drupal-а (при обновлении модулей – этого делать не надо), во избежание «эксцессов», в папке «Sites/Default» удалил файл «Settings.php» и пересоздал его заново копированием файла «Default.Settings.php» в «Settings.php». Но Вы можете этого не делать. Данная подмена приведёт к тому, что при обновлении Drupal начнёт свою установку, как в первый раз. А для этой установки Вам, естественно, надо знать имя базы данных, логин и пароль. Поэтому, если сомневаетесь – не делайте этого! Если Вы всё-таки это сделаете, то поменяйте права доступа к вновь созданному файлу «Settings.php» на «664», rw- rw- r--  (максимум – «775», rwx rwx r-x). Не волнуйтесь, если Вы забудете это сделать, то программа установки Drupal – скажет об этом. J

Вот и всё.

 

Следующий важный вопрос: права доступа к папкам и файлам.

В интернете полно «умников», которые рассказывают, что на всё должно стоять «777» (это атрибуты полного доступа), понятно на кого они работают. J Поставить права «777» на каталог files на shared-хостинге – равносильно тому, что вы, прогуливаясь по улице, раздаете дубликаты ключей от своей квартиры всем прохожим.

 

Как же правильно поступить? Хорошо написано Здесь:

 

For all directories and subdirectories in Drupal's root directory:
Symbolic notation: rwxr-xr-x
Octal numbers: 755
Which means:
  • Owner: read, write, execute
  • Group: read, execute
  • Others: read, execute
 
For all files inside Drupal's directories:
Symbolic notation: rw-r--r--
Octal numbers: 644
Which means:
  • Owner: read, write
  • Group: read
  • Others: read
 
For the "files" directory inside Drupal's "sites" directory:
Path: /sites/files or /sites/default/files
Symbolic notation: rwxrwxr-x
Octal numbers: 775
Which means:
  • Owner: read, write, execute
  • Group: read, write, execute
  • Others: read, execute
 
For all files inside Drupal's "files" directory and inside any subdirectories with the "files" directory:
Path: /sites/files/*.html and all other files in files directory
Path: /sites/files/subdirectories/*.html and all other files in subdirectories
Symbolic notation: rw-rw-r--
Octal numbers: 664
Which means:
  • Owner: read, write
  • Group: read, write
  • Others: read
 

Здесь я с «оратором» кое в чём не согласен. Напоминаю, файл «Sites/Default/Default.Settings.php» должен иметь «644». На папку (и вложенные в неё папки) «Sites/All/Files» - поставить «755» (и не больше), а на файлы – только «644».

 

Отдельная «история» с файлом «Sites/Default/Default.Settings.php». При инсталляции, права на него надо поднять до «664» (максимум до «775»), а после установки Drupal-а – опустить до «644» (как для «Default.Settings.php»). Но, в некоторых случаях, удаётся опустить и до «444» или даже до «440». Почему не всегда удаётся опустить права до этого уровня: «Мы, в mod_php, и web-сервер должны иметь права на чтение этого файла, иначе ваши PHP-скрипты не смогут подключаться к базе данных».

Причина мороки с этим файлом: в этом файле может храниться имя Вашей базы данных, имя и пароль к ней. J

 

Фу-х, кажется всё. Пошли дальше:

 

  1. Выполняем обновление, набирая в интернет-проводнике (IE, Opera, FireFox или что там у Вас?) <имя сайта>/update.php
  2. Проходит обновление (или установка, если меняли файл «Setting.php»). Тут же показываются результаты или ошибки, если есть. Если всё делали правильно, то могут возникнуть ошибки только при обновлении модулей (помните, я не отключал модули – лень было). Записываем названия этих модулей.
Почему могли возникнуть ошибки по этим модулям? Многие «умники» объясняют это тем, что при обновлении к сайту обращались другие пользователи. Это глупо, мы же поставили сайт на обслуживание. А если Вы этого не сделали (или уже успели отменить), то это Ваши проблемы.
 
Ошибки могут возникнуть из-за кардинальных изменений в самих модулях. Чтобы в этом убедиться, достаточно почитать, что написано: обычно пишется, что не могут выполниться какие-то SQL-запросы к базе из-за отсутствия-присутствия некоторых таблиц, полей в них, несоответствия типов данных в этих полях.
 
Что делать, если возникли такие ошибки при обновлении модулей? Очень просто:
  • Как и предлагает программа обновления, перейти в управление.
  • Зайти в модули и снять «галочки» напротив тех, которые не смогли обновиться.
  • Потом, зайти в каталог сайта и удалить эти модули физически.
  • Снова выполнить обновление (<имя сайта>/update.php).
Примечание: некоторые говорят, что этого делать не обязательно. А я считаю, что надо – это приведёт к тому, что информация о сбойном модуле в базе данных вытрется.
 
  • После этого, распаковываем новый правильный модуль.
  • Снова выполняем обновление (ошибок быть не должно!).
  • Если всё хорошо – заходим в управление модулей и снова его включаем (ставим напротив него «галочку»).

 

  1. Возвращаем ранее отключенные модули, если Вы что-то отключали.
  2. Возвращаем родную тему сайта.
  3. Выполняем проверку оставшихся ошибок и исправляем их :

Управление => Отчёты => Отчёт о состоянии

 

  1. Выполняем проверку обновлений (вдруг что-то не так стало или появилось ещё какое-то обновление) :

Управление => Отчёты => Доступные обновления

 

  1. Делаем копию базы и сайта после обновления. Это на любителя. J
  2. Снимаем сайт с обслуживания :

Управление => Настройка сайта => Сайт на обслуживании

Режим: Онлайн

 

  1. Проверяем сайт на работоспособность.

 

Всё. Наслаждаемся.

 

22.12.2011 г. Карандаш

 

 

 

P.S.: По поводу настроек прав для работы PHP скриптов можно прочесть Здесь:

 

Какие права доступа должны быть установлены для PHP скриптов?

Для PHP-скриптов по умолчанию используются следующие комбинации прав доступа (право на запись имеет только владелец): 755 на папки и 644 на файлы.

 

Настройки прав доступа будут зависеть от режима работы PHP. Если PHP работает как модуль Apache, то для определенных директорий и файлов часто требуется установка прав на запись «для всех», так как интерпретатор работает как часть веб-сервера, от имени apache. Обычно подробности настройки прав доступа описаны в сопутствующей скрипту документации.

 

Если PHP работает как CGI, то достаточно будет прав 755 на папки и 644 на файлы. Права на запись для всех не нужны, и могут приводить к ошибкам, поскольку PHP выполняется от имени пользователя.

 

В каком режиме работает PHP?

Для выяснения этого вопроса (PHP установлен как модуль Apache или CGI) – обращайтесь к справочным материалам вашего хостинг-провайдера.

 

В чем ключевые отличия режимов работы PHP как модуля Apache от CGI-режима?

Основное различие состоит в том, что в режиме работы PHP как модуля Apache интерпретатор PHP работает как часть веб-сервера Apache, для всех пользователей одновременно. Соответственно, скрипты выполняются от имени unix-пользователя apache. Это означает, что владельцем файлов, создаваемых скриптами, будет apache, что в ряде случаев может потребовать сброса владельца для файлов и папок, а также корректировки прав доступа, установки прав на запись для всех (777 и 666), что может быть небезопасно.

 

Если же PHP работает как CGI, то интерпретатор запускается для каждого пользователя как отдельный процесс, скрипты выполняются от имени unix-пользователя, что исключает проблемы, связанные с правами доступа.

 

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

 

 
 
P.S.: 28.01.2014 г.
      С выходом версии Drupal 6.29 появился бюллетень безопасности https://drupal.org/SA-CORE-2013-003. Смысл его прост: после обновления, Drupal будет предупреждать о слабости защиты в файловой системе, что рекомендуется исправить с помощью настроек в файлах .htaccess (в «sites\default\files», «var\www\<имя сайта>\tmp» и в Ваших личных директориях, созданных для себя):
 
The recommended .htaccess file contents are as follows.
 
For Drupal 6:
# Turn off all options we don't need.
Options None
Options +FollowSymLinks

# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>

# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>
# PHP 4, Apache 1.
<IfModule mod_php4.c>
  php_flag engine off
</IfModule>
# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
  php_flag engine off
</IfModule>

 
For Drupal 7:
# Turn off all options we don't need.
Options None
Options +FollowSymLinks

# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>

# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>

 
Additionally, the .htaccess of the temporary files directory and private files directory (if used) should include this command:
Deny from all
 
Последнее (Deny from all) – можно писать только, если вы не хотите показывать эти файлы никому (кроме себя). Т.е., касается только Ваших собственных специальных директорий.
 
 
P.S.: 19.10.2014 г.
      С момента выхода этой записи в блоге, часть ссылок из неё уже «умерло». Поэтому, позволю реанимировать часть ответов на вопросы, которые нашёл на сайте http://drupalcookbook.ru без прямых ссылок (их уже нет) и авторства (готов добавить при получении подтверждения).
 
Как зайти на сайт в режиме обслуживания
 
Откройте в браузере один из адресов:
<имя вашего сайта>/?q=user (если Clear URLs выключены)
<имя вашего сайта>/user       (если Clear URLs работают)
 
где user – имя вашего пользователя, например «admin»
 
Может так случиться, что сайт вас всё равно не пустил. Что может быть?
Если вы представились пользователем, который не имеет права на «Управление настройками сайта» («administer site configuration»), то вы будете оставаться этим пользователем, пока не очистите cookies браузера. Поэтому, просто удалите cookies для сайта и откройте одну из ссылок, которые приведены выше снова. Как вариант, если не хотите чистить – использовать другой браузер (у которого чистые «куки»).
 
Как включить сайт после выполнения технических работ
 
В состоянии «Обслуживание» доступ к сайту имеют только пользователи с правами «Управление настройками сайта». Все остальные посетители – увидят сообщение о перерыве в работе сайта, которое можно настроить. Зарегистрированные пользователи могут входить на отключенный сайт через страницу входа (<имя вашего сайта>/user).
 
Отключить режим обслуживания можно 3-мя способами:
  1. Включить сайт через веб-интерфейс
  2. Через файл settings.php
  3. С помощью SQL-запроса
 
Первый вариант (стандартный).
Открыть страницу admin/settings/site-maintenance (что соответствует пунктам меню: Управление => Настройка сайта => Сайт на обслуживании). Выбрать пункт «Работа» и сохранить изменения.
 
Второй вариант (через файл settings.php).
Открыть файл settings.php. Снять комментарий с переменной $conf и дописать элемент массива 'site_offline'=>0
 
Третий (включить сайт с помощью SQL-запроса)
Выполнить SQL-запрос:
 
UPDATE variable SET value = 's:1:"0";' WHERE name= 'site_offline';
DELETE FROM cache WHERE cid = 'variables';
 
 
P.S.: 23.03.2015 г.
Для повышения безопасности рекомендую:
 
1.      При обновлении Drupal не забывать просматривать изменения в файлах «.htaccess» и «robots.txt». Всё-таки, разработчики иногда что-то там корректируют.
2.      В "корне" сайта удалять все Drupal-овские .txt-файлы (естественно, кроме «robots.txt»). Это затруднит для "любопытных" сбор информации об установленных обновлениях. Да и сайт будет занимать меньше места.
 
 
P.S.: 06.03.2016 г.
Drupal 6.38 – официальная последняя версия в линейке Drupal 6.
Таким образом, это последнее дополнение к этой заметке.
 

Комментарии

Как включить rss канал ?

         Вообще-то, Ваш вопрос не по теме заметки. Но отвечу.
 
   Если имеется в виду, как сделать RSS-ленту на своём сайте, то способов несколько:
  • Если у Вас Drupal, то это делается в настройках представлений
  • Если не Drupal, то можно попробовать так, как описано здесь (но я так не делал)
  • Или поискать другие варианты
   Если имеется в виду, как подписаться на RSS этого сайта, то сделать это очень просто:
если в верху странички (в правом верхнем угле) есть значок RSS - нажимаете на него.
Появляется лента. Вверху RSS-ленты есть текст "Подписаться на этот веб-канал".
Нажимаете на него и подписываетесь. :))

Очень понравился ваш ресурс. Просто отличное место. Спасибо Администрации останусь тут на долго)
 
Сабж может и не к месту но все же кто что думает? У кого какие предпочтения и т.д.?

Данный вопрос находится вне темы обновления Drupal.
 
К сожалению, форума у нас нет, а в комментариях off topic - недопустим.
Просьба не допускать подобные комментарии и не задавать вопросы не по теме.

Привет покажите пожалуйста где на тут на сате находиться обратная связь. Хотим поговорить с Вами что бы стать Вашими партнерами.

Смотрите внимательнее, контактная информация указана в конце страницы.
Писать на почтовый адрес: info@mustang-soft.com
 
С уважением, Администрация.
 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer