Перенос с ucoz на wordpress

Ну что же, вот и случилось то, о чем я долго мечтал и думал: я перенес свой сайт с Ucoz на другой хостинг. Именно про сие действие я хотел бы написать в данной статье.

Переносим сайт с Ucoz на другой хостинг, на CMS WordPress

Начнем наверное с того, что подумаем о том, нужен ли вообще такой переход. В моем случае, а пациентом является сайт с онлайн кино amove.ru, переход был очень даже желателен. Во-первых, чисто денежный вопрос: 10 долларов за тарифный план со всеми возможностями, которые были нужны для сайта, плюс еще два доллара сверху за возможность использования php-скриптов. И за все это вы получаете по сути обычный shared-хостинг, на одном ip-адресе и на одном сервере котором расположены может даже несколько десятков сайтов. А так как каждый школьник и недоучка из-за отсутствия опыта и дружеских советов с различных форумов бежит запускать свой сайт на Ucoz, который в этом плане очень прост в использовании, то доверие у поисковых систем к вам из-за обилия диких соседей не будет слишком уж и большим. А что можно получить за те же 500-600 рублей? Пожалуйста — получи VPS с 1 ГБ ОЗУ, с 1-2 ядерным процессором, 1 ГБ на SWAP, 20-30 ГБ пространства на жестком диске, который может быть даже SSD, плюс 100 мбитный пропускной канал. Ну тут конечно как повезет, у каждого хостера различные параметры несколько отличаются, но в принципе за те же деньги можно получить куда более мощный сервер, причем что возможно более важно, выделенный сервер и выделенный ip-адрес.

Кроме всего этого у вас будет полный доступ к Вашему сайту, что сразу после перехода с Ucoz на другой хостинг будет казаться чем-то диким, ведь здесь вы сможете под себя настроить абсолютно все, начиная с операционной системы и веб-сервером и заканчивая обычными ковыряжками в конфигурационных файлах. Еще не стоит забывать, что Ucoz оставляет за собой полной право навсегда удалить ваш сайт, что в случае с онлайн-кинотеатр было несколько угрожающим и что заставляла делать бэкапы по мере возможности, которые так же ограничены политикой Ucoz. В общем хвалить VPS или VDS и опускать ниже плинтуса Ucoz можно довольно долго, но вы, наверное, уже пришли к этому выводу, раз загляну на данную страницу. И посему, начнем.

Как перенести сайт с Ucoz на WordPress

Идеи перенести сайт с Ucoz на другой хостинг всегда ассоциировались с желанием пересесть на DLE, но так как я решил перенести сайт своими руками, а не руками какого-то мутного прогера с очередного форума, то я остановился на WordPress, с которым я уже имел дело. WordPress, DLE, Joomla или какая-то другая CMS — неважно, так как сейчас вы сможете понять принцип переноса сайта на другую CMS, что, как мне кажется, более чем достаточно. А потом гугл-обучение вам в помощь.

Итак, процесс перенос сайта с Ucoz на другую CMS можно разделить на два больших этапа:

  • Перенос дизайна сайта.
  • Перенос записей(перенос базы данных сайта).

