Установка Drupal 8 и PHP7 на серверах DigitalOcean

Опубликовал slava - 20 декабря 2015

Несколько вступительных слов

Я начал экспериментировать с Drupal 8 около года назад. В то время единственной возможностью была его установка на локальный компьютер, так как ни один из хостинг провайдеров, испробованных мною, не предоставлял серверов, совместимых с Drupal 8. Было здорово попробовать новые фичи Drupal 8, но невозможность запустить на нём демонстрационный сайт и испытать его в действии заставили меня отложить его изучение на некоторое время.

В этой статье я хочу рассказать о том, как можно установить Drupal 8 на серверах DigitalOcean и заставить его работать на PHP7. Кстати, если у вас тоже есть мысли попробовать их услуги, то вы можете воспользоваться вот этой ссылкой для получения бонусных $10.00 на ваш счёт после регистрации!

Создание дроплета DigitalOcean

Для того, чтобы разместить свой сайт на серверах DigitalOcean, нужно создать "дроплет" (можно считать его виртуальным сервером) и привязать его к своему домену.

Для начала в настройках домена нужно задать использование следующих nameserver'ов DigitalOcean:

  • ns1.digitalocean.com
  • ns2.digitalocean.com
  • ns3.digitalocean.com

На скриншоте ниже показан пример настройки домена у регистратора namecheap (хорошие цены на доменные имена в зоне .com):

Настройка nameservers для домена у регистратора namecheap

Привязка домена к новым name-серверам может занять несколько часов (до суток). Пока это не произойдёт, сайт будет не доступен по доменному имени, но это не мешает продолжить настройку самого сайта на серверах DigitalOcean.

Входим в свой аккаунт DigitalOcean и нажимаем зелёную кнопку "Create droplet" справа сверху. На открывшейся странице переключаемся на вкладку "One-click Apps" и выбираем следующие настройки дроплета:

  • Drupal 8.0.5 on 14.04 (после создания на дроплете автоматически развернётся Drupal 8.0.5 на Ubuntu 14.04)
  • "Choose a size" - для простого сайта на базе Drupal 8.0.5 подойдёт самая дешевая опция ($5/месяц)
  • "Choose a datacenter region" - регион, на серверах в котором нужно создать дроплет
  • "Select additional options" - дополнительные платные опции, не обязательно
  • "Add your SSH keys" - здесь нужно нажать "New SSH key", после чего вставить содержимое SSH ключа, который будет использоваться для авторизации при SSH доступе на "сервер" дроплета, и задать ему имя. Сгенерировать SSH ключ можно согласно следующим инструкциям: для пользователей Linux и Mac OS X / для пользователей Windows. Я работаю с ноутбука под управлением Windows, но использую Git BASH, которая имитирует консоль Linux, поэтому я следовал инструкциям для Linux.
  • "How many Droplets?" - 1 Droplet
  • "Choose a hostname" - здесь указать доменное имя сайта

Пример страницы настройки дроплета:

Создание дроплета DigitalOcean с Drupal 8

Нажимаем кнопку "Create" и ждём завершения создания дроплета.

Созданному дроплету выдаётся IP-адрес, который можно увидеть на странице со списком дроплетов:

Список дроплетов DigitalOcean

Теперь можно проверить успешность создания дроплета - при открытии в браузере IP адреса дроплета должен отображаться сайт на базе Drupal 8.

Для входа на сервер дроплета через SSH нужно использовать имя пользователя "root". Кроме этого должен использоваться ключ, сгенерированный ранее в процессе создания дроплета (если SSH клиент не подключает его автоматически). При работе через Git BASH достаточно использовать следующую команду: ssh root@ip.адрес.вашего.дроплета

При первом заходе через SSH будет отображена подсказка с паролем для администратора Drupal 8:

Первый вход на сервер DigitalOcean через SSH

Для удобства доступа к серверу можно задать короткий синоним IP-адресу дроплета. Для Windows компьютера для этого нужно отредактировать файл C:\Windows\System32\drivers\etc и вписать в него, например, строку вида "IP-адрес do". После этого для доступа на сервер достаточно будет использовать "ssh root@do".

Внесение короткого синонима для IP адреса дроплета в файл hosts на Windows компьютере

Теперь нужно завершить привязку доменного имени сайта к дроплету. Для этого идём в раздел "Networking", открываем страницу "Domains", указываем домен сайта и выбираем дроплет для него:

Привязка домена к дроплету DigitalOcean

После этого настраиваем DNS записи следующим образом:

  • A: mail -> IP адрес дроплета
  • A: @ -> IP адрес дроплета
  • CNAME: www -> домен сайта (с точкой на конце)
  • MX: 1 -> домен сайта с префиксом "mail" (и точкой на конце)
  • NS: оставляем три записи этого типа по-умолчанию

Пример настройки:

Настройка DNS записей для домена в DigitalOcean

Этого должно быть достаточно для того, чтобы сайт, развёрнутый на дроплете, стал доступен по его доменному имени (после того, как информация о доменном имени обновится в DNS серверах, что, как уже указал выше, может занять несколько часов).

Обновление до PHP7

По-умолчанию разворачивается дроплет с PHP5. Но Drupal 8 очень требователен к ресурсам, поэтому переход на PHP7 будет очень желателен.

Для этого заходим на сервер через SSH и выполняем следующие команды:

  1. Подключаем репозиторий с пакетами PHP7:
    sudo add-apt-repository ppa:ondrej/php
  2. Обновляем базу с информацией о версиях пакетов:
    sudo apt-get update
  3. Устанавливаем PHP7 и необходимые пакеты:
    sudo apt-get install php7.0-fpm
    sudo apt-get install php7.0-mysql
    sudo apt-get install php7.0-xml
    sudo apt-get install php7.0-cli
    sudo apt-get install php7.0-opcache
    sudo apt-get install php7.0-mbstring
    sudo apt-get install php7.0-gd
    sudo apt-get install php7.0
  4. Редактируем файл /etc/nginx/sites-enabled/drupal и заменяем строку, которая выглядит как "fastcgi_pass unix:/var/run/php5-fpm.sock;", на "fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;" (обратите внимание на дополнительный "php")
    sudo vim /etc/nginx/sites-enabled/drupal
  5. Перезапускаем nginx:
    sudo service nginx restart
  6. Заходим на страницу Reports -> Status report в админке Drupal 8 и проверяем, что теперь сайт работает на PHP7. Если отображается страница с серверной ошибкой, то, возможно, Drupal стал требовать какой-то дополнительный пакет, который мы не установили на 3 шаге. Можно попробовать посмотреть подробный текст ошибки в файле /var/log/nginx/error.log, догадаться по нему, какой пакет нужен, и установить его с помощью "sudo apt-get install php7.0-название-пакета".

 

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Web page addresses and email addresses turn into links automatically.
Отправляя эту форму, Вы соглашаетесь с политикой приватности Mollom.