пятница, 4 июня 2010 г.

Инструкция по переносу 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 .= '
  20. PHP 5.2.0 (or greater)

  21. ';
  •           }
  •          
  •           if(!ini_get('safe_mode')) {
  •               if(preg_match('/[0-9].[0-9]+.[0-9]+/', shell_exec('mysql -V'), $version)) {
  •                   if(version_compare($version[0], '4.1.20', '<')) {
  •                       $fail .= '
  • MySQL 4.1.20 (or greater)

  • ';
  •                   }
  •               }
  •           }
  •          
  •           foreach($extensions as $extension) {
  •               if(!extension_loaded($extension)) {
  •                   $fail .= '
  • '

  • .$extension.'
    ';
  •               }

  •           }

  •  

  •           if($fail) {

  •               echo 'Your server does not meet the requirements for Magento.';

  •               echo 'The following requirements failed:';

  •               echo '
      '.$fail.'
    '
    ;

  •           } else {

  •               echo 'Congratulations! Your server meets the requirements for Magento.
    '
    ;

  •           }

  •       }

  •       ?>
     
    Далее запросите в браузере адрес:
    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 на новом сервере.
     

  • Источник

    Комментариев нет: