Обновляем WordPress с помощью Subversion

Владимир | | Subversion, Web разработка, WordPress.

Обновление WordPress с помощью Subversion

В этой статье я расскажу о том, как можно немного упростить обновление WordPress. Метод особенно удобен, если вам нужно регулярно тестировать плагины на совместимость с новыми версиями движка.

В общем-то, особых секретов нет. Скачать дистрибутив WordPress можно как в виде zip архива, так и с помощью Subversion.

Преимущества второго метода очевидны. Вы сможете с помощью всего одной команды переустановить движок. Причем установить можно как новую версию, так и предыдущую.

Обычным способом вам бы пришлось качать архив, удалять файлы старой версии (не всегда), распаковывать архив, проверять, что находится в wp-content (там могут быть более ранние версии плагинов).

Т.е. используя Subversion вы однозначно сэкономите время, и кроме того, будете уверены, что никакие ваши файлы не будут случайно перезаписаны.

Примечание. Если вы хотите узнать больше об этой системе управления версиями, можете почитать раздел Subversion этого блога и не забывайте об официальной документации (устанавливается из дистрибутива, очень рекомендую почитать).

Теперь рассмотрим процесс получения дистрибутива.

1) Создаем папку, в которую будем устанавливать WordPress. Открываем консоль и переходим в эту папку.

Примечание. Я буду рассказывать на примере консоли. Но, естественно, вы можете воспользоваться SVN клиентом.

2) Определяем, какая версия WordPress вам нужна.

Здесь все просто. Заходим на страницу http://trac.wordpress.org/browser/ и изучаем структуру репозитория.

Основная ветка разработки называется trunk. Это самая последняя версия плюс новые исправления. Кстати, когда я последний раз смотрел, ее возраст был 17 часов.

Ветки, которые распространяются (или распространялись) в виде архивов, находятся в папке tags.

Теперь определяем адрес выбранной ветки. Первая часть адреса для всех веток одинакова — http://svn.automattic.com/wordpress/. К ней добавляем путь в репозитории.

Т.е. основная ветка имеет адрес http://svn.automattic.com/wordpress/trunk
Версия 2.6 доступна по адресу http://svn.automattic.com/wordpress/tags/2.6 и т.д.

3) Загружаем выбранную версию

Для этого выполняем команду
svn checkout адрес_версии .

Например,
svn checkout http://svn.automattic.com/wordpress/trunk .

Обратите внимание. После слова trunk стоит пробел и точка. Это означает, что загружать содержимое trunk нужно в текущую папку.

4) Настраиваем WordPress. Тут все, как и при обычной установке из архива. Нужно переименовать файл wp-config-sample.php в wp-config.php и указать в нем параметры подключения к базе данных. И после этого зайти на страницу sitename.com/wp-admin/install.php

На этом этапе нужно учесть два нюанса.
Первый. В дистрибутивы WordPress файл wp-config.php не входит, поэтому он останется неизменным при обновлении. Но wp-config-sample.php меняется от версии к версии, поэтому для нормальной работы движка, возможно, потребуется вручную обновить wp-config.php.

Второй. WordPress сам обновляет базу данных. Но процесс обновления подразумевает установку более новой версии движка. С помощью Subversion вы можете возвратиться к любой предыдущей версии. Правильное обновление базы при этом, насколько я знаю, никто не гарантирует. В такой ситуации я могу порекомендовать только создание бекапов базы для каждой из версий движка.

4) Обновление дистрибутива. Выполняется командой svn update .... Например:
svn update http://svn.automattic.com/wordpress/trunk .

5) Переключение между версиями. Команда svn switch .... Например, для перехода на версию 2.3 выполняем команду:
svn switch http://svn.automattic.com/wordpress/tags/2.3 .

Как видите, большинство действий выполняются всего одной коммандой.

Теперь пару замечаний об обновлении движка на сервере хостера.

Все приведенные в этой статье советы и рекомендации можно использовать для обновления WordPress на «боевом» сервере.

Естественно у вас должна быть возможность запускать svn. Т.е. нужен SSH-доступ, а на многих shared хостингах его нет.

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

В общем, если нужно администрировать один блог, то выигрыш от использования Subversion незначительный. Но если вам приходится обновлять десятки дистрибутивов WordPress, размещенных на VPS или выделенном сервере, то вариант с Subversion выглядит интереснее загрузки кучи файлов по FTP или распаковки архива на сервере.

