Перейти к содержимому

Как обновить drupal 7 вручную

  • автор:

Access to this page has been denied.

You have been blocked because we believe you are using automation tools to browse the website.

This may happen as a result of the following:

  • Javascript is disabled or blocked by an extension (ad blockers for example)
  • Your browser does not support cookies

If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.

Reference ID: #a8968eff-86f4-11ee-9f33-879bb5fdfe76

Powered by PerimeterX , Inc.

Обновление ядра Drupal вручную

Если это еще не сделано, рекомендуется прочитать это введение, в котором кратко изложены все варианты, которые вы можете выбрать при обновлении Drupal 8.

PS! Эта процедура обновления также описана в руководстве пользователя.

Если вы установили какие-либо дополнительные модули со сторонними зависимостями с помощью Composer, вам нужно использовать другие параметры обновления, поскольку эти инструкции перезапишут каталог vendor/.

Обновление ядра Drupal 8

Шаги по обновлению ядра Drupal 8 с помощью ручной установки и командной строки (оболочки):

1. Сделайте резервную копию ваших файлов и базы данных. Полная резервная копия позволяет легко вернуться к предыдущей версии в случае сбоя обновления.

По желанию, если вы сделали ручные изменения в файлах, таких как .htaccess, composer.json или robots.txt, скопируйте их куда-нибудь, что легко найти. Потому что после того, как вы установили новое ядро Drupal, вам нужно будет повторно применить изменения. Например, Acquia Dev Desktop помещает файл .htaccess в каталог верхнего уровня, и без него будет работать только домашняя страница на вашем сайте.

Всегда возвращайтесь к резервной копии, если вы получаете фатальную ошибку в процессе обновления.

2. Используя Drupal, войдите под любым пользователем с правами «Администрирование обновлений программного обеспечения».

3. Используя Drupal, переведите свой сайт в режим обслуживания. Для этого:

— Перейдите через интерфейс администратора Administration > Configuration > Development > Maintenance mode.

— Установите флажок «Put site into maintenance mode».

— Нажмите «Сохранить конфигурацию (Save configuration)».

4. Выберите один из следующих двух вариантов, чтобы удалить файлы в каталоге верхнего уровня, а также в каталогах «core» и «vendor», оставив позади каталоги «modules», «profile», «sites», «themes»:

Использование оболочки

1. Перейдите в вашу установку Drupal.

cd /path/to/your/drupal/directory

2. Удалите каталоги ‘core’ и ‘vendor’

rm -rf core vendor

3. Удалите все файлы в каталоге верхнего уровня.

rm -f *.* .[a-z]*

Использование FTP-клиента

1. Перейдите в каталог Drupal.
2. Выберите все файлы в каталоге верхнего уровня (также скрытые файлы, начинающиеся с точки), а также каталоги «core» и «vendor» и удалите их. Не удаляйте каталоги ‘modules’, ‘profiles’, ‘sites’, and ‘themes’.

