Установка ядра Drupal как сабмодуль

29.11.2013
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin
Автор:

Итак, с чего нужно начинать? Для начала убедимся, что под рукой всё необходимое (просьба не смеяться - всяко бывает), как то, удаленный доступ к удаленному же серверу (например по ssh). На этом сервере нужно инициализировать два git репозитория - один для ядра, другой  для самого сайта, на котором будет устанавливаться ядро Drupal. Для примера, создадим на сервере пользователя с именем "git". Тогда инициализация репозиториев будет выглядеть следующим образом:

cd /home/git/
mkdir bare
cd bare
mkdir core
mkdir project
cd core
git init --bare
cd /home/git/bare/project
git init --bare

Следующим шагом будет создание мастер ветки в репозитории ядра. Это можно сделать с любой тестовой площадки: нужно только создать директорию, в которой будут находиться файлы ядра (в нашем случае это будет /var/www/site_core), подтянуть git репозиторий ядра, созданный на предыдущем этапе (предположим, доступ к удаленному серверу осуществляется по пути ssh://[email protected]), а далее произвести первый коммит для создания мастер ветки в репозитории. Выглядит все это так:

cd /var/www/
mkdir site_core
cd site_core
git clone ssh://[email protected]/home/git/bare/core ./
touch Readme.txt
echo 'Core repo' > Readme.txt
git add .
git commit -m "Initial commit"
git push origin master

После этого у нас есть полностью инициализированный и готовый к работе git репозиторий ядра Drupal, но пока в нем нет самих файлов ядра. Следовательно, добавляем их (заметьте, находимся мы все еще в /var/www/site_core). Также, нам нужно удалить и добавить в .gitignore те папки, которые могут изменяться в процессе работы над сайтом. Если этого не сделать, то при запуске комманды обновления сабмодулей (git submodule update) содержимое таких папок будет приведено к первоначальному состоянию, а это значит, добавленные модули будут удалены. Это папки "modules" и "sites":

git checkout -b 8.x
wget http://ftp.drupal.org/files/projects/drupal-8.x-dev.tar.gz
tar -xzvf drupal-8.x-dev.tar.gz -C /tmp && mv /tmp/drupal-8.x-dev/* /var/www/site_core
rm -rf sites/ modules/
git add .
git commit -m "Add core files"
git push origin 8.x
touch .gitignore
echo modules > .gitignore
echo sites >> .gitignore
git add .gitignore
git commit -m "Disalow modules and sites folders"
git push

Если возможны изменения других файлов, или какие-то файлы могут добаляться в корень в процессе работы над сайтом (например .htaccess файл или разного рода html файлы метрик), то их также нужно добавить в .gitignore.

На данном этапе мы имеем полностью готовый к использованию репозиторий ядра, который можно устанавливать как сабмодуль. Поэтому веб разработчик может приступать непосредственно к установке нового сайта. Для этого создадим на сервере или локально (для тестового режима) каталог (например new_site), в котором будут располагаться все файлы сайта. Содержимое каталога нужно подтянуть с git репозитория сайта, который мы создавали на первом этапе, а также нам понадобится произвести первый коммит для инициализации мастер ветки репозитория:

cd /var/www/
mkdir new_site
cd new_site
git clone ssh://[email protected]/home/git/bare/project ./
touch Readme.txt
echo 'Core project' > Readme.txt
git add .
git commit -m "Initial commit"
git push origin master

И вот мы подошли к самому главному моменту темы - установке Drupal'а как сабмодуля. Последующие дейтсвия нужно производить с домашней директории сайта.

Важно: поскольку ядро теперь будет сабмодулем, то оно не может находиться непосредственно в домашней директории сайта, а соответственно должно быть установлено в определенной директории (например htdocs). Это все нужно для того, чтобы директория с сабмодулем не имела никаких посторонних файлов. Сама установка имеет следующий вид:

git checkout -b dev
git submodule add ssh://[email protected]/home/git/bare/core htdocs
cd htdocs
git checkout 8.x

После этих действий мы имеем домашюю директорию сайта /var/www/new_site с установленным ядром Drupal в директории /var/www/new_site/htdocs, который мы переключили на нужную нам ветку (8.x).

Теперь самое время вернуться к удаленным ранее папкам "modules" и "sites". Они нам нужны, но как уже было сказано, не могут они находиться под сабмодулем ядра. Поэтому нужно создать эти папки в корне сайта и настроить ссылки к ним таким образом, будто они находятся в одной директории с ядром:

cd /var/www/new_site
mkdir sites
mkdir modules
ln -s /var/www/new_site/sites/ /var/www/new_site/htdocs/
ln -s /var/www/new_site/modules/ /var/www/new_site/htdocs/
git add .
git commit -m "Install Drupal core"
git push origin dev

Вот и все -  установка ядра Drupal как сабмодуль завершена! Установка дополнительных модулей должна производиться в папку "modules", которая находится в корне сайта. Для примера установим модуль Administration menu:

cd /var/www/new_site/
git submodule add --branch 8.x-3.x http://git.drupal.org/project/admin_menu.git modules/admin_menu
git add .
git commit -m "Install admin menu module"
git push

На этом мы заканчиваем обзор установки ядра Drupal как сабмодуля git'а. Надеемся, эта статься для вас будет полезной.

1 vote, Rating: 5
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin

Также по теме

1

Не так давно мы рассматривали, как создать ctools тип контента для модуля Panels. На этот раз пришел черед другого...

2

Apps -  это модуль, который можно позиционировать как следующий шаг в развитии...

3

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

4

В даной статье описан процесс развёртывания CMS Drupal с использованием Oracle DB на Debian сервере.

5

Иногда ситуация складывается так, что возникает потребность в использовании обоих интернет-протоколов  HTTP...

Need a quote? Let's discuss the project

Are you looking for someone to help you with your Drupal Web Development needs? Let’s get in touch and discuss the requirements of your project. We would love to hear from you.

Join the people who have already subscribed!

Want to be aware of important and interesting things happening? We will inform you about new blog posts on Drupal development, design, QA testing and more, as well news about Drupal events.

No charge. Unsubscribe anytime