Инструкция по переносу CMS Magento с одного сервера на другой

Уровень детализации этой инструкции предполагает наличие у вебмастера базовых знаний по SSH, а также доступа по SSH к обоим серверам.

Обзор

Этапы переноса:

  1. Подготовка dump файла MySQL базы данных
  2. Архивация директорий media и theme
  3. Копирование файлов на сервер
  4. Установка Magento
  5. Импортирование dump файла в новую базу даных
  6. Размещение скопированных данных по директориям Magento

Старый сервер

Залогиньтесь на сервер, который содержит систему управления Magento, предназначенную к переносу. Перейдите в директорию, где установлен Magento. В данной инструкции далее будет использован путь:

  1. /home/username/public_html/

и директория public_html будет считаться корневым каталогом для вашего домена.

Для проверки создайте файл test.html в public_html, и проверьте его доступность из интернета:

  1. http://www.example.com/test.html

Перейдите в директорию, где установлена Magento, по команде:

  1. cd public_html

На уровень выше директории public_html создайте новую директорию backup, пользуясь командой:

  1. mkdir backup

MySQL Dump

Создание dump файла MySQL существующей базы данных:

  1. mysqldump -h DBHOST -u DBUSER -pDBPASS DBNAME > data.sql

Замените переменные соответствующими значениями:

  • DBHOST - имя хоста, обычно localhost,
  • DBUSER - имя пользователя с правами доступа к базе данных,
  • DBPASS - пароль пользователя,
  • DBNAME - название базы данных, которое использует Magento.

Внимание: Если вы используете MySQL 4.x, вам необходимо включить опцию :

  1. --default-character-set=utf8

Переместите файл data.sql в директорию backup, которую создали ранее:

  1. mv data.sql backup/

Директория Media