Удачного апгрейда!

  • Пару замечаний:

    — для апдейта рабочей копии можно сократить команду: svn up

    — ну и если делать чекаут, а не экспорт, то неплохо бы запретить доступ к файлам и каталогам, начинающимся с точки.

    • Согласен. В общем-то и другие команды имеют сокращения:
      checkout — co
      switch — sw

      А насчет запрета я не понял. Точка в данном случае указывает на папку в которую нужно записывать дистрибутив. Если запретить к ней доступ svn ничего не запишет.

      • Согласен. В общем-то и другие команды имеют сокращения:

        я не к этому, я про то, что урл писать в апдейте не обязательно, если текущий каталог находится под версионным контролем

        А насчет запрета я не понял

        я говорил про запрет апачу отдавать файлы или каталоги, начинающиеся с точки. Пермишены файловой системы тут не причем

        • Полностью согласен насчет апача.
          Просто я ориентировался на локальную установку, с правилами типа
          Deny from all
          Allow from 127.0.0.1

          Администрирование и безопасность сервера в общем-то отдельная тема.

  • Пару замечаний:

    — для апдейта рабочей копии можно сократить команду: svn up

    — ну и если делать чекаут, а не экспорт, то неплохо бы запретить доступ к файлам и каталогам, начинающимся с точки.

    • Согласен. В общем-то и другие команды имеют сокращения:
      checkout — co
      switch — sw

      А насчет запрета я не понял. Точка в данном случае указывает на папку в которую нужно записывать дистрибутив. Если запретить к ней доступ svn ничего не запишет.

      • Согласен. В общем-то и другие команды имеют сокращения:

        я не к этому, я про то, что урл писать в апдейте не обязательно, если текущий каталог находится под версионным контролем

        А насчет запрета я не понял

        я говорил про запрет апачу отдавать файлы или каталоги, начинающиеся с точки. Пермишены файловой системы тут не причем

        • Полностью согласен насчет апача.
          Просто я ориентировался на локальную установку, с правилами типа
          Deny from all
          Allow from 127.0.0.1

          Администрирование и безопасность сервера в общем-то отдельная тема.

  • Я кстати слышал что с будущей версии 2.7 автообновление планируют встроить в ВП.

    • Да, обещают. Только подробного описания этой функции я не нашел.

  • Я кстати слышал что с будущей версии 2.7 автообновление планируют встроить в ВП.

    • Да, обещают. Только подробного описания этой функции я не нашел.

  • AsketMan

    А как производить обновление что бы не было .svn?
    Почему вместо svn update не использовать svn export?

  • AsketMan

    А как производить обновление что бы не было .svn?
    Почему вместо svn update не использовать svn export?

  • Обновить без svn можно просто распаковав архив на сервере.

    svn export экспортирует файлы в репозиторий (изменить репозиторий вам не дадут, если только вы не разработчик WP), а svn update обновляет вашу рабочую копию.

    • svn export экспортирует файлы в репозиторий

      Ну, вообще-то, svn export экспортирует файлы ИЗ репозитория в указанный каталог.

      • Вы абсолютно правы 🙂 Непонятно почему я подумал об импорте 😕 .
        Разница между svn export и svn checkout в том, что последняя команда создает «рабочую копию», т.е. размещает в той же папки метаданные svn (находятся в папках «.svn»).
        export же просто копирует файлы.
        Дальше, думаю, понятно. Если вы разработчик плагина и приходится постоянно переключаться между версиями, то намного удобнее работать с «рабочей копией», чем просто с дистрибутивом.

  • Обновить без svn можно просто распаковав архив на сервере.

    svn export экспортирует файлы в репозиторий (изменить репозиторий вам не дадут, если только вы не разработчик WP), а svn update обновляет вашу рабочую копию.

    • svn export экспортирует файлы в репозиторий

      Ну, вообще-то, svn export экспортирует файлы ИЗ репозитория в указанный каталог.

      • Вы абсолютно правы 🙂 Непонятно почему я подумал об импорте 😕 .
        Разница между svn export и svn checkout в том, что последняя команда создает «рабочую копию», т.е. размещает в той же папки метаданные svn (находятся в папках «.svn»).
        export же просто копирует файлы.
        Дальше, думаю, понятно. Если вы разработчик плагина и приходится постоянно переключаться между версиями, то намного удобнее работать с «рабочей копией», чем просто с дистрибутивом.

  • Блог просто про авто обновление попдробнее можете , что нибудь написать?

    • Что именно подробнее?

      • AsketMan

        Это спамер. Новая веяние. «авто обновление», и сайт указан про авто. Умно.

  • Блог просто про авто обновление попдробнее можете , что нибудь написать?

    • Что именно подробнее?

      • AsketMan

        Это спамер. Новая веяние. «авто обновление», и сайт указан про авто. Умно.

  • Asket свм ты спамер.. Авто обновление и сайт про авто? сам вогнал , что написал? Я пробую делать первый сайт на ворпресс так как вышла версия 2.7 , я просто хотел узнать что икак , можно ли ,что бы не терять времени обновить ее как нибудь автоматически..

    • Прошу прощения, не разобрался в ситуации…
      Просто спамеры уже конкретно надоели.

      В версии 2.7 автообновление встроенно в движок. Но в любом случае желательно контролировать этот процесс, т.к. могут быть проблемы с плагинами при переходе на новые версии.

      Метод, описанный в этой статье больше подходит для ситуации, когда вам нужно часто переключаться между версиями (например, если вы разрабатываете плагины).

    • AsketMan

      Бггг =))) Ой, тогда я тоже извиняюсь. Но ваш коммент был несколько странным…

  • Asket свм ты спамер.. Авто обновление и сайт про авто? сам вогнал , что написал? Я пробую делать первый сайт на ворпресс так как вышла версия 2.7 , я просто хотел узнать что икак , можно ли ,что бы не терять времени обновить ее как нибудь автоматически..

    • Прошу прощения, не разобрался в ситуации…
      Просто спамеры уже конкретно надоели.

      В версии 2.7 автообновление встроенно в движок. Но в любом случае желательно контролировать этот процесс, т.к. могут быть проблемы с плагинами при переходе на новые версии.

      Метод, описанный в этой статье больше подходит для ситуации, когда вам нужно часто переключаться между версиями (например, если вы разрабатываете плагины).

    • AsketMan

      Бггг =))) Ой, тогда я тоже извиняюсь. Но ваш коммент был несколько странным…

  • Спасибо Владимир! Буду пробовать и учиться.

    • Пожалуйста! Будут вопросы, пишите.

  • Спасибо Владимир! Буду пробовать и учиться.

    • Пожалуйста! Будут вопросы, пишите.