Какова лучшая стратегия развертывания Drupal?

Я работаю над своим первым проектом Drupal на XAMPP в моем MacBook. Это прототип и получает положительные отзывы от моего клиента.

Я собираюсь развернуть проект на Linux VPS через две недели. Есть ли лучший способ, чем заново делать все на сервере с нуля?

  • установить Drupal
  • модули загрузки (CCK, просмотры, дата, календарь)
  • создать содержание
  • ...

Спасибо

9 ответов

Решение

Пара советов:

  • Используйте управление файлами, НЕ FTP/ и т. Д., Для файлов. Неважно, что вы используете; мы склонны раскручивать учетную запись Subversion Unfuddle.com для каждого клиента, чтобы у них также было место для регистрации ошибок, но первым важным шагом является получение полного исходного кода вашего сайта в системе контроля версий. Когда на тестовом сервере или промежуточном сервере вносятся изменения, вы видите, работают ли они, фиксируете ли вы, а затем обновляете на работающем сервере. Откат и развертывание становится намного проще. Для кластеров из нескольких веб-заголовков вы можете повторить процесс или выполнить rsync с одного "канонического" сервера.

  • Однако если вы используете SVN, вы также можете использовать CVS проверки Drupal и других модулей / тем, и метаданные SVN/CVS смогут счастливо жить рядом друг с другом.

  • Для громоздких папок, таких как каталог файлов, используйте символическую ссылку в "правильном" месте, чтобы указать каталог на стороне сервера за пределами webroot. Это позволяет вашему репозиторию с исходным кодом включать весь код и символическую ссылку, а не весь код и все файлы, загруженные пользователями.

  • Базы данных сложнее; Очистка базы данных dev / staging и запуск ее в эксплуатацию проще всего выполнить при первоначальном развертывании, но при выполнении инкрементных обновлений базы данных есть несколько складок, если пользователи живого сайта также генерируют контент.

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

Возможности.module - чрезвычайно мощный инструмент для управления изменениями конфигурации Drupal.

Типы контента, настройки CCK, представления, переменные Drupal, контексты, предустановки Imagecache, меню, таксономии и разрешения можно объединить в функцию, которую можно проверить в управлении версиями. Оттуда развертывание нового сайта или внесение изменений в существующий легко управляется с помощью пользовательского интерфейса или Drush.

Убедитесь, что вы установили Strongarm.module для экспорта конфигурации drupal, которая хранится в вашей таблице переменных. Вы также можете статически размещать контент / узлы (то есть: о нас, часто задаваемые вопросы и т. Д.) В компонентах, установив uuid_features.module.

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

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

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

  1. Установите модуль на сервере разработки.
  2. Принять к сведению любые изменения и обновления были необходимы. Если есть какие-либо проблемы, вернитесь и делайте это до тех пор, пока не получите надежный, безошибочный процесс.
  3. Проверьте свои изменения! Повторите процесс тестирования как обычный зарегистрированный пользователь и снова как анонимный пользователь.
  4. Если процесс обновления включал в себя что-то кроме запуска update.php, то напишите скрипт для этого.
  5. Скопируйте производственную базу данных на промежуточный сервер и немедленно выполните те же действия. В случае сбоя выполните диагностику ошибки и вернитесь к шагу 1. В противном случае продолжите.
  6. Проверьте свои изменения!
  7. СОЗДАЙТЕ ВАШУ БАЗУ ДАННЫХ ПРОИЗВОДСТВА и ПРИНИМАЙТЕ ПЕРЕСМОТР ПЕРЕСМОТРА, КОТОРЫЙ ВЫ ПРОВЕРИЛИ ИЗ SVN.
  8. Переведите ваш производственный Drupal в режим обслуживания, запустите "svn update" в вашем производственном дереве и пройдите процесс обновления.
  9. Выведите Drupal из режима обслуживания и протестируйте все (как администратор, обычный пользователь и аноним)

И это все. Одна вещь, которую вы никогда не сможете ожидать от инфраструктуры сообщества, такой как Drupal, - это возможность перенести вашу базу данных из тестирования в производственную среду после запуска. С тех пор все перемещения базы данных от производства к тестированию, что несколько усложняет процесс развертывания. Быть осторожен!:)

Мы широко используем модуль "Функции", чтобы захватывать функции, а затем легко устанавливать их на производственной площадке.

Я удивлен, что никто не упомянул модуль Deployment. Вот выдержка из его страницы проекта:

... разработан для того, чтобы пользователи могли легко размещать контент с одного сайта Drupal на другой. Развертывание автоматически управляет зависимостями между сущностями (например, ссылками на узлы). Он разработан, чтобы иметь богатый API, который может быть легко расширен для использования в различных ситуациях постановки контента.

Я не работаю с Drupal, но я много работаю с Joomla. Я разворачиваю, архивируя все файлы в корне сети (в моем случае tar и gzip, но вы можете использовать zip), а затем загружая и разворачивая этот архив на рабочем сервере. Затем я беру дамп SQL (mysqldump -u user -h host -p databasename > dump.sql), загружаю его и использую обратную команду для вставки данных (mysql -u produser -h prodDBserver -p prodDatabase

Любая система контроля версий (GIT, SVN) + модуль функций для развертывания кода Drupal + пользовательские настройки (типы контента, настраиваемые поля, зависимости модуля, представления и т. Д.).

Поскольку модуль Deploy все еще находится в режиме разработки, вы можете использовать модуль экспорта Node в Drupal 7 для развертывания вашего контента / узлов.

Хорошая стратегия, которую я нашел и внедряю в настоящее время, состоит в том, чтобы использовать комбинацию модуля развертывания для переноса моего контента, а затем использовать вместе с dbscripts для объединения и обновления ядра и модулей. Он заботится о слиянии баз данных, даже если у вас есть живой контент, безопасность и обновления модулей, а у меня в настоящее время есть мой, настроенный для работы с SVN.

Если вы новичок в развертывании (и / или Drupal), то обязательно делайте все в один ком. Вы должны быть очень осторожны, когда есть пользователи, влияющие на контент, пока вы работаете над другой копией.

Можно оставить таблицы, которые относятся к фактическому содержанию, таксономии, пользователям и т. Д., А не к их структуре. Затем нажмите те, которые относятся к конфигурации. Тем не менее, это добавляет порядок сложности.

Приносим извинения, если развертывание является чем-то старым для вас, таким образом, это смутно оскорбительно.

Другие вопросы по тегам