Drupal: лучшая практика для переключения домена сайта после завершения проекта - PullRequest
0 голосов
/ 22 ноября 2010

Я работаю в среде Drupal Multisite на сервере ламп (debian, apache, php, mysql).

Мой текущий рабочий процесс для нового проекта:

  1. Активировать поддомен на сайте моей компании (скажем, проект будет foo.com, я активирую foo.example.com)
  2. Бекоза из plesk (это немного друпал недружелюбно). Мой шаг:
    1. Создать новый поддомен в plesk, php работает в режиме fastcgi
    2. Создать базу данных
    3. Удалите папку httpdocs, создайте ее заново и создайте папку sites
    4. Создайте символическую ссылку на каждый файл в папке /var/www/vhosts/drupal (база кода drupal), за исключением сайтов и папок tmp, файлов robots.txt и .htacces (которые обычно настраиваются для каждого домена)
    5. Создайте папку foo.example.com внутри sites, символическую ссылку на папку /var/www/vhosts/drupal/sites/all, а затем верните символическую ссылку от sites/foo.com до /var/www/vhosts/drupal/sites/foo.example.com (чтобы сделать drush см. все домены для некоторых многосайтовых задач, например crontab)
  3. Установка, настройка drupal в поддомене, выполнение всего необходимого для завершения проекта

На этом этапе мне нужно переключить проект с субдомена на конечный домен foo.com, который также будет находиться на моем сервере.

Мне не нравятся некоторые другие хаки, такие как перенаправление доменов, я хочу, чтобы окончательный проект был «чистым» (что означает clean в многосайтовой среде).

На самом деле я делаю эти шаги:

  1. Создание домена (через plesk) и базы данных;
  2. Скопируйте субдомен httpdocs в полный домен httpdocs (cp -a /var/www/vhosts/example.com/subdomains/foo/httpdocs /var/www/vhosts/foo.com/httpdocs)
  3. Изменить владельца и группу httpdocs в соответствии с владельцем домена и группой
  4. Войдите в drupal, измените информацию о веб-сайте и пути к файловой системе.

Это позволяет мне делать то, что я хочу, но у меня есть некоторые проблемы с содержимым html узла; особенно для тех, которые содержат ссылки, изображения и файлы, которые (даже если IMCE сконфигурирован для использования относительного пути) будут указывать на /sites/foo.example.com/files/[...] вместо /sites/foo.com/files/[...] .. это также происходит для файловых полей cck.

Как я уже сказал, мне нужно чистое решение, я знаю, что смогу создать символическую ссылку от /sites/foo.example.com до /sites/foo.com, но мне действительно не нравится этот способ.

Пока что я пытался найти / заменить все вхождения в базу данных sql dump:

sed 's/foo.example.com/foo.com/g' dump.sql > foo.com.sql

Но это, кажется, что-то тормозит; Я получаю много ошибок в файле boostrap (на этапе десериализации кэша, даже если я очистил весь кэш до и после экспорта / импорта БД) и похоже, что какая-то кодировка utf-8 нарушена.

Я знаю, что лучше всего будет установить область разработки на локальном сервере, но мне нужно, чтобы мой клиент достиг ее извне ... и наша ситуация с ADSL (статический IP и т. Д.) Немного запутана.

Есть идеи?

p.s: извините за мой плохой английский, если мой вопрос недостаточно ясен, дайте мне знать, и я предоставлю более подробную информацию)

1 Ответ

0 голосов
/ 23 ноября 2010

Ваши действия в основном то, что я делаю, но я не использую Plesk и не выполняю многоузловую установку.Я просто создаю новый vhost в экземпляре VPS, cp -a docroot и перенастраиваю для нового DSN базы данных.

Что касается проблем SQL, я обычно редактирую дамп SQL в чистом редакторе UTF-8чтобы предотвратить эту проблему.В Windows я использую Notepad ++.

Затем я восстанавливаю базу данных, очищаю все кеши, редактирую настройки и запускаю cron.Я также обычно перестраиваю поисковый индекс.

Эта последовательность обычно работает.

Проблема начальной загрузки, вероятно, связана с таблицей переменных.Когда вы сериализуете строку (или что-то со строкой), длина также сохраняется.Я выполню поиск и замену, затем открою MySQL Query Browser и поищу строки в переменной таблице с именем домена и исправлю длины вручную.Другой вариант заключается в том, чтобы определить, какая опция сохраняется, а затем заново создать настройку.

...