Об ИТ из Канады

Блог Михаила Флёнова - программист, блогер, автор нескольких скандальных книг какими-то глазами...
Миграция с Windows на Linux хостинг - Статья : блог Михаила Флёнова

Миграция с Windows на Linux хостинг

Недавно я писал о том, что начинаю миграцию своих сайтов с Windows хостинга на nix. Возможно я не буду переводить их все, но один точно хотелось перевести, что я уже практически полностью сделал и сегодня решил рассказать, как все происходило. 

Первое, что нужно было сделать - сохранить текущие URL. У сайта уже была небольшая ссылолчная масса и нужно было сохранить ссылки, чтобы они оставались корректными. Это наверно самая постая проблема для PHP, потому что php код можно писать в любых файлах, а просто нужно указать серверу Apache, что эти файлы нужно выполнять как исполняемые. В моем случае я писал весь код в файлах aspx, а в .htaccess файл я просто добавил следующую строку: 

AddType application/x-httpd-php .aspx

Теперь нужно было в редакторе кода добавить aspx файлы так, чтобы при работе с ним использовалась подсветка синтаксиса PHP. Я для работы с кодом сейчас использую NetBeans и в нем в настройках эта проблема решается очень даже просто. 

Сохранив файлы я скопировал структуру базы данных из SQL Server в MySql. Можно было написать скрипит, который сформировал бы SQL для создания всех таблиц за меня, но я решил сделать эту миграцию вручную. В принципе, структура базы у меня была хорошая и использовалось всего штук 7 таблиц, я просто хотел переименовать некоторые поля, убрать пару не используемых и добавить несколько новых. Ручная миграция тут не заняла много времени. 

Следующее, что нужно было скопировать, сами данные базы. Чтобы перенести данные, при ограниченном доступе к базе данных и возможностям по использованию утилит, я решил просто написать все запросом. Я на SQL написал примерно такие запросы:

 

Select 'insert into tablename (column1, column2) values(''' + 

   TableColumn1 +''' , ''' + TableColumn1 +''');' 

From Table

 

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

Возможная проблема здесь - поле в SQL базе может содержать одинарные кавычки и тогда это может поломать запрос. Проблема легко решается с помощью replace, только это может выглядеть ужасно. Я решил сделать немного по другому в тех случаях, когда нужно было исправлять кавычки:

 

Select 'insert into tablename (column1, column2) values(''' , 

   TableColumn1 , ''' , ''' , TableColumn1 , ''');' 

From Table

 

Этот запрос возвращает SQL в виде нескольких колонок, а не в виде одной. Теперь помещаем запрос в Excel и в нем поиском заменой фиксим апострофы в той колонке, которой нужно. 

В принципе, вот так вот без дополнительных утилит и с небольшими усилиями можно сконвертировать базу данных MS Sql Server в MySQL. Дешево и работает. Я бы даже сказал - бесплатно и работает. 

Я даже не знаю, есть ли готовые утилиты, которые позволяют конвертировать SQL Server базу в MySQL, я просто даже не искал. Уверен что-то существует. Мне просто даже не хотелось ничего искать ради одноразового проекта. Я же не собираюсь конвертировать базы данных каждый день. А этот простой метод позволит конвертировать любую базу практически в любую. 

Ну а дальше просто начинаем писать код на PHP и сайт практически сконвертирован с ASP.NET на PHP. Самое главное, что я сохранил старые URL и поисковые системы не были шокированы лишней сменой и все ссылки, которые уже существуют в сети остались 100% рабочими без лишних редиректов. 


Внимание!!! Если ты копируешь эту статью себе на сайт, то оставляй ссылку непосредственно на эту страницу. Спасибо за понимание

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Внимание!

А ты уже читал мою последнюю книгу о больших сайтах и приложениях? Узнай, что это такое здесь

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповидания на русском или английском языке.

Пишите мне