Skip to content

Drupal 6 to 7 upgrade

andyceo edited this page Oct 23, 2014 · 1 revision

Описываем перенос сайта на Drupal 6 на Drupal 7 с одновременным переносом на другой сервер.

Подготовка к процессу апдейта

  1. Создадим список модулей:

     #!bash
     drush pml --status="enabled" --no-core --type="module" --pipe
    

    Посмотреть в человекочитаемом виде - убрать --pipe. Не забывайте, что полученный список - не тот, который можно скормить drush dl.

  2. Создадим список тем:

     #!bash
     drush pml --status="enabled" --no-core --type="theme" --pipe
    

    Посмотреть в человекочитаемом виде - убрать --pipe. Не забывайте, что полученный список - не тот, который можно скормить drush dl.

  3. Развернем модули для Drupal 7:

     #!bash
     drush dl список модулей полученных на предыдущем этапе
    
  4. Развернем темы для Drupal 7:

     #!bash
     drush dl список тем полученных на предыдущем этапе
    
  5. Поставим старый сайт на обслуживание: admin/settings/site-maintenance, сохранить форму.

  6. Создадим дамп базы данных:

     #!bash
     drush sql-dump --result-file="~/example.sql" --gzip
    
  7. Создадим дамп файлов (директория sites/example.com):

     #!bash
     tar czf ~/example.tar.gz /var/www/drupal6/sites/example.com
    
  8. Скопируем дампы на новый сервак:

     #!bash
     scp -C -p example.sql.gz andyceo@hyperion.ruware.com:/home/andyceo/example.sql.gz
     scp -C -p example.tar.gz andyceo@hyperion.ruware.com:/home/andyceo/example.tar.gz
    
  9. Разместим файлы из дампа в нужную директорию:

  10. Поправим владельца и права на файлы из-за возможности переноса файлов под неправильным пользователем (поменяйте andyceo на своего пользователя):

     #!bash
     sudo chown -R andyceo:andyceo /var/www/drupal7/sites/example.com
     sudo chmod 755 /var/www/drupal7/sites/example.com
     sudo chown -R www-data:www-data /var/www/drupal7/sites/example.com/files
     sudo chmod 755 /var/www/drupal7/sites/example.com/files
    
  11. Проставим права на запись для файла settings.php для веб-сервера (или php):

     #!bash
     chmod o+w settings.php
    
  12. Внесем для нового сайта запись в файл sites/sites.php в случае, если имя папки /sites/example.com не является корректным именем домена сайта, а тажке для облегчения развертывания локальной копии сайта

     #!php
     <?php
    
     $sites = array(
    
       // ..........
    
       // example.com site
       'example.local' => 'example.com', // local copy
    
       // ..........
    
     );
    
  13. Создадим пользователя и базу данных для сайта:

     #!sql
     CREATE USER 'example'@'localhost' IDENTIFIED BY 'EXAMPLE_PASSWORD';
     GRANT USAGE ON *.* TO 'example'@'localhost' IDENTIFIED BY 'EXAMPLE_PASSWORD' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
     CREATE DATABASE IF NOT EXISTS `example` CHARACTER SET utf8 COLLATE utf8_general_ci;
     GRANT ALL PRIVILEGES ON `example`.* TO 'example'@'localhost';
    
  14. Распаковать дамп БД, если он был запакован:

     #!bash
    
     gunzip example.sql.gz
    
  15. Зальем дамп в БД сайта Drupal 7):

     #!bash
     mysql --user=example --password=EXAMPLE_PASSWORD --host=localhost example < example.sql
    

    где --user=example - имя пользователя БД, --password=EXAMPLE_PASSWORD - пароль пользователя БД, --host=localhost - адрес сервера БД, example - имя БД.

  16. Создадим виртуальный домен /etc/apache2/sites-available/example со следующим содержимым:

     #!apache
     #example.com
    
     <VirtualHost 127.0.0.1:8080>
       ServerName  example.com
       #ServerAlias www.example.com
       DocumentRoot /var/www/drupal7
    
       ErrorLog /var/log/apache2/example.error.log
       LogLevel warn
       CustomLog /var/log/apache2/example.access.log combined
       ServerSignature Off
     </VirtualHost>
    
  17. Добавим домен в список хостов Drupal 7 в сервер nginx: /etc/nginx/sites-available/drupal7

  18. Включим сайт для апача и перезагрузим веб-серверы:

     #!bash
    
     sudo a2ensite example
     sudo service apache2 reload
     sudo service nginx reload
    
  19. На локальной машине, на которой будем запускать процесс апдейта, нужно временно прописать IP нового сервера для домена /etc/hosts

  20. Запустим в браузере процесс апгрейда: http://example.com/update.php

Действия после апдейта

  1. Уберем права на запись для файла sites/example.com/settings.php:
  2. Пропишем новые A-записи для домена
  3. Если включены, выключить модули Poormanscron и CVS Deploy

Sidebar is under construction

Clone this wiki locally