Установка Drupal на VirtualBox

Установка Drupal на VirtualBox

Из предыдущей статьи "Установка и настройка VirtualBox" у нас уже есть установленный apache сервер с базой данных mysql, openssh сервером и drush.
В этой статье нам предстоит: настроить ssh доступ, создать базу данных для нашего сайта, поставить Drupal, создать базовый конфиг для apache.

Содержание

Настройка ssh доступа

Первым делом нам нужно настроить ssh соединение, чтобы было удобно и комфортно работать с виртуальной машиной. Можно работать и через консоль виртуальной машины, но лично мне удобно использовать PuTTY (ssh клиент), т.к. помимо доступа по ssh есть поддержка копирования/вставки с помощью CTRL + C и правой кнопки мыши – очень удобно не набирать все вручную при установке различных пакетов.
Также нам потребуется PuTTYgen (генерация приватного ключа в .ppk формате) и WinSCP.

WinSCP - это графический клиент SFTP (SSH File Transfer Protocol) для Windows с открытым исходным кодом. Он также поддерживает [устаревший] протокол SCP (Secure Copy Protocol). Предназначен для защищённого копирования файлов между компьютером и серверами, поддерживающими эти протоколы.

Скачать WinSCP, PuTTY и PuTTYgen можно по ссылкам:

После установки WinSCP, создаем новое соединение. Указываем ip-адрес виртуальной машины (его можно узнать в консоли виртуалки с помощью команды ifconfig).
virtualbox-ifconfig.png
Жмем кнопку Сохранить, а затем Логин. При коннекте будет запрошен пароль от созданного Вами юзера. После подключения появится предупреждение о добавлении host ключа в кэш.
connection-warning-1.png
Жмем Да. Затем нажимаем на иконку запуска PuTTY putty.png - должна появиться ошибка, свидетельствующая о том, что exe файл PuTTY не найден по такому-то адресу. Просто копируем exe файл в директорию, которая указана в сообщении об ошибке (в моем случае C:\Program Files (x86)\PuTTY\putty.exe).
putty_error.png
После создания папки PuTTY на диске С:\ и размещения файла в ней, при повторном вызове консоли putty.png будет выведено предупреждение о добавлении host ключа в кэш PuTTY. Жмем Да.
connection-warning-2.png
После ввода пароля вы будете находиться в домашней директории. Теперь необходимо сгенерировать ssh ключи. Выполняем следующую команду (в процессе создания можете оставлять все по умолчанию, т.е. на все вопросы жмем ENTER)

1
ssh-keygen -t rsa

После выполнения этой команды будут созданы 2 ключа в директории /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh - публичный (id_rsa.pub) и приватный (id_rsa). Через менеджер WinSCP переместите эти ключи в директорию Windows (ИМЯ_ПОЛЬЗОВАТЕЛЯ- имя Вашего текущего пользователя в Windows)

1
C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\.ssh\

Если папки .ssh нет - создайте ее. Затем в директории хранения ssh ключей на Windows (C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\.ssh\) открываем любым текстовым редактором ключ id_rsa.pub и копируем его содержимое с помощью CTRL + C.
Возвращаемся в консоль PuTTY, заходим в папку .ssh и выполняем команду редактирования (одновременно и создания, т.к. данный файл еще не существует) файла authorized_keys.

1
2
cd /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh
nano  authorized_keys

С помощью правой кнопки мыши (вставка скопированных данных из буфера обмена) вставляем наш публичный ключ.
ВАЖНО! Ключ должен быть вставлен в одну строку без переносов, иначе возникнут проблемы с коннектом.
Выход из режима редактирования (CTRL + X) запросит подтвердить изменения, жмете Y и ENTER.
Теперь проверим наш доступ по ssh ключу. Закрываем PuTTY и WinSCP.
Для WinSCP потребуется сгенерировать ключ .ppk (PuTTY private key). Воспользуемся утилитой PuTTYgen. Запускаем программку, по кнопке Load загружаем приватный ключ (id_rsa) и жмем на кнопку Save private key. Ключ .ppk сохраняем в той же директории, где у нас хранятся остальные ключи.
Запускаем SFTP менеджер снова, жмем на кнопку Edit, идем в настройке соединения Advanced → SSH → Authentication, указываем путь до приватного ключа .ppk и логинимся.
Если Вы все сделали правильно, Вы залогинитесь в WinSCP, а затем и в консоль PuTTY без запроса пароля.