Если для первого пункта нам достаточно доступа к файловому менеджеру на Ucoz, то для второго необходим полный бэкап вашего сайта, который можно выполнить в админке и который после можно будет скачать себе на компьютер. Следует учесть тот момент, что Ucoz позволяет делать полные резервные копии только раз в семь дней и то с 00:00 до 9:00, чтобы не перегружать и того хиленькие сервера. Поэтому Вам необходимо заранее спланировать, чтобы в необходимый момент эта функция была активна, так как я советую первым делом полностью перенести дизайн сайта и только после этого заняться его заполнением. А лично у меня перенос дизайна сайта с ucoz на wordpress занял около 5 дней(учитывайте то, что это мой первый опыт) и продолжался последующие 5 дней с внесением небольших изменений. Скажу честно, перенос дизайна — дело довольно легкое, если ваш сайт не нагружен различного рода слайдерами, дополнительными интерактивными модулями и прочей радостью жизни. Вот тогда то и придется неплохо попариться с дополнительными плагинами для WordPress, которые придется намертво впаять в систему. Я где-то полтора дня потратил на поиск, установку и тестирование альтернативного слайдера и в итоге оставил тот, который был. (Слайдер был и остается на jquery и заработал я себе полтора дня активного знакомства с различными творениями различных программистов только потому, что не подключил один необходимый JavaScript файлик, из-за чего я сделал поспешный вывод, что ранее используемый слайдер не заработает на WordPress`е). Но, перейдем к делу….

Перенос дизайна сайта с Ucoz на WordPress

Если Вы собираетесь сами перенести дизайн, то вам необходимо понять, как строится ваша html страница на ucoz. Скорее всего сначала идет header(Глобальный блок Верхняя часть сайта), после чего идет какая-то страница из выбранного Вами модуля(будь то главная страница сайта, страница категорий или страница с основной записью сайта). Ну и завершает все это действие футер(Глобальный Блок Нижняя часть сайта). Ко всему этому в различных местах могут подключаться дополнительные блоки, будь то сайдбар или что-то другое, а еще вызовы информеров. Это необходимо понять, чтобы вы поняли, в каком порядке строится страница.

И вот вам та же схема на WordPress:

перенос сайта на wordpress

Грубо говоря вам только необходимо выставить соответствия и перенести код с одного блока ucoz, в соответствующий файл на wordpress. Но не стоит думать что это все так просто. Обычным переносом дело не закончится, ведь необходимо еще перенести все файлы, к которым система будет обращаться на новом хостинге, и, самое главное, переписать системные коды вызова определенных данных. Так, если на ucoz мы используем $ENTRY_TITLE$, то WordPress тайтл записи получает по команде

[code]<?php the_title(); ?>[/code]

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

[code]<?php get_header(); ?>
<?php get_footer();?>[/code]

Действуя таким образом можно достичь первых успехов: в случае если вы перенесли все файлы на новый хостинг, то страница может неплохо отразиться на экране. И по мере отрисовки страницы(поэтому желательно начинать с header`а), вы войдете во вкус и сможете переделать все остальные файлы. Если же у Вас все равно имеются некоторые проблемы, то почитайте статьи на просторах Интернета посвященные тому, как создать свою собственную тему или хотя бы свой собственный шаблон страницы.

Так же хотел бы порекомендовать для переноса дизайна использовать Denwer, с помощью которого Вы сможете установить WordPress на локальный компьютер. Это будет хорошим способом выйти из положения, если Вы до сих пор не уверены в своих силах и не хотите тратиться на хостинг, только чтобы понять, что Вы не сможете перенести сайт с Юкоза на Водпресс.

Перенос Базы данных с Ucoz на WordPress

Когда у Вас наконец-то будет готов дизайн вашего сайта на CMS WordPress или на любой другой системе управления сайтом, который вы выберете, настанет время переноса Базы данных сайта с Юкоза. Вот тут-то и наступает самая большая проблема всей этой затеи. Перенос базы данных сильно осложняется тем, что в Ucoz нет базы данных! Нет, она конечно же есть, если можно это так назвать. Но все ваши записи и все значения ваших дополнительных полях хранятся не в «нормальной» sql-базе, а в обычном .txt-файле. Ну по крайней мере именно в таком виде вы получите свои записи после того, как сделает полный бэкап сайта, скачаете его себе на компьютер и разархивируете. Все файлы так называемой базы данных находятся в одном из папок в корне извлеченного архива. Файлов несколько: какой-то отвечает за пользователей системы, что-то за комментарии, что-то за записи, что-то за страницы, за категории, за содержимое других модулей. Уверен, Вы легко найдете тот, который хранит самое главное — ваши записи. Открыв этот файл вы найдете ужас: все ваши записи вперемешку с данными дополнительных полей находятся в одном файле. Все упорядочивание заканчивается тем, что каждый отдельный самостоятельный элемент(текст записи, дата, какие-то поля, имя автора и так далее) отделен от другого вертикальной линией: |

Вот и все. И не нужно мечтать что вы просто перенесете базу данных на новый сервер(естественно и этот процесс сопровождается необходимыми правками и без программирования не проходит). Но тут дело куда сложнее. У меня каждая запись содержала в себе столько различных данных, что до следующей записи необходимо было пройти через 30-40-50 вертикальных палочек(не считал, глаза ахуевают). Вот тебе и задача для программиста: сначала самому не запутаться в этом шифре и написать бешеную программу по выдергиванию определенных данных между определенными линиями. Да идите вы нахуй!. Покричав немного и потолкавшись между этими «палками» и подумав о том, как бы так по легкому справиться со всем этим или с головой уйти в прописывание регулярных выражений(которые кстати отпали из-за того, что не все статьи из сайта имели определенные поля и, как мне показалось, именно показалось, потому что попробуйте сами не потеряться среди всего этого безобразия, количество ячеек, составленных из вертикальных палок для различных записей было различно). Закрыв подальше этот адский файл я решил спарсить все данные из каждой статьи прямиком из сайта, благо программа умеет тащить HTML код.

Давайте сейчас немного отойдем в сторонку и поговорим о том, как все же передать данные сайта на Ucoz в базу данных WordPress. Так как обучающего мануала про то как перенести сайт, сидячий на Ucoz, на другой хостинг я не нашел, я шел вслепую. Только на одном сайте нашел приведенный код на PHP, который делает все это дело(по заверению автора), но в который я не сильно вникал из-за посредственных знаний PHP, которые неплохо укрепились после осуществленного переноса. Второй способом я видел использование SQL запросов, которые опять таки будут парсить данные из этого ужасного файла от юкоза, что не предполагала веселого развития событий. Остался способ, который я уже использовал в некоторых своих других программах: использование декстопной программы(для тех кто не знает, это любая программа рабочего стола, который имеет свой интерфейс). А это дает нам широкий возможности для выбора языка программирования, с помощью которого мы все это сделаем(если, конечно же, вы умеете программировать. Из всех языков программирования, с которыми я знаком и с помощью которых я уже умножал двойку на другую двойку, я выбрал свой любимый и самый хорошо изученный C#. А вот и план работ по переносу статей из Ucoz в базу данных SQL:

  1. По очереди просмотреть каждую страницу сайта.
  2. Из каждой страницы вытаскивать и запоминать данные, которые необходимо перенести.
  3. На выходе предоставить готовый SQL-запрос для вставки статьи в базу данных SQL.
  4. Используя такую прелесть как PHPMyAdmin выполнить к базе данных нового сайта SQL-запрос вставки всего того, что Вам дорого.

Рассмотрим каждый момент по порядку:

Парсим каждую страницу сайта

Юкоз предоставляет возможность использовать сразу нескольких модулей, каждый из которых будет содержать определенный тип записей. Идеальным случаем будет если вы использовали только один модуль и все статьи у вас однотипные. В таком случае парсить данные мы будем только один раз, для чего нам необходимо получить адреса всех страниц вашего сайта. Отлично для этих целей подойдет файл sitemap.xml(если его у вас нет, то лучше займитесь изучением основ SEO, что в продвижение сайта поможет больше, нежели перенос сайта на другой хостинг). Если у Вас только один модуль, то из всего sitemap`а вам необходимо будет отфильтровать только дополнительные страницы, возможно страницы категорий и прочий бред. Все это необходимо уместить в первый модуль программы(или отдельной программы), которая прочитает файл sitemap.xml, повыдергивает из него и предоставит на выводе, желательно в текстовый файл, с которого в дальнейшем будет удобно читать url страниц, url адреса всех страниц.

Парсим содержимое страницы

Теперь нам необходимо построчно считывать полученный файл и загружать html код страницы. Далее необходимо выдергивать весь полезный контент и, естественно, запоминать его. Возможно не весь контент отображается на странице и некоторые используются для внутренних целей. Тогда на помощь вам придет мета-тэги вида:

[code]<meta name="что придет на ум" content="содержимое вашего поля"/>[/code]

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

Очень важный момент для успешного прохождения двух первых пунктов. Настоятельно рекомендую прочитать статью Парсер, который проверяет изъято ли видео Вконтакте, которая описывает создание аналогичной программы и которая описывает тонкие моменты этого процесса, самой главной из которых является не зачастить с запросами страниц на многоуважаемый Юкоз, который в три счета может записать Ваш IP-адрес в числа потенциальных хакеров или их жертв, которые участвуют в DDOS-атаке этого великого хостинга. Наградой за это будет невозможность захода на свой любимый сайт с данного IP-адреса то ли до полуночи, то либо в течение еще 24 дней, то ли еще какая-то схема. Суть одна, оно Вам надо? Поэтому, используйте Thread.Sleep, ибо программа тоже должна спать.

Строим SQL-запрос вставки(INSERT TO)

До перехода на эту ступень, Вам необходимо полностью допилить Ваш дизайн и добавить одну запись на Ваш новый сайт. Эта запись должна быть в точности такой, какой вы хотите видеть и все ваши остальные записи. Выполнив это, необходимо залезть в PhpMyAdmin, открыв вашу базу данных, достучаться до базы wp_posts и посмотреть как выглядит ваша запись в базе данных. Далее во вкладке SQL данной таблицы вы можете нажать кнопку INSERT, которая автоматически заполнит шаблон команды, с помощью которой можно добавить статью на сайт. Все то же самое что вы сделали через интерфейс, можно сделать через SQL запрос. И именно этот SQL запрос нас интересует. Для людей обладающей логикой сразу станет понятно, в команде сначала перечисляют поля, которые необходимо заполнить, а после идут значения этих полей. Если первую половину шаблона вам трогать запрещается лично от меня, то вторую половину вам необходимо заполнить. Угадайте как? Нет, ни руками! Это должна уметь делать ваша программа, которая на втором этапе повыдергивала все значащие для вас данные из сайта, запомнила их и теперь вставила в строку, которую вы предварительно создали скопипастив любезно предоставленный PhpMyAdmin шаблон. Конечно же, программа должна вставлять спарсенные данные в соответствующие места. Чтобы не запутаться вам и понадобиться ранее руками добавленная статья, где с помощью обычного сопоставления вы легко сможете понять, что данное поле содержит какую-то определенную информацию. Например поле title в таблице SQL будет содержать название статьи. (Возможно я ошибаюсь и название поля звучит немного по-другому. К сожалению я не могу предоставить на суд общества шаблон, о котором идет речь, так как по PhpMyAdmin несколько обиделся на меня и не хочет открываться. В будущем, по решению данного недоразумения, я прибавлю шаблон INSERT в пост.)

Вот. И если коротко, то на третьем этапе программа выдаст в файл(на экран, да куда угодно, лишь бы было вам удобно) готовый запрос INSERT, скопировав который и вставив в поле для ввода SQL команд в PhpMyAdmin, ваш сайт пополниться еще одним материалом. Категорически рекомендую сначала отладить этот момент, чтобы SQL адекватно воспринимал ваши команды и чтобы в них не было ошибок. Парсить тысячи страница сайта, а потом узнать, что есть ошибка в коде — лучше застрелиться, потому что вы дебил нахуй так жить  я вас предупредил.

Update: В общем вот шаблон для добавления записи используя SQL-запрос:

[code]INSERT INTO `wp_posts`(`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11],[value-12],[value-13],[value-14],[value-15],[value-16],[value-17],[value-18],[value-19],[value-20],[value-21],[value-22],[value-23])[/code]

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

Заполнить базу данных сайта с помощью инструмента PhpMyAdmin

Этот пункт является последним и наиболее простым. На этом этапе мы просто должны вручную скопировать те SQL-запросы, которые нам подготовила наша программа, и вставить их в специальное поле PhpMyAdmin, которое находится во вкладке SQL, после чего необходимо выполнить этот запрос. Результат правильного выполненного запроса вы сможете увидеть на своем сайте, который за какие-то пару секунд может пополниться более чем на тысячи записей. Вот и все. Осталось наверное сказать о том, что возможно для переноса всех данных своих статей вам необходимо будет выполнять запросы не только к таблице wp_posts, но и к другим, например, к wp_postmeta, если вы будете использовать дополнительные поля, и к wp_comments, если вы будете переносить комментарии. А некоторые плагины могут создать и свои собственные таблицы. Поэтому то я и рекомендую вам сначала добавить одну или две тестовые записи и проверить, какие данные были вписаны в какие таблицы, исходя из чего и построить шаблонные запросы к базе данных.

Резюме по переносу сайта с хостинга и CMS от Ucoz на другой хостинг с CMS WordPress

Вот таков он, тернистый путь по переносу сайта с Юкоз на Вордпресс. Скажу честно, у меня, у человека без опыта какого-либо переноса сайта не то что с CMS на CMS, но и с хостинга на хостинг без смены системы управления сайтом, с начальными знаниями HTML, CSS и PHP на уровне внесения изменений в готовый шаблон и созданием несложных конструкций, с довольно неплохим уровнем владения C#(создание программы для переноса всех данных с сайта на сайт заняло у меня меньше всего времени) заняло около 6-7 дней кропотливой работы. При этом три дня из этого можно смело вычесть за мою банальную глупость при попытке перенести старый слайдер и последующим перебором около 10-15 любезно предложенных мне Яндексом слайдеров, которые либо отказывались работать, либо не подходили по другим причинам, а так же за попытки заставить работать на сайте хотя бы один плагин звездочки рейтинга статьи, которые отважны не хотели работать так как я этого хочу, либо откидывали копыта сразу же после того, как я внесу в их код необходимые мне изменения. И если не учесть эти обидные до слез моменты, то около двух дней я перетаскивал дизайн, один день ушел на программирование и добычу всех данных с сайта(из-за того, что между каждыми запросами я обычно ставлю 5 секунд таймаута, то программа про парсингу полутора тысяч страниц работала от двух то трех часов) и еще один день можно списать на время необходимое для полного обновления DNS записей вашего сайта, на протяжении которого можно навести необходимый порядок на новом сайте.

Вот и все что хотелось бы рассказать Вам про процесс переноса сайта на WordPress из Ucoz`а. Если кому-то нужна помощь в этом, пишите на email-адрес. Помочь не обещаю, но если сайт не сложнее того, который переносил я, могу и взяться. Всем удачи!