Размещение нескольких сайтов Drupal на сервере Ubuntu 12.04

Drupal – это популярная система управления контентом (CMS), позволяющая быстро разворачивать вееб-сайты на дружественном фреймворке.

Это руководство расскажет, как развернуть несколько сайтов на одной установке Drupal, включая установку последней доступной версии Drupal, создание двух сайтов и настройку их поддержки на одной установке Drupal.

Установка зависимостей Drupal

Для корректной работы Drupal требуется предварительно установленный стек LAMP. Все эти программы можно установить при помощи следующей команды:

sudo apt-get update
sudo apt-get install apache2 mysql-server libapache2-mod-auth-mysql php5-mysql php5 libapache2-mod-php5 php5-mcrypt php5-gd

Инсталлятор предложит создать и подтвердит пароль администратора MySQL.

Настройте приоритетность файлов .php выше файлов .html:

sudo nano /etc/apache2/mods-enabled/dir.conf

Добавьте параметр index.php сразу после DirectoryIndex:

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Чтобы новые настройки вступили в силу, перезапустите Apache:

sudo service apache2 restart

Настройка MySQL

Теперь можно предварительно инициализировать базу данных и заблокировать некоторые небезопасные настройки, набрав:

sudo mysql_install_db && sudo mysql_secure_installation

Будет запрошен ранее установленный пароль администратора.

После этого программа задаст несколько вопросов. Нажмите Enter, чтобы ответить yes на все вопросы.

Откройте MySQL:

mysql -u root -p

На экране появится командная строка MySQL. Создайте БД для каждого сайта при помощи команд:

CREATE DATABASE firstsite;
CREATE DATABASE secondsite;

Затем создайте пользователя и пароль для каждого сайта. Также нужно передать права на базу данных соответствующему пользователю:

GRANT ALL ON firstsite.* TO firstuser@localhost IDENTIFIED BY 'firstpassword';
GRANT ALL ON secondsite.* TO seconduser@localhost IDENTIFIED BY 'secondpassword';

Активируйте изменения и закройте окружение MySQL при помощи команд:

FLUSH PRIVILEGES;
exit

Загрузка и настройка Drupal

Теперь нужно загрузить исходники Drupal из репозиториев проекта в домашний каталог:

cd ~
wget http://ftp.drupal.org/files/projects/drupal-7.23.tar.gz

Извлеките файлы и переместите их в root-каталог веб-сервера (в данном руководстве все извлечённые файлы хранятся в каталоге drupal):

tar xzvf drupal-7.23.tar.gz
sudo mv drupal-7.23 /var/www/drupal

Теперь скопируйте стандартные настройки в новый файл:

cd /var/www/drupal/sites
cp default/default.settings.php default/settings.php

Во время установки Drupal должен иметь право на запись в этом каталоге и файлах. Чтобы передать право на запись, используйте:

sudo chmod -R a+rw default

Теперь нужно определиться, как именно будут обслуживаться сайты: из поддоменов или подкаталогов. Выберите соответствующий раздел руководства.

Обслуживание нескольких сайтов с помощью подкаталогов

Drupal может обслуживать сайты из подкаталогов с общим доменом. К примеру, на сервере будут сайты example.com/site1 и example.com/site2 с разным контентом, темами, настройками.

Как Drupal соотносит запросы с каталогами?

Для начала нужно понять, как Drupal при помощи структуры каталога sites определяет, для какого из доменов предназначены поступающие запросы.

Каталог default подробно описывает эту функцию. Он содержит стандартный контент, который обслуживается в том случае, если запрашиваемый контент не найден.

Создайте отдельный подкаталог для каждого из сайтов; для этого нужно просто указать главный домен без префикса www, за ним поставить точку вместо слеша, а затем указать имя подкаталога.

К примеру, если ссылка на сайт выглядит так:

http://www.example.com/firstsite

то подкаталог этого сайта будет называться example.com.firstsite.

Создание каталогов

Скопируйте стандартный каталог, настроенный ранее, в два каталога в /var/www/drupal/sites.

Используйте флаг –а, чтобы сохранить права на копируемый каталог и для его копий.

cp -a default example.com.firstsite
cp -a default example.com.secondsite

Итак, теперь на сервере есть 2 каталога для сайтов. Теперь нужно настроить Drupal для сортировки трафика Apache.

Для этого создайте символьные ссылки на root-каталог Drupal из root-каталога Apache для каждого из сайтов.

sudo ln -s /var/www/drupal /var/www/firstsite
sudo ln -s /var/www/drupal /var/www/secondsite

Теперь настройте сайты Drupal, перейдя по ссылке:

http://www.example.com/firstsite
http://www.example.com/secondsite

Не забудьте указать информацию об отдельных базах данных.

Обслуживание сайтов с разными доменами

Если у вас есть два разных домена, вам нужно немного изменить инструкции предыдущего раздела: просто назовите подкаталоги сайтов соответствующими доменами, а затем отредактируйте виртуальные хосты.

Для примера в разделе используются условные доменные имена firstsite.com и secondsite.com.

Откройте каталог Drupal и скопируйте default в каталоги firstsite.com и secondsite.com. Помните: префикс www при этом не используется.

cd /var/www/drupal/sites
cp -a default firstsite.com
cp -a default secondsite.com

Настройка виртуальных хостов

Теперь нужно настроить Apache для передачи соответствующих запросов Drupal. Для этого откройте файл виртуального хоста.

cd /etc/apache2/sites-available
sudo nano drupal

Направьте доменные имена на папку drupal в root-каталоге веб-сервера. Используйте следующий формат:

<VirtualHost *:80>
DocumentRoot /var/www/drupal
ServerName www.firstsite.com
ServerAlias firstsite.com *.firstsite.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/drupal
ServerName www.secondsite.com
ServerAlias secondsite.com *.secondsite.com
</VirtualHost>

Сохраните и закройте файл.

Включите новые конфигурации, набрав:

sudo a2ensite drupal

Перезапустите веб-сервер:

sudo service apache2 restart

Теперь настройка сайтов доступна в браузере (если всё выполнено верно):

www.firstsite.com
www.secondsite.com

Обслуживание нескольких сайтов при помощи поддоменов

Использование поддоменов одного (порождающего) домена – ещё один способ обслуживания нескольких сайтов на одном сервере.

К примеру, один сайт находится по имени first.example.com, а второй – по second.example.com.

Создайте соответствующие каталоги для каждого сайта:

cd /var/www/drupal
cp -a default first.example.com
cp -a default second.example.com

Создайте файл виртуального хоста Apache, чтобы направить базовый домен на подкаталог drupal root-каталога веб-сервера.

cd /etc/apache2/sites-available
sudo nano drupal

Поместите в файл следующий код:

<VirtualHost *:80>
DocumentRoot /var/www/drupal
ServerName www.example.com
ServerAlias example.com *.example.com
</VirtualHost>

Сохраните и закройте файл.

Включите новый сайт:

sudo a2ensite drupal

Обновите настройки веб-сервера:

sudo service apache2 restart

Теперь сайты доступны для настройки в браузере.

first.example.com
second.example.com

Заключение

Как видите, Drupal предоставляет достаточно много способов размещения нескольких сайтов на одной установке, благодаря чему каждый пользователь может выбрать наиболее удобную настройку. Drupal – гибкое решение для размещения и поддержки нескольких сайтов на одном сервере.

Tags: , , ,

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