Как я переносил сайт с html на Joomla |
![]() |
Добавил(а) microsin | ||||||||||
Предварительно сайт на Joomla был подготовлен и тщательно протестирован на системе Denwer, туда перенесены руками все статьи старого html-сайта. Далее необходимо установить на сервер хостера новый протестированный сайт на Joomla, и так, чтобы в случае неудачи можно было быстро и безболезненно вернуть старую html-версию обратно. Рассмотрим процесс по шагам. 1. Сливаем все содержимое корня приватного ftp и архивируем. Для этого удобно использовать ftp-клиент Total Commander. 2. Подготавливаем 2 скрипта, один из которых перемещает старые файлы и папки в новое место, а другой - восстанавливает их первоначальное положение (чтобы потом при желании можно все было вернуть назад). Для этого я сделал следующее: - подключился по ftp Total Commander-ом, в корневой папке моей домашней директории создал папку scripts (она не видна пользователям, заходящим на сайт). В корневой папке, кроме только что созданной папки scripts, находится также и папка public_html, в которой на Agava полагается хранить файлы сайта. Другими словами, папка public_html является корневой для сайта (там находится стартовый файл index.html и все файлы и папки сайта). - подготовил поле для тестов - создал папку sour1 в папке public_html (тем же Total Commander-ом). В эту папку sour положил несколько файлов и создал несколько вложенных папок с файлами - это содержимое должно корректно переноситься в новое место и возвращаться обратно при работе скриптов. Создал также в корневом каталоге, где и папка sour, папку для месторасположения старых данных удаляемого сайта - oldsite. Записал в папку public_html тестовый файл dummy1.txt (он тоже должен переноситься скриптом). Итого, у меня получилась такая структура корневого каталога (некоторый вывод команды ls я опустил): $ ls -Fa log/ .. public_ftp/ тут находится корень анонимного ftp public_html/ тут находится корень публикуемого сайта (там я создал oldsite) scriptsfold/ место для скриптов переноса данных сайта tmp/ .. dummy.txt .. - создал два файла для скриптов remove_old_site.sh и restore_old_site.sh. - в файлы скриптов записал тест, проверяющий перемещение нужных мне данных: [Содержимое remove_old_site.sh] #!/bin/sh SOUR=public_html DEST=public_html/oldsite/ mv -v $SOUR/sour1/ $DEST cp $SOUR/dummy1.txt $DEST rm $SOUR/dummy1.txt [Содержимое restore_old_site.sh] #!/bin/sh SOUR=public_html/oldsite DEST=public_html/ mv -v $SOUR/sour1/ $DEST cp $SOUR/dummy1.txt $DEST rm $SOUR/dummy1.txt - перекопировал по ftp в папку scriptsfold два мои будущие скрипта remove_old_site.sh и restore_old_site.sh. - тем же Total Commander-ом добавил владельцу право на выполнение этих файлов (меню Файл\Изменить атрибуты...). Теперь мои файлы стали исполняемыми скриптами. - протестировал работу скриптов. Для этого зашел на BSD-шелл моего хостера по ssh и выполнил команды: $ scriptsfold/remove_old_site.sh $ scriptsfold/restore_old_site.sh Как и следовало ожидать, тестируемая папка sour и файл dummy.txt при запуске remove_old_site.sh перекачивались в папку oldsite (папка sour вместе со своим содержимым), а при запуске restore_old_site.sh перекачивались назад в папку public_html. 3. Теперь сделаем более удобный перенос сайта - нужно, чтобы копировались те файлы папки, которые есть в изначально подготовленных списках. В итоге это у меня вылилось в 5 файлов, которые я положил в папку scriptsfold:
Требования к файлам - они должны иметь unix-like строки (в конце строк должен быть только байт перевода строки символ LF == 0xA), и последняя строка в списках file_list.txt и folder_list.txt должна обязательно кончаться на перевод строки. 4. Удаляем старый сайт скриптом remove_old_site.sh, и переписываем туда инсталляцию с Denwer. 5. Импортируем базу данных MySQL (в командной строке FreeBSD хостера): $ mysql --user=hostinguserlogin --password=hostinguserpass -hlocalhost --execute="CREATE DATABASE jdatabase DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci" Или через панель управления Agava по ссылке https://panel33.agava.net/ добавляем новую базу данных, например jdatabase (окошко "База данных:", кнопка "Добавить БД"). Если указать имя jdatabase, то добавится база данных с именем hostinguserlogin_jdatabase (автоматически добавляется префикс их имени логина пользователя хостинга). 6. Создаем пользователя mysqluser и указываем ему пароль, например bla-bla-bla-mysqlpass. 7. Привязываем пользователя hostinguserlogin_mysqluser к базе данных hostinguserlogin_jdatabase (кнопка "Добавить пользователя в БД"). 8. Импортируем базу данных. Для этого копируем дамп базы данных dump.txt в каталог scriptsfold, и выполняем команду: $ mysql --user=hostinguserlogin_mysqluser --password=bla-bla-bla-mysqlpass -hlocalhost --default-character-set=cp1251 --character-sets-dir=/usr/local/share/mysql/charsets hostinguserlogin_jdatabase < scriptsfold/dump.txt Немного пояснений. Опция --character-sets-dir требует найти каталог с кодировками (charset). Этот каталог находим командой $ locate charsets и найденный путь, где есть кодировка cp1251.xml (/usr/local/share/mysql/charsets), подставляем в командную строку. Остальное по опциям все очевидно. 9. Правим конфиг Joomla (public_html/configuration.php): $mosConfig_absolute_path = '/home/hostinguserlogin/public_html'; $mosConfig_cachepath = '/home/hostinguserlogin/public_html/cache'; $mosConfig_db = 'hostinguserlogin_jdatabase'; $mosConfig_live_site = 'http://yourdomain.ru'; $mosConfig_password = 'bla-bla-bla-mysqlpass'; $mosConfig_user = 'hostinguserlogin_mysqluser'; 10. Меняем пароль админа: admin 11. Меняем пароль пользователя: user1 12. Защищаемся от уязвимостей. Меняем в файле globals.php define( 'RG_EMULATION', 1 ); на define( 'RG_EMULATION', 0); В файл .htaccess в начало добавляем строчку: php_value register_globals 0 В папку administrator записываем файл .htaccess нулевой длины, убеждаемся, что на него нет прав на запись у пользователей группы и других пользователей. Идеальный вариант - режим только для чтения для всех, в том числе и для владельца. 13. Делаем автопереадресацию со старых страниц сайта (когда он был на html) на новое содержимое сайта [1]. [Ссылки] |