Стоимость содержания сайта на ucoz растет (не хочется иметь на своем сайте левую рекламу), поэтому я решил сэкономить, переходом на другой хостинг и движок. Статья пока сырая т.к. спешу поделиться своим не сложным методом - у меня перенос статей с отладкой статей занял два вечера.
Основные критерии для решения задачи:
- Исходные коды движок сайта должен быть открытым и свободным(GPL) - так как бесплатными, но закрытыми системами я уже "сыт".
- Движок должен быть популярным у пользователей, хостинг провайдеров и активно развиваться.
- Хостинг провайдер должен поддерживать выбранный мной движок, бэкапы и предоставлять бесплатный и разумные платные тарифы.
- Процедура переноса не должна включать в себя программирования, денежных вложений и должны использоваться доступные инструменты.
В качестве движка был выбрана популярная и гибкая платформа WordPress.
Сначала решил перенести только модуль блог (разделы и статьи), потом подумаю о гостевой книге, пользователях и комментариях.
Этапы перехода:
- Сделал бакапы на ucoz и сохранил на локальный компьютер.
- Зарегистрировал бесплатный тарифный план у провайдера.
- Установил чистый Wordpress на сайте.
- Здесь получил описание структуры таблиц, которое не совсем совпадает с полученными мной файлами - пришлось добавить несколько новых полей.
- Загрузил в эти таблицы данные из файлов бэкапов с помощью функции импорта из CSV файлов У меня получилось таблицы TABLE 12 и TABLE 13
- Скопировал данные в таблицы wordpress. На данном этапе пришлось повозиться, т.к. требовалось установить связи между данными и разработать функции конвертации полей (c MySQL не очень знаком, но знание основ языка SQL сильно помогло). Внизу приведены мои скрипты SQL. Замечу, что я не стал пока заморачиваться тем, что адреса статей совпадали со старыми.
- Далее беру напильник и вручную допиливаю статьи блога и оформление.
Таким же макаром можно перенести остальные модули, но кому то придется и повозиться. Шаги 2-7 можно сделать у себя на домашнем компьютере, и потом спокойно выбирать хостинг провайдера и заниматься дизайном. Согласно иследованию, открытые системы на PHP более подвержены риску взлома, поэтому придется разработать более жесткую политику безопасности для сайта (политика доступа, обновления и т.п.).
Что сейчас? Пока продолжаю процедуру полного переноса, как все будет готово, можно будет:
- спокойно сменить хостера, так как Wordpress можно поднять практически везде.
- Куча бесплатных плюшек для сайта, ограничен только фантазией.
//Для удобства отладки переименовал поля таблиц
ALTER TABLE `TABLE 12` CHANGE `COL 1` `id` INT( 1 ) NULL DEFAULT NULL ;
ALTER TABLE `TABLE 12` CHANGE `COL 2` `position` INT( 1 ) NULL DEFAULT NULL ;
ALTER TABLE `TABLE 12` CHANGE `COL 3` `num_data` INT( 2 ) NULL DEFAULT NULL ;
ALTER TABLE `TABLE 12` CHANGE `COL 4` `name` VARCHAR( 12 ) CHARACTER SET utf8 COLLATE;
ALTER TABLE `TABLE 13` CHANGE `COL 1` `id` INT( 2 ) NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 2` `catID` INT( 1 ) NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 3` `year` INT( 4 ) NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 4` `month` INT( 1 ) NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 5` `day` INT( 2 ) NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 11` `author` VARCHAR( 6 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 12` `title` VARCHAR( 103 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
ALTER TABLE `TABLE 13` CHANGE `COL 13` `brief` VARCHAR( 1107 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 14` `message` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 29` `sbscr` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
ALTER TABLE `TABLE 13` CHANGE `COL 22` `tegs` VARCHAR( 87 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
//далее идет код импорта
//загружаем категории
delete from wp_terms;
INSERT INTO `wp_terms`(`term_id`, `name`, `slug`) select id, name, name from `TABLE 12`;
delete from wp_term_taxonomy;
INSERT INTO `wp_term_taxonomy`( `term_id`, `taxonomy`) select id, 'category' from `TABLE 12`
//загружаем материалы
delete from wp_posts;
INSERT INTO `wp_posts` ( `ID` , `post_author` , post_title, post_date, `post_content` , `post_status`,post_name )
SELECT id, 1, title, date( year *10000 + MONTH *100 + DAY ) , message, 'draft', `sbscr` FROM `TABLE 13`
//устанавливаем связь между постами и категориями
DELETE FROM `wp_term_relationships` ;
INSERT INTO `wp_term_relationships`(`object_id`, `term_taxonomy_id`)
SELECT b.id, term_taxonomy_id FROM `wp_term_taxonomy` as tt
left join `TABLE 13` as b on tt.term_id = b.catid
|