5. По желанию иногда обновление включает в себя изменения в файле default.settings.php. Это будет отмечено в примечаниях к выпуску. Вы можете найти примечания к выпуску для вашей версии на https://www.drupal.org/project/drupal. Внизу страницы проекта в разделе «Downloads» используйте ссылку для вашей версии Drupal для просмотра заметок о выпуске. Если вашей версии нет в списке, воспользуйтесь ссылкой «Просмотреть все выпуски». На этой странице вы можете прокрутить вниз или использовать фильтр, чтобы найти свою версию и примечания к выпуску. Если обновление содержит изменения в файле default.settings.php, выполните следующие действия.

  • Скопируйте пользовательские и специфичные для сайта записи из резервной копии, которую вы сделали, в новый файл settings.php. Вам определенно понадобятся строки, предоставляющие информацию о базе данных, и вы также захотите скопировать любые другие настройки, которые вы добавили.
  • Сделайте копию нового файла default.settings.php и назовите копию settings.php (перезаписав ваш предыдущий файл settings.php).
  • Сделайте резервную копию вашего файла settings.php с другим именем.
  • Найдите файл settings.php в каталоге /sites/* directory. (Обычно сайты / по умолчанию.)

6. Выберите один из следующих двух вариантов, чтобы получить новые файлы в каталог верхнего уровня и каталоги «core» и «vendor»:

Использование оболочки

1. В типичной командной строке Unix / Linux используйте следующие команды для загрузки и извлечения:

wget https://ftp.drupal.org/files/projects/drupal-x.y.z.tar.gz tar zxf drupal-x.y.z.tar.gz

2. Эта команда создала новый каталог drupal-x.y.z /, содержащий все файлы и каталоги Drupal. Войдите в новый каталог и скопируйте каталог «core» и «vendor», а также файлы из каталога верхнего уровня в каталог установки Drupal:

cd drupal-x.y.z cp -R core vendor /path/to/your/drupal/directory cp *.* .[a-z]* /path/to/your/drupal/directory

Использование браузера и FTP-клиента

  • Загрузите последнюю версию Drupal 8.x.x с веб-сайта https://www.drupal.org/download в каталог, находящийся за пределами вашего webroot.
  • Распакуйте архив.
  • Используйте FTP-клиент, чтобы загрузить каталоги «core» и «vendor», а также файлы из каталога верхнего уровня в каталог Drupal.

7. При необходимости повторно примените любые изменения вручную к таким файлам, как .htaccess, composer.json или robots.txt.

8. Используя ваш браузер, запустите update.php, посетив http://www.example.com/update.php (заменив www.example.com на ваше доменное имя). Это обновит основные таблицы базы данных.

По желанию, если вы не вошли в систему как пользователь с разрешением «Администрирование обновлений программного обеспечения» или с учетной записью обслуживания сайта (созданной во время установки), вы не сможете получить доступ к update.php. Вот шаги, чтобы обойти это ограничение:

— Откройте файл settings.php с помощью текстового редактора.
— Найти эту строку

$settings['update_free_access'] = FALSE;

— Измените значение FALSE на TRUE:

$ settings ['update_free_access'] = TRUE;

— Посетите страницу /update.php еще раз.
— После того, как вы выполнили все описанные выше шаги, для безопасности важно изменить настройку обратно на FALSE.

9. Используя браузер, войдите в систему администратора Drupal и выберите «Администрирование»> «Отчеты»> «Отчет о состоянии» (Administration > Reports > Status report). Убедитесь, что все работает как положено.

10. По-прежнему используя браузер, войдите в систему администратора Drupal и выберите Administration > Configuration > Development > Maintenance mode. Снимите флажок «Put site into maintenance mode» и нажмите кнопку «Сохранить».

11. После обновления удалите версию Drupal, которую вы скачали и распаковали ранее:

rm drupal-x.y.z.tar.gz rm -rf drupal-x.y.z/

12. Выполнено. Вы успешно обновили ядро Drupal 8 с помощью ручной установки и оболочки / браузера. 🙂

Drupal 7 для начинающих: Обновления ядра Drupal.

За то время пока я писал гайды, ядро Drupal было обновлено.

Было бы глупо не добавить ко всем гайдам еще и информацию по обновлению ядра системы. Поэтому если появилась необходимость обновить ядро, а вы не знаете как это делать, то этот гайд для вас.

Итак, появилось новое ядро. Модули обновляются автоматически при помощи встроенных средств и под силу даже ребенку. Ядро не может обновиться самостоятельно, это необходимо делать собственноручно. В этом нет ничего страшного, если подходить к делу с полной серьезностью, особенно если это продакшен.

Что же делать? Обновляться, причем чем скорее после релиза новой версии, тем лучше. Особенно для обновлений с пометкой «Не безопасно!», как на скриншоте выше.

Погнали. Для начала качаем свежую версию друпала. После этого делаем следующие действия:

Что удаляем

  1. Делаем ПОЛНЫЙ backup (резервную копию) вашего сайта. Это включает всю директорию сайта + база данных.
  2. На сайте заходим «Конфигурация > Режим обслуживания». Ставим галочку «Перевести сайт в режим обслуживания» и сохраняем настройки.
  3. Заходим в каталог сайта и удаляем все файлы и папки, за исключением: папки sites, файлов .htaccess и robots.txt
    ВНИМАНИЕ! Если вы используете дистрибутив (например Drupalife Store, Commerce Kickstart и подобные), папку profiles удалять нельзя. В таком случае надо произвести просто копирование с заменой на более новые файлы.
  4. Извлекаем из архива (новая версия скачанная с офф сайта) все кроме папки sites, а также файлов .htaccess и robots.txt
  5. Заходим по адресу site/**update.php **и жмем continue на всех шагах.
  6. Когда появится сообщение что все обновлено. Можете заходить на главную сайта и проверять его. Если все работает корректно, включите сайт обратно (пункт 2).

Теперь ядро будет самой последней версии.

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

На заметку

  1. Удалите и всегда удаляйте файлы из корня сайта: CHANGELOG.txt, COPYRIGHT.txt, INSTALL.txt, LICENSE.txt, MAINTAINERS.txt, README.txt — это самая первая дыра в безопасности сайта. На основе данных файлов можно определить версию системы, соответственно зная версию и её дыры, будет очень легко взломать сайт.
  2. Всегда обновляйте ядро. Да, лень, муторно, но безопасность превыше всего.
  3. Ничего не храните в ядре. Именно поэтому мы удалили все кроме папки sites и двух файлов. Те два файла могут быть у каждого свои, они не меняются из версии в версию, а у сайтов они подвергаются изменениям. Случайно заменив их, может всплыть проблема. Папку sites мы не трогали, так как в ней также не происходит абсолютно никаких изменений. Эта папка — хранилище файлов системы, ничего важного для обновления там нет. Все остальные папки и файлы могут быть подвержены обновлению. Я уже писал — ни в коем случае не трогайте файл и папки ядра. Все что надо храните в sites. И не редактируйте код ядра, для этого есть Drupal API.
  4. Если вы выключили по каким-то причинам модуль updates, то вы не узнаете о том что вышла новая версия ядра на своем сайте. В таком случае проверяйте наличие обновлений вручную.
  5. И самый банальный совет — не делайте апдейт без бэкапов.

Прикрепленные файлы
❤️ Do you like it? Share it with others.
← Предыдущий Установка Drush на Ubuntu & Использование Drush на Drupalhosting
Следующий → Drupal 7 для начинающих: Форма обратной связи.

Комментарии

plaon.com — обновление Друпал чт, 30/05/2013 — 12:30

Обновление до новой мажорной версии не совсем простая задача, особенно если используются самописные модули или модули отсутсвующие для новой версии. Эту работу лучше доверить сервису по обновлению версии друпал http://plaon.com

Однозначный спам, но пропущу 🙂 Пусть кому надо пользуются, хоть по теме.

Если кто не понимает, человек предлагает обновления мажорных версий сайта. То что описано мной в статье, это обновление минорных версий.

  • Мажорные: 1, 2, 3, 4, 5, 6, 7
  • Минорные: 7.1, 7.2, 7.3 и т.д.

У меня выдало ошибку, что с ней делать?

  • Warning: is_writable() [function.is-writable]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/v-8057/data:.) in system_requirements() (line 334 of /var/www/v-8057/data/www/peptidy.kz/modules/system/system.install).
  • Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/v-8057/data:.) in system_requirements() (line 335 of /var/www/v-8057/data/www/peptidy.kz/modules/system/system.install).
  • Warning: is_writable() [function.is-writable]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/v-8057/data:.) in system_requirements() (line 334 of /var/www/v-8057/data/www/peptidy.kz/modules/system/system.install).
  • Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/v-8057/data:.) in system_requirements() (line 335 of /var/www/v-8057/data/www/peptidy.kz/modules/system/system.install).

Заходим по адресу: admin/config/media/file-system

и в поле «Временная папка» пишем tmp без слешей.

Спасибо огромное! Сделал как сказали, так и не понял что же случилось, но большинство ошибок пропало!! :)))

У меня при обновлении ядра выскочида след. ошибка:

  • filter

На стороне сервера надо править конфиги PHP. Обратитесь в службу поддержку где вы хостите сайт.

Спасибо, грамотно написал. Сделал с первого раза, всё чётко прошло.

Я сделал как у вас написано)) Однако так и не понял, можно ли было как-то сохранить модули, которые я так старательно натсраивал??

а то ведь удалил все подряд, даже тему оформления((

Если вы делали как написано, вы не тронули НИЧЕГО из того что было наработано в процессе работы с друпалом (это папка /sites), базу вы не трогали. Соответственно инчего не должно было удалиться.

Если удалилось, значит кто-то делал вам или вы сами сайт не правильно, хранили все в ядре, что категорически запрещается, вот и результат.

Темболее если бы вы делали полностью как у меня написано, то в пункте 1 указана памятка о полном backup’е сайта.

Аффтор, спасибо за статью, счас попробую, а как может коснуться базы если ядро обновляем? Я это про копии или в друпале очень все интегрировано?

Про то что иногда с обновлениями приходят исправления\фиксы для базы данных. Перед обновлением модулей, которые используют базу данных, тоже не мешало бы делать бекап. Они пишут когда будет обноавлена база, когда в случае с ядром надо ручками запустить update.php и чтобы небыло: «Ой, да все полетело — ЁМАЁ», надо делать бекап базы. Лишним никогда не будет.

сейчас на техническом обслуживании. Скоро он заработает вновь. Благодарим вас за терпение. — вот такая это инструкция. обновлял 7.22 до 7.26

Niklan, а что насчет этих файлов: UPGRADE.txt, INSTALL.sqlite.txt, INSTALL.pgsql.txt, INSTALL.mysql.txt? Их можно (или нужно) удалять.

За что они отвечают?

UPGRADE.txt можно удалить, а те что с базами, в принципе тоже, если друпал не будет переустанавливаться, а так они лишь на этапе установки используются.

спасибо за гайд

Вот такой вопрос. У меня стоит кастомная сборка от OpenPublish с кастомным профилем. Если я убью все, кроме «сайтс», то вся эта кастомная версия полетит к.

Как обновлять ядро в таком случае?

Не удалять sites и profiles. Всё остальное под снос

Я удалила все в папке с названием моего сайта на хостинге (it-patrol) при новой загрузке ядра друпала и модулей сайт перестал работать, что делть?

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

Спасибо за статью, а я всегда обновлял, не удаляя, а просто заливая(с заменой) сверху, насколько это не правильно?

после обновления на сайте блога Сочи появилась ошибка в админке, следующего содержания:

Warning: is_writable(): open_basedir restriction in effect. File(/var/www/ws5/data/mod-tmp) is not within the allowed path(s): (/var/www/blogsochi/data:/var/www/ws5/data/mod-tmp:.) в функции system_requirements() (строка 362 в файле /var/www/blogsochi/data/www/blogsochi.info/modules/system/system.install).

Добрый день. На третьем шаге(Review updates) вылезла вот такая ошибка:

  • Notice: Undefined index: highlighted в функции include() (строка 126 в файле/home/host1329335/sportrock.ru/htdocs/www/modules/system/page.tpl.php).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Undefined index: sidebar_second в функции include() (строка 144в файле/home/host1329335/sportrock.ru/htdocs/www/modules/system/page.tpl.php).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Warning: file_get_contents(profiles/drupalife_store/themes/drupalife_store/js/script.js) [function.file-get-contents]: failed to open stream: No such file or directory в функции _locale_parse_js_file() (строка 1488 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/locale.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Undefined index: zen в функции drupal_theme_initialize() (строка98 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/theme.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции phptemplate_init()(строка 12 в файле/home/host1329335/sportrock.ru/htdocs/www/themes/engines/phptemplate/phptemplate.engine).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Notice: Trying to get property of non-object в функции drupal_alter()(строка 1080 в файле/home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
  • Подскажите пожалуйста решение.

Notice: Undefined index: highlighted в функции include() (строка 126 в файле /home/host1329335/sportrock.ru/htdocs/www/modules/system/page.tpl.php).
Notice: Undefined index: sidebar_second в функции include() (строка 144 в файле /home/host1329335/sportrock.ru/htdocs/www/modules/system/page.tpl.php).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Warning: file_get_contents(profiles/drupalife_store/themes/drupalife_store/js/script.js) [function.file-get-contents]: failed to open stream: No such file or directory в функции _locale_parse_js_file() (строка 1488 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/locale.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Undefined index: zen в функции drupal_theme_initialize() (строка 98 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/theme.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Trying to get property of non-object в функции phptemplate_init() (строка 12 в файле /home/host1329335/sportrock.ru/htdocs/www/themes/engines/phptemplate/phptemplate.engine).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
Notice: Trying to get property of non-object в функции drupal_alter() (строка 1080 в файле /home/host1329335/sportrock.ru/htdocs/www/includes/module.inc).
На третьем шаге вот такая ошибка. Помогите решить..

У меня точно такое же вылезло при установке подтемы, после того как я поставил основную тему все заработало. Значит и у тебя не хватает каких то файлов или модуля, от которого зависел другой

Огромное спасибо за пост. Произвел апдейт с 7.22 на 7.28 все прекрасно заработало, только выдает

Temporary files directoryNot fully protectedSee http://drupal.org/SA-CORE-2013-003 for information about the recommended .htaccess file which should be added to the /tmp/ugprestige/data/mod-tmp directory to help protect against arbitrary code execution.

не могу понять, .htaccess надо прописать по адоесу /tmp/ugprestige/data/mod-tmp а адрес надо создать? В корне сайта?

Как обновить Drupal? Как обновить модуль Drupal?

Друпал постоянно изменяющаяся система, к ней постоянно выпускается обновление. И это совсем не значит, что Друпал плохо сделан и требуется исправлять ошибки. Нет, зачастую в новую версию или подверсию входят изменения функций API, которые расширяют возможности Друпала, редко бывают обновления безопасности. Следует постоянно поддерживать актуальную версию модулей и ядра Друпала. В этой статье мы рассмотрим как обновлять модули и сам Друпал.

Зайдите в список модулей, если у Вас присутствуют модули требующие обновления, то будет выведена такая вот надпись:

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

Нажмите «доступные обновления» и Вы перейдете к списку модулей, среди которых и те которые нужно обновить. Зеленым показаны модули с актуальной версией, желтым и красным показаны модули устаревших модулей:

Drupal обновление Advanced Forum

Перед тем как производить обновление необходимо сделать резервную копию сайта! О создание бэкапа сайта можно прочитать в этой статье (сделать ссылку на статью о бэкапе).

Вы можете пройти по ссылке «Примечание» и посмотреть какие поправки были внесены в модуль:

Drupal обновление модуля

Перед тем как скачать модуль и установить его, нужно выполнить следующие действия.

Алгоритм обновления модулей следующий:

1. Перевести сайт в режим обслуживания. Заходим через панель администрирования «Настройка сайта — Сайт на обслуживании». Выставляем режим обслуживания.

Drupal сайт на обслуживание

Теперь на сайт может попасть только администратор сайта. Для остальных вид сайта будет такой:

Drupal сайт на обслуживание

Для того чтобы войти на сайт нужно авторизоваться, дописав в URL /user.

2. Почистите кэш сайта. Этот пункт необязательный, но я его выполняю.

3. Теперь когда сайт находится в обслуживание давайте скачаем новую версию модуля, для этого можно нажать ссылку «скачать». Либо скачать модуль с сайта Drupal.org.

4. Нужно удалить папку с модулем из папки sites/all/modules.

5. Скопировать новую версию модуля.

6. Запустить файл update.php. Файл запускается дописываем в адресную строку /update.php

Drupal update

Теперь нужно нажать Continue и потом Update.

Все должно успешно обновиться, если произошли изменения в БД, то об этом будет выведено сообщение.

Drupal обновление базы данных

7. После обновление переставьте сайт с режима обслуживания в обычный режим.

Обновление Друпала

С обновление модулей мы разобрались, теперь давайте обновим и ядро.

Алгоритм обновления тот же. Но есть одно НО!

В папке sites лежат Ваши файлы, настройки и модули, их обновлять не надо. Если Вы обновляли файл .htaccess, то его тоже не нужно обновлять.

Скачайте новую версию друпала и замените все файлы, кроме папки sites и .htaccess.

Total Commander

После замены файлов запустите update.php.

Включите обычный режим работы сайта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *