Установка и деплой Drupal 8 (composer drupal project) на хостинг nic.ru

Главные вкладки

Алексей Дёмин 12 мая 2018 в 14:18
4

Введение

На днях мне пришлось разворачивать сайт на хостинге nic.ru. За последнее время очень привык пользоваться composer`ом, и как-то отводил бог от виртуального хостинга - заказчики попадались со своими серверами, и все было легко и непринужденно - нужная версия php, composer, Drupal console, Drush. Но в этот раз у уважаемого заказчика был оплаченный хостинг на nic.ru, при том, оплачен из гранда на образовательный сайт, что не позволяло сменить сервер или хостера. Спросил про опыт в сообществе и получил ответ - беги оттуда. Но мы не привыкли отступать ) Ниже я опишу как победил хостинг, и что надо делать, чтобы развернуть сайт на Druapl 8 с помощью композера на shared хостинге nic.ru

Установка composer

Трабл с зависимостями PHP.

Итак, мы попытаемся поставить composer по инструкции:

mkdir ~/bin
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=bin --filename=composer

и тут получаем ошибку

> Some settings on your machine make Composer unable to work properly.
> Make sure that you fix the issues listed below and run this script again:
>
> The phar extension is missing.
> Install it or recompile php without --disable-phar

Решение

Эта ошибка устраняется установкой модуля phar для php, для этого нужно зайти по адресу https://www.nic.ru/hcp2/ , затем в Управление веб-сервером -> Управление модулем PHP, разворачиваем вкладку Управление расширениями, там отмечаем заветный Phar и нажимаем Сохранить внизу страницы.

Прим. На этой же странице можно установить нужную версию PHP.

Совет

После удачной установки, composer можно запускать как ~/bin/composer, вы можете добавить папку ~/bin в переменную $PATH, для того, чтобы композер запускать привычно.

  • Разово (на текущую сессию) - запустите export PATH=$PATH:~/bin
  • Перманентно - добавьте в ~/.bashrc export PATH=$PATH:~/bin

Трабл с нехваткой памяти.

При запуске composer install или update, у вас может выскочить такая ошибка

Loading composer repositories with package information
Updating dependencies (including require-dev)
Убито.

Решение

Это происходит от нехватки памяти. Скорее всего у вас в репозитории нет файла composer.lock. Если его исключить из .gitignore, то проблема решается и все скачивается как надо. Единственный нюанс - на боевом хостинге и ваше окружение для разработки должны быть максимально идентичными.

Настройка DocumentRoot

Трабл с webroot.

Если вы используете репозиторий, в котором web вынесена в подпапку (см https://www.drupal.org/node/2718229#download-core), то и на хостинге нам надо настроить DocumentRoot так, чтобы он ссылался не на ~/domain.com/docs, а в ~/domain.com/docs/web (в docs будет репозиторий, а в web - открытая часть)

Решение

Сначала надо включить в настройках сайта ручной режим. Для этого идем Панель управления -> Сайты -> domain.com -> Настройки -> Веб-сервер и там включаем Автоматический режим работы сайта.

И так, в результате этих действий в папке ~/etc появляются настройки для серверов apache и nginx. Папки ~/etc/apache_2.4/sites-enabled и ~/etc/nginx/sites-enabled содержат файлы типа таких: domain.com.site.conf, в которых надо дописать web в конце строк, указывающих на путь к сайту /home/user/domain.com/docs/, чтобы получилось /home/user/domain.com/docs/web/ . Я это делал через ssh и mcedit, вы можете воспользоваться файловым менеджером в панели управления.
После этого идем в Управление веб-сервером и нажимаем Перезагрузить.

Заключение.

Эти несложные шаги помогли мне победить установку Drupal 8 на shared хостинг nic.ru.
Спасибо за внимание. Очень жду любых комментариев и поправок.

Комментарии

Аватар пользователя gun_dose gun_dose 12 мая 2018 в 15:56
1

Спасибо, полезная статья, особенно для местной публики, которая в основном уверена, что ничего подобного на шаред-хостингах провернуть нельзя.

Аватар пользователя alezu alezu 19 марта 2022 в 11:13
1

Спасибо огромное за статью, сэкономил кучу времени. Только "Автоматический режим работы сайта" нужно не включить, а выключить.