11 августа 2009
Создание demo-сайта на Joomla 1.5, который обновляется каждый час
Предположим у вас есть продукт, который нужно показать другим да не просто показать, а дать именно пощупать. Щупать будут люди разные: нормальные, любопытные и уебаны плохие. Конечно можно просто поместить demo-пользователя в группы «Manager», тем самым запретив ему доступ к глобальной конфигурации и установке/удаления расширений, однако это не решит проблему контента содержащегося в вашем продукте, который следопыты будут щупать с распростёртыми руками: редактировать, удалять, создавать свой. Конечно все эти действия испортят внешний вид продукта. Закрыть доступ к контенту — закрыть доступ к продукту! Выход есть: периодическое обновление БД через определённые промежутки времени.
И так приступим:
1) Создадим субдомен, например demo.domain.ru;
2) Установим Joomla на субдомен;
3) Настроим наше demo-расширение, которые будим показывать всему миру;
4) Создадим нового пользователя и присвоим ему группу «Manager»;
5) Для безопасности в глобальный конфигурации отключим ftp-режим.
Теперь на помощь приходить великий и могучий cron, который и будет выполнять всю грязную работёнку: каждый час удалять все таблицы БД на demo-сайте и создавать новые из бэкапа, а также чистить каталог с demo-сайтом и потом занова копировать оригинальные файлы, чтобы привести весь тот хаос на demo-сайте, оставленный после следопытов в начальное состояние.
Предположим что наш demo-сайт физически расположен в каталоге "/home/{user}/public_html/demo":
1) Создадим новый каталог "/home/{user}/demo.restorefrom". Не стоит создавать каталог «demo.restorefrom» в каталоге «public_html» тем самым открывая ему публичный доступ!
2) С помощью панели управлениях хостингом или SSH скопируем содержимое каталога "/home/{user}/public_html/demo" в "/home/{user}/demo.restorefrom/demo".
3) Через phpmyadmin сделаем полным дамп базы demo-сайта, назовём полученный файл «dump.sql» и положим в каталог "/home/{user}/demo.restorefrom".
4) Создадим shell скрипт restore.sh со следующим содержимым:
и загрузим его в "/home/{user}/demo.restorefrom"
5) Перейдём в панель управления хостингом и добавим задачу для cron:
а также выставим время выполнения каждый час: (0 * * * *)
Вот и всё! Не забудьте заменить пути на свои, также в файле restore.sh указать своё название БД, имя пользователя и пароль!
И так приступим:
1) Создадим субдомен, например demo.domain.ru;
2) Установим Joomla на субдомен;
3) Настроим наше demo-расширение, которые будим показывать всему миру;
4) Создадим нового пользователя и присвоим ему группу «Manager»;
5) Для безопасности в глобальный конфигурации отключим ftp-режим.
Теперь на помощь приходить великий и могучий cron, который и будет выполнять всю грязную работёнку: каждый час удалять все таблицы БД на demo-сайте и создавать новые из бэкапа, а также чистить каталог с demo-сайтом и потом занова копировать оригинальные файлы, чтобы привести весь тот хаос на demo-сайте, оставленный после следопытов в начальное состояние.
Предположим что наш demo-сайт физически расположен в каталоге "/home/{user}/public_html/demo":
1) Создадим новый каталог "/home/{user}/demo.restorefrom". Не стоит создавать каталог «demo.restorefrom» в каталоге «public_html» тем самым открывая ему публичный доступ!
2) С помощью панели управлениях хостингом или SSH скопируем содержимое каталога "/home/{user}/public_html/demo" в "/home/{user}/demo.restorefrom/demo".
3) Через phpmyadmin сделаем полным дамп базы demo-сайта, назовём полученный файл «dump.sql» и положим в каталог "/home/{user}/demo.restorefrom".
4) Создадим shell скрипт restore.sh со следующим содержимым:
#!/bin/sh
mysql -u{mysql username} -p{mysql password} {database name} < dump.sql
rm -rf /home/{user}/public_html/demo
mkdir /home/{user}/public_html/demo
cp demo/* /home/{user}/public_html/demo
и загрузим его в "/home/{user}/demo.restorefrom"
5) Перейдём в панель управления хостингом и добавим задачу для cron:
/bin/sh /home/{user}/demo.restorefrom/restore.sh
а также выставим время выполнения каждый час: (0 * * * *)
Вот и всё! Не забудьте заменить пути на свои, также в файле restore.sh указать своё название БД, имя пользователя и пароль!
- admincom
- 09 мая 2012, 11:50
- 0
Подскажите пожалуйста почему на joomla 2.5 не получается крон ругается и пишет:
No such file or directory
Хотя проделал всё по вашей статье.
No such file or directory
Хотя проделал всё по вашей статье.
- admincom
- 09 мая 2012, 12:56
- 0
Приписываю вроде как в написанной статье, может как то не так я вот:
А в самом скрипте прописываю так:
Что не так?
/home/{логин}/demo.restorefrom/restore.sh
А в самом скрипте прописываю так:
#!/bin/sh
mysql -u{mysql юзер_БД} -p{mysql пароль} {database база_данных} < dump.sql
rm -rf /home/{логин}/public_html/demo
mkdir /home/{логин}/public_html/demo
cp demo/* /home/{логин}/public_html/demo
Что не так?
- alex
- 09 мая 2012, 13:11
- +1
файлы restore.sh и dump.sql точно рядом лежат?
точно к каталогу с установленной жумлой такой пусть: /home/{логин}/public_html/demo
посмотрите в configuration.php переменную $log_path
больше у меня идей нет. вроде должно работать
точно к каталогу с установленной жумлой такой пусть: /home/{логин}/public_html/demo
посмотрите в configuration.php переменную $log_path
больше у меня идей нет. вроде должно работать
- admincom
- 09 мая 2012, 13:15
- 0
Все точно так.
Мне не понятно фигурные скобки {} обязательно прописывать как в скрипте, так и в задачи для крон?
Мне не понятно фигурные скобки {} обязательно прописывать как в скрипте, так и в задачи для крон?
- alex
- 09 мая 2012, 13:23
- +1
не конечно. и в скрипте они не нужны!
везде вместо /home/{логин}/public_html/demo напишите то, что у вас в configuration.php переменной $log_path только удалите /logs
например у меня в configuration.php:
/home/p7837/www/http://d97805h8.beget.tech/logs
я удаляю /logs и получаю:
/home/p7837/www/http://d97805h8.beget.tech
и вот этот пусть пишу и в крон и в restore.sh
везде вместо /home/{логин}/public_html/demo напишите то, что у вас в configuration.php переменной $log_path только удалите /logs
например у меня в configuration.php:
/home/p7837/www/http://d97805h8.beget.tech/logs
я удаляю /logs и получаю:
/home/p7837/www/http://d97805h8.beget.tech
и вот этот пусть пишу и в крон и в restore.sh
- admincom
- 09 мая 2012, 16:39
- 0
Блин ни чего не получается, прописал без скобок, за то вместо No such file or directory пишет Permission denied Типа доступ запрещен, но к чему доступ то???, и ещё стало хуже папка с демо сайтом, то есть её садержимое исчезает и остается пустая всё удаляется хорошо что есть резервная копия в:
Побовал ставить на все каталоги в том числе и на сам скрипт с бекапом сайта права 777, но та же история! Уже мозг сломал, что за фигня...?
/home/user/demo.restorefrom/demo
если бы не она пришлось jooml(у) устанавливать по новой. Побовал ставить на все каталоги в том числе и на сам скрипт с бекапом сайта права 777, но та же история! Уже мозг сломал, что за фигня...?
- Genetics
- 09 октября 2012, 16:37
- +1
Спасибо, очень помогло (делал для Joomla 2.5), с некоторыми доработками.
1. При создании копии дампа базы данных нужно отметить флажок «Добавить выражение DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT», чтобы перед созданием таблиц, старые удалялись.
И в скрипте к копиям базы и файлам указывать полные пути:
1. При создании копии дампа базы данных нужно отметить флажок «Добавить выражение DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT», чтобы перед созданием таблиц, старые удалялись.
И в скрипте к копиям базы и файлам указывать полные пути:
#!/bin/sh
mysql -u{mysql username} -p{mysql password} {database name} < /home/{user}/demo.restorefrom/dump.sql
rm -rf /home/{user}/public_html/demo
mkdir /home/{user}/public_html/demo
cp -r /home/{user}/demo.restorefrom/demo/* /home/{user}/public_html/demo
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Комментарии:10