Сожмите данные директории media:

  1. tar -cvf media.tar media/*

Переместите полученный файл в директорию backup:

  1. mv media.tar backup/

Файлы тем (Theme)

Следующим шагом подготовьте для переноса содержание директорий app и skin:

  1. cd app/design/frontend/default/

Предполагается, что текущая тема содержится в директории mytheme (при необходимости замените на соответствующую).

Сожмите директорию:

  1. tar -cvf app.tar mytheme/

Переместите полученный файл в директорию backup:

  1. mv app.tar ../../../../backup/

Перейдите в директорию skin:

  1. cd ../../../../skin/frontend/default/

Сожмите директорию mytheme:

  1. tar -cvf skin.tar mytheme/

Переместите полученный файл в директорию backup:

  1. mv skin.tar ../../../backup/

Вернитесь на верхний уровень:

  1. cd ../../../

Файл Config

Файл содержит зашифрованные ключи, имя пользователя и пароль для доступа к базе данных. Если данные параметры серверов не совпадают, необходимо отредактировать файл local.xml.

Скопируйте файл:

  1. cp app/etc/local.xml backup/

На этом этапе все данные для переноса готовы.

Директория backup должна содержать:

  • local.xml
  • app.tar
  • data.sql
  • media.tar
  • skin.tar

Новый сервер

Перейдите в директорию public_html, в которой будет стоять Magento:

  1. cd public_html

Проверьте, может ли новый сервер запускать Magento, для этого создайте файл magento-check.php в директории public_html следующего содержания:

  1.  <?
  2.       extension_check(array(
  3.           'curl',
  4.           'dom',
  5.           'gd',
  6.           'hash',
  7.           'iconv',
  8.           'mcrypt',
  9.           'pcre',
  10.           'pdo',
  11.           'pdo_mysql',
  12.           'simplexml'
  13.       ));
  14.  
  15.       function extension_check($extensions) {
  16.           $fail = '';
  17.  
  18.           if(version_compare(phpversion(), '5.2.0', '<')) {
  19.               $fail .= '<li>PHP 5.2.0 (or greater)</li>';
  20.           }
  21.          
  22.           if(!ini_get('safe_mode')) {
  23.               if(preg_match('/[0-9].[0-9]+.[0-9]+/', shell_exec('mysql -V'), $version)) {
  24.                   if(version_compare($version[0], '4.1.20', '<')) {
  25.                       $fail .= '<li>MySQL 4.1.20 (or greater)</li>';
  26.                   }
  27.               }
  28.           }
  29.          
  30.           foreach($extensions as $extension) {
  31.               if(!extension_loaded($extension)) {
  32.                   $fail .= '<li>'.$extension.'</li>';
  33.               }
  34.           }
  35.  
  36.           if($fail) {
  37.               echo '<p>Your server does not meet the requirements for Magento.';
  38.               echo 'The following requirements failed:</p>';
  39.               echo '<ul>'.$fail.'</ul>';
  40.           } else {
  41.               echo '<p>Congratulations! Your server meets the requirements for Magento.</p>';
  42.           }
  43.       }
  44.       ?>

Далее запросите в браузере адрес:

http://www.example.com/magento-check.php

Если вы увидите надпись: "Congratulations! Your server meets the requirements for Magento.", - значит сервер готов к работе с Magento.

Включите на веб сервере модуль mod_rewrite. Для этого добавьте в конфиг апача httpd.conf строку:

  1. LoadModule mod_rewrite modules/mod_rewrite.so

Для сервера на базе Ubuntu это делается с помощью команды:

  1. sudo a2enmod rewrite

Разрешите менять конфигурацию апача с помощью файлов .htaccess. Для этого в конфигурационном файле веб-сервера нужно заменить строку AllowOverride None на AllowOverride All для директории /home/username/public_html/. Не забудьте перезапустить сервер с новыми настройками!

Создайте директорию backup:

  1. mkdir backup

Перейдите в директорию:

  1. cd backup/

Копирование файлов

По команде:

  1. wget http://www.example.com/backup/local.xml
  2. wget http://www.example.com/backup/app.tar
  3. wget http://www.example.com/backup/data.sql
  4. wget http://www.example.com/backup/media.tar
  5. wget http://www.example.com/backup/skin.tar

Теперь все данные готовы и скопированы и можно приступать к установке чистой Magento.

Вернитесь в директорию public_html:

  1. cd ..

Установка Magento

Следуя командам:

  1. wget http://www.magentocommerce.com/downloads/assets/1.2.1.2/magento-1.2.1.2.tar.gz
  2. tar -zxvf magento-1.2.1.2.tar.gz
  3. mv magento/* magento/.htaccess .
  4. mv php.ini.sample php.ini
  5. chmod o+w var var/.htaccess app/etc
  6. chmod -R o+w media

Создание базы данных

  1. CREATE USER 'DBUSER'@'DBHOST' IDENTIFIED BY 'DBPASS';
  2. GRANT USAGE ON * . * TO 'DBUSER'@'DBHOST' IDENTIFIED BY 'DBPASS'
  3. WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
  4. CREATE DATABASE IF NOT EXISTS `DBNAME`;
  5. GRANT ALL PRIVILEGES ON `DBUSER` . * TO 'DBUSER'@'DBHOST';

Импорт базы данных

По команде:

  1. mysql -h DBHOST -u DBUSER -pDBPASS DBNAME < backup/data.sql

PEAR Downloader

Запустите PEAR, и Magento обновит все необходимые данные в базе:

  1. ./pear mage-setup .
  2. ./pear install magento-core/Mage_All_Latest

Очистите данные:

  1. rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
  2. rm -rf magento/ magento-1.2.1.2.tar.gz
  3. rm -rf index.php.sample .htaccess.sample STATUS.txt

Перенос Media и Theme

Переместите файлы:

  1. cp backup/app.tar app/design/frontend/default/
  2. cp backup/skin.tar skin/frontend/default/
  3. cp backup/media.tar media/

Разархивируйте файлы:

  1. cd app/design/frontend/default/
  2. tar -xvf app.tar
  3. rm -rf app.tar
  4. cd ../../../../skin/frontend/default/
  5. tar -xvf skin.tar
  6. rm -rf skin.tar
  7. cd ../../../media/
  8. tar -xvf media.tar
  9. rm -rf media.tar
  10. cd ..

Перенос файла Config

Переместите файл:

  1. mv backup/local.xml app/etc/

Проверьте, работает ли сайт на Magento.

Удалите директорию:

  1. rm -rf backup/

Альтернативный метод

Сожмите всю директорию public_html вместе со всеми файлами Magento:

  1. tar -cvf backup.tar public_html/

Скачайте и разархивируйте на новом сервере Magento:

  1. tar -xvf backup.tar

Переместите файлы:

  1. mv public_html/* public_html/.htaccess .

Переместите директорию:

  1. rm -rf public_html/

Создайте новую базу данных MySQL и импортируйте dump-файл в неё.

  1. CREATE USER 'DBUSER'@'DBHOST' IDENTIFIED BY 'DBPASS';
  2. GRANT USAGE ON * . * TO 'DBUSER'@'DBHOST' IDENTIFIED BY 'DBPASS'
  3. WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
  4. CREATE DATABASE IF NOT EXISTS `DBNAME`;
  5. GRANT ALL PRIVILEGES ON `DBUSER` . * TO 'DBUSER'@'DBHOST';

  1. mysql -h DBHOST -u DBUSER -pDBPASS DBNAME < backup/data.sql

Откройте новую базу данных с phpMyAdmin , перейдите на [mage]core_config_data table, и отредактируйте:

web/unsecure/base_url

web/secure/base_url (config_id’s 2 and 3)

в соответствии с новым URL Magento сервера.

Отредактируйте файл local.xml (app/etc/local.xml), если он отличается от старого (но оставьте значение прежним : security/encryption key).

Очистите директорию:

  1. rm -rf var/*

Установите разрешения:

  1. chmod o+w var var/.htaccess app/etc
  2. chmod -R o+w media

Проверьте, работает ли сайт на Magento на новом сервере.

Смотрите также:
Мы занимаемся разработкой, поддержкой и продвижением веб-проектов
c 2002 года.

Наши новости