Введение
На днях мне пришлось разворачивать сайт на хостинге nic.ru. За последнее время очень привык пользоваться composer`ом, и как-то отводил бог от виртуального хостинга - заказчики попадались со своими серверами, и все было легко и непринужденно - нужная версия php, composer, Drupal console, Drush. Но в этот раз у уважаемого заказчика был оплаченный хостинг на nic.ru, при том, оплачен из гранда на образовательный сайт, что не позволяло сменить сервер или хостера. Спросил про опыт в сообществе и получил ответ - беги оттуда. Но мы не привыкли отступать ) Ниже я опишу как победил хостинг, и что надо делать, чтобы развернуть сайт на Druapl 8 с помощью композера на shared хостинге nic.ru
Установка composer
Трабл с зависимостями PHP.
Итак, мы попытаемся поставить composer по инструкции:
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.
Спасибо за внимание. Очень жду любых комментариев и поправок.
Комментарии
Спасибо, полезная статья, особенно для местной публики, которая в основном уверена, что ничего подобного на шаред-хостингах провернуть нельзя.
Спасибо огромное за статью, сэкономил кучу времени. Только "Автоматический режим работы сайта" нужно не включить, а выключить.