Создание статического ip-адреса

По умолчанию формирование ip-адреса для виртуальной машины происходит динамически, т.е. нужно будет периодически корректировать айпишник в настройках WinSCP для Вашего соединения. Чтобы избежать этого, нужно настроить статический ip-адрес и определиться с его диапазоном.

В локальных сетях, основанных на протоколе IPv4, могут использоваться специальные адреса, назначенные IANA (стандарты RFC 1918 и RFC 1597):

  • 10.0.0.0—10.255.255.255;
  • 172.16.0.0—172.31.255.255;
  • 192.168.0.1—192.168.255.255.

Для нашей сети вполне подойдет адрес в диапазоне 192.168.0.1 — 192.168.0.255 с маской 255.255.255.0. Для этого необходимо внести изменения в файл interfaces, расположений по адресу /etc/network/interfaces

1
sudo nano /etc/network/interfaces

Создаем дополнительный интерфейс

1
2
3
4
5
# Custom interface
auto eth0:0
iface eth0:0 inet static
address 192.168.0.200
netmask 255.255.255.0

Далее перезапускаем сетевую службу, чтобы изменения вступили в силу

1
sudo /etc/init.d/networking restart

и проверяем, что настройки подхватились с помощью команды ifconfig
static-ip-address.png
Изменяем ip-адрес в настройках WinSCP соединения на созданный статический (192.168.0.200) и больше к нему не возвращаемся.

Установка сайта

Для начала нам необходимо создать папку для сайта, например devsite. Папка сайта будет располагаться по адресу /var/www/devsite.
Для перехода в нужную директорию используем команду cd и создаем нашу папку.

1
2
cd /var/www/
sudo mkdir devsite

Скачиваем последнию версию друпал, используя drush

1
drush dl

Переименовываем папку drupal-7.34 в src.

1
sudo mv drupal-7.34 src

Я намерено не располагаю файлы сайта непосредственно в директории devsite, т.к. по моему личному опыту зачастую впоследствии требуется создавать дампы базы (файлов). Очень удобно их хранить в директории сайта в определенной папке, например в backup, т.е. дерево папок выглядит примерно таким образом:

  • devsite/src - здесь все файлы сайта
  • devsite/backup - сюда складываем дампы базы и файлов.

Директорию мы подготовили, теперь займемся базой.

1
mysql -u ИМЯ_ПОЛЬЗОВАТЕЛЯ -p

Жмем Enter, вводим пароль и создаем базу данных

1
CREATE DATABASE devsite;

Для выхода из редактора запросов mysql нажмите CTRL+C.

Конфигурирование сайта

Переходим в директорию /etc/apache2/sites-available. В ней уже находится дефолтный конфиг default. Создаем собственный.

1
sudo nano devsite

и вставляем следующие настройки с помощью CTRL+C/прав.кнопка мыши.

1
2
3
4
5
6
7
<VirtualHost *:80>
    ServerName devsite
    ServerAlias www.devsite
    DocumentRoot /var/www/devsite/src
    ErrorLog ${APACHE_LOG_DIR}/devsite.error.log
    CustomLog ${APACHE_LOG_DIR}/devsite.access.log combined
</VirtualHost>

Это минимальный конфиг, который позволит запустить наш сайт. Далее чтобы сайт был виден апачу, необходимо включить его, т.е. создать символическую ссылку в директории /etc/apache2/sites-enabled.

1
2
cd /etc/apache2/sites-enabled
ln -s /etc/apache2/sites-available/devsite devsite

Для применения настроек перезапускаем apache.

1
sudo service apache2 restart

Если все ок, apache перезапуститься без ошибок. Также не забудьте внести правки в Ваш виндовый файлик hosts (находится по адресу C:\Windows\System32\drivers\etc\hosts), чтобы Ваш сайт был виден из под windows.
Формат записи ip-адресс_виртуалки домен_вашего_сайта, т.е. например

1
192.168.0.200  devsite

Сохраняем изменения и переходим по урлу devsite/install.php - для тех, кто предпочитает устанавливать сайт через интерфейс, или с помощью drush (предварительно внесите изменения в Ваш settings.php касательно базы данных, имени пользователя и пароля)

1
drush si --db-url=mysql://root:pass@localhost:port/ИМЯ_БД --account-pass=ПАРОЛЬ --account-name=admin --site-name=DEV_SITE -y

В следующей статье речь пойдет о том, как все это связать с PHPStorm, а также как настроить дебаггер X-Debug.

5 Comments

Аватар пользователя Вовчик

Потрясающая серия!!! Большое

Потрясающая серия!!! Большое спасибо!

Пара дополнений для таких же новичков, как я.

ВАЖНО! Ключ должен быть вставлен в одну строку без переносов, иначе возникнут проблемы с коннектом.

Т.е. поменять перенос строки на пробел: "ssh-rsa ключччччччччч"

Запускаем SFTP менеджер снова, жмем на кнопку Edit, идем в настройке соединения Advanced → SSH → Authentication

Не сразу нашел это Advanced, оказалось это "Еще":
скрин1
скрин2

Создание статического ip-адреса

Для Ubuntu server 15.10 не получилось. Получилось так:

1
2
3
4
5
6
# The loopback network interface
auto lo
iface lo inet loopback
iface enp0s3 inet static
        address 192.168.0.200
        netmask 255.255.255.0

при этом так понял, что этот способ не добавляет интерфейс, а делает статическим ip основного

Переходим в директорию /etc/apache2/sites-available. В ней уже находится дефолтный конфиг default. Создаем собственный.
sudo nano devsite

Без расширения в дальнейшем apache не подхватил, и по адресу http://devsite выдавал свою html. Поменял на devsite.conf - все ок.

ln -s /etc/apache2/sites-available/devsite devsite

Тут тоже sudo нужен (догадаться не сложно, но может добавить, чтоб проще при копировании было)

Аватар пользователя Вовчик

Только запостил, как сессия

Только запостил, как сессия закончилась и ip оказался не таким уж и статическим. Попытка №2:

1
2
3
4
5
6
7
8
9
# The primary network interface
auto enp0s3
iface enp0s3 inet static
address 192.168.0.200
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1
Аватар пользователя nightdevel

Благодарю за дополнения.

Благодарю за дополнения. Статья была написана для версии ubuntu 12.04 и, на тот момент, версия апача не требовала расширение .conf. В ближайшее время обязательно обновлю статью с вышеперечисленными заметками.

Аватар пользователя Вовчик

Через какое-то время

Через какое-то время получилось назвать интерфейсы как в статье. Но всякие network, broadcast, gateway и dns-nameservers все равно оставил, т.к. без кого-то из них не получается ставить модули и пакеты из интернета. А еще на работе оказалась какая-то не такая сеть, но разные сети прекрасно ужились. Короче вот такие настройки получились, месяц полет нормальный (другие компы, кстати, тоже могут заходить на сайт, очень удобно):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp
 
# Custom interface for home
auto enp0s3:0
iface enp0s3:0 inet static
address 192.168.0.200
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1
 
# Custom interface for work
auto enp0s3:1
iface enp0s3:1 inet static
address 192.168.1.200
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

Еще было бы классно узнать какой-нибудь конфиг для VirtualHost из жизни, например, при установке в 7-ке рекомендуется включить чистые ссылки, а в 8-ке так вообще это обязательное условие. У меня пока такие:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<VirtualHost *:80>
 
    ServerName devsite
    ServerAlias <a href="http://www.devsite
" rel="nofollow">www.devsite
</a>    DocumentRoot /var/www/devsite/src
    ErrorLog ${APACHE_LOG_DIR}/devsite.error.log
    CustomLog ${APACHE_LOG_DIR}/devsite.access.log combined
 
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
 
    <Directory /var/www/devsite/src>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
 
</VirtualHost>

вроде работают, но может есть получше?