Перенос сайта на WordPress на новый сервер
Дата: 25 марта 2009;
Автор: Николай
Метки: C++, WordPress;
Разделы: WordPress
Один из моих сайтов хостится на зарубежном сервере, а 99% посетителей из Украины и России. В свое время зарубежный сервер был выбран за дешевизну. Аналогичные условия размещения сайта в Украине стоили неоправданно дорого. Но однажды я решил перенести сайт в Украину, чтобы увеличить скорость доступа к нему. Еще одна причина: многие интернет-провайдеры Украины тарифицируют украинский трафик по меньшим расценкам, чем зарубежный — это могло помочь немного сэкономить посетителям сайта.
Проблемы начались, когда я перенес сайт, работающий на WordPress. На первый взгляд все показалось гладко, но изображения, добавленные с помощью WordPress, просто не отображались! Причина оказалась весьма банальна: WordPress хранит пути к изображениям не относительно своего каталога установки, а абсолютно, с корня сервера.
Казалось бы, достаточно просто сделать замену старого пути на новый и проблема решена. Но здесь нас опять ждет засада. При сериализации данных для хранения в MySQL, их формат определяется следующим образом: Тип:Размер:Значение. Это верно для строк и массивов, например. Для численных данных размер не указывается. Как вы уже догадались, изменяя значение,— нужно изменить и размер. Т.е. простая текстовая замена не годится.
Эта проблема также описана на форуме поддержки WordPress.
Для решения этой проблемы решено было сделать «на коленке» консольную программку, которая бы кроме изменения значения, меняла бы еще и размер (длину) текстовых данных. Что и было сделано. Для моих целей утилита отработала корректно, сайт можно было переносить без потери функциональности. Например, следующая команда
replace_wpdb.exe «src_file.sql» «/home/user/public_html» «/home/another_user/public_html«
преобразует такую строку
s:90:»Папки успешно удалены: /home/user/public_html/g2data_qwrD3/cache/entity»;
в такую:
s:98:»Папки успешно удалены: /home/another_user/public_html/g2data_qwrD3/cache/entity»;
Сама утилита написана не оптимально по принципу «лишь бы работало». Кому понадобиться проделать подобную операцию — могут смело использовать ее. Думаю, не стоит говорить, что я ни за что не отвечаю и все на вашей ответственности. Желающие оптимизировать или приспособить утилиту для своих нужд, могут это сделать — исходный код можно использовать и модифицировать без каких-либо ограничений.
Использование утилиты: replace_wpdb.exe «src_file» «old_path» «new_path«, где
src_file — путь к файлу дампа базы данных WordPress
old_path — старый путь, или его часть, необходимый заменить
new_path — новый путь, заменяет old_path
Если при запуске утилиты вы получите ошибку — установите Microsoft Visual C++ 2008 Redistributable Package (x86 или x64), или просто скомпилируйте исходный код.
Утилита для замены путей — исполняемый файл (7,6 КБ, 54 скачиваний)
Утилита для замены путей — исходный код на С++ (1,2 КБ, 49 скачиваний)
Утилита для замены путей — проект Visual Studio 2008 (2,9 КБ, 38 скачиваний)

Последние комментарии