Статьи

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

Порты Drupal доступны во FreeBSD довольно давно, и бинарные пакеты могут быть установлены очень быстро. Однако для подключения Drupal к базе данных требуется ручная настройка, и Apache обслуживает веб-сайт Drupal. В этом посте я опишу процедуру установки Drupal 7 на FreeBSD 10.0. Процесс не будет сильно отличаться, если будут использоваться разные версии Drupal или FreeBSD.

Установка Drupal

Порты Drupal доступны во FreeBSD, и на самом деле доступно несколько версий:

1
2
3
4
5
# pkg search drupal
drupal6-6.31
[...snip...]
drupal7-7.31
[...snip...]

Если нет веских причин не делать этого, установите последнюю версию:

1
# pkg install drupal7

Чтобы успешно запустить Drupal, вам необходимо:

  • HTTP-сервер Apache.
  • PHP.
  • Поддерживаемый сервер базы данных (PostgreSQL или MySQL).

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

Установка HTTP-сервера Apache

Если нет веских причин не делать этого, установите последний доступный порт Apache (apache24 на момент написания):

1
# pkg install apache24

После установки порта включите соответствующую службу, добавив следующую строку в /etc/rc.conf:

1
apache24_enable="YES"

Установка базы данных

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

Поскольку порт Drupal по умолчанию определяет опцию MYSQL, при установке бинарного пакета с помощью pkg вы также получите клиентский порт MySQL, например, тот, который я получил во время написания:

1
mysql55-client-5.5.40

Как следствие, вы должны установить соответствующий порт mysqlXX-сервера:

1
# pkg install mysql55-server-5.5.40

Если вы попытаетесь установить другую версию (на момент написания статьи mysql56 доступен), вас могут попросить удалить сам Drupal из-за взаимозависимостей между клиентскими и серверными пакетами MySQL.

После установки MySQL включите соответствующий сервис, добавив следующую строку в /etc/rc.conf:

1
mysql_enable="YES"

Установка PHP

Об установке PHP заботится порт Drupal. Однако модуль PHP для HTTP-сервера Apache не установлен и должен быть установлен вручную. Убедитесь, что вы установили модуль PHP, соответствующий версии PHP, установленной портом Drupal. На момент написания доступны следующие модули:

1
2
3
4
# pkg search mod_php
mod_php5-5.4.33_1,1
mod_php55-5.5.17_1
mod_php56-5.6.1

Поскольку порт зависит от php5, необходимо установить mod_php5-5.4.33_1,1:

1
# pkg install mod_php5-5.4.33_1,1

Порт заботится об изменении файла конфигурации Apache HTTP Server, чтобы загружался модуль PHP. Если вы не установили пакеты в порядке, предложенном в этом сообщении, возможно, вы потеряли этот фрагмент конфигурации. В любом случае, убедитесь, что в /usr/local/etc/apache24/httpd.conf присутствует строка, подобная следующей:

1
LoadModule php5_module        libexec/apache24/libphp5.so

Установка дрэша

drush — это дополнительный пакет, предлагающий удивительно хороший интерфейс командной строки для выполнения многих задач управления, связанных с Drupal:
drush может даже использоваться для установки Drupal, но эта тема не рассматривается в этом посте, так как я предпочитаю полагаться на порт, протестированный специально на FreeBSD. Однако, после того, как вы проверили, что конкретный выпуск работает правильно, вы можете найти, что drush очень полезен для оптимизации ваших установок. Если вы заинтересованы в использовании drush, вы найдете много полезной информации в Интернете. Для установки drush может использоваться следующая команда:

1
# pkg install drush

Создание базы данных для Drupal

База данных для Drupal должна быть создана на сервере БД, установленном в предыдущем разделе. Порт MySQL не устанавливает пароль для пользователя root, подключающегося с localhost; по этой причине рекомендуется установить его пароль ( полужирный текст, введенный пользователем):

1
2
3
4
5
6
# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
[...snip...]
mysql> set password for root@localhost=PASSWORD('your-password')
mysql> exit
Bye

После того, как пароль установлен, вы можете попытаться восстановить соединение ( курсивом, выделенным жирным шрифтом, переменные, имена которых должны быть изменены с вашими выбранными значениями):

1
2
3
4
5
6
7
8
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
[...snip...]
mysql> create database drupal_database_name;
mysql> create user 'drupal_user'@'localhost' identified by 'password';
mysql> grant all privileges on drupal_database_name.* to 'drupal_user'@'localhost' with grant option;
mysql> flush privileges;

Настройка HTTP-сервера Apache

Теперь, когда все готово, мы можем настроить веб-сервер так, чтобы он начал обслуживать веб-приложение Drupal. Задачи для выполнения следующие

  • Настройка необходимых модулей.
  • Настройка виртуального хоста для обслуживания Drupal.
  • Настройка MIME / типа для PHP.

Модули, необходимые для запуска Drupal, — это mod_rewrite и модуль PHP. Последний был сконфигурирован автоматически портом модуля PHP, и последний может быть настроен, раскомментировав следующую строку из /usr/local/etc/apache24/httpd.conf:

1
LoadModule rewrite_module libexec/apache24/mod_rewrite.so

Самый чистый способ отделить конфигурацию Drupal — создать для нее виртуальный хост . Дополнительным преимуществом этого подхода является то, что Drupal будет обслуживаться из корневого пути (/), и вам не нужно будет использовать какое-либо правило перезаписи для достижения того же результата. Предполагая, что имя хоста и порт, на котором будет опубликован Drupal, — это drupal.host.name:80, затем создайте файл в / usr / local / etc / apache24 / Включите файл с именем drupal.conf и определите каркас виртуального хоста:

1
2
3
4
5
6
7
8
9
<VirtualHost *:80>
  ServerName drupal.host.name
 
  # Drupal directory configuration placeholder
   
  ErrorLog ${APACHE_LOG_DIR}/drupal-error.log
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/drupal-access.log combined
</VirtualHost>

В конфигурации Apache по умолчанию во FreeBSD любой файл .conf в этом каталоге включается автоматически, поэтому для добавления виртуального хоста в конфигурацию веб-сервера никакого дополнительного кода не требуется. В этом фрагменте я использовал переменную среды ($ {APACHE_LOG_DIR}), чтобы отделить некоторые переменные конфигурации сервера, которые могут быть повторно использованы во внешних сценариях. Для определения переменных среды необходимо создать файл .env в /usr/local/etc/apache24/envvars.d, например:

Фрагмент каталога Drupal определяет DocumentRoot виртуального хоста и некоторые обязательные опции:

1
2
3
4
5
6
DocumentRoot /usr/local/www/drupal7
<Directory "/usr/local/www/drupal7">
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

Параметр AllowOverride, установленный на All, необходим для того, чтобы файлы .htaccess, поставляемые с Drupal, учитывались HTTP-сервером Apache. В этом фрагменте используется путь к каталогу установки Drupal порта FreeBSD. Если вы установили Drupal, используя альтернативные методы (например, drush), обновите путь соответствующим образом.

Полный файл конфигурации виртуального хоста:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<virtualhost *:80="">
  ServerName drupal.host.name
 
  DocumentRoot /usr/local/www/drupal7
  <directory "="" usr="" local="" www="" drupal7"="">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
  </directory>
 
  ErrorLog ${APACHE_LOG_DIR}/drupal-error.log
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/drupal-access.log combined
</virtualhost>

Наконец, HTTP-сервер Apache должен получить команду на выполнение кода PHP, содержащегося на страницах PHP, и для этого нам необходимо добавить MIME / тип для них, добавив следующую строку в httpd.conf:

1
2
3
4
5
6
7
8
<IfModule mime_module>
 
  # Content has been trimmed
 
  # Add MIME type for PHP
  AddType application/x-httpd-php .php
 
</IfModule>

Как только все настройки будут установлены, Apache может быть перезапущен, и вы можете указать вашему браузеру http://drupal.host.name/, где мастер установки Drupal приветствует вас и потребует от вас ввести конфигурацию базы данных и другой веб-сайт Drupal. настройки.

Чтобы перезапустить HTTP-сервер Apache, можно использовать следующую команду:

1
# service apache24 restart

Настройка Drupal за прокси-сервером

Машины, подключающиеся к корпоративной сети, часто не подключаются напрямую к Интернету, а вместо этого требуют использования веб-прокси-сервера. Drupal можно настроить на использование веб-прокси-сервера, задав следующие переменные в $ {DRUPAL_HOME} /sites/default/settings.php. Если этот файл не существует, скопируйте файл default.settings.php (поставляется с Drupal) в settings.php. Переменная конфигурации, которая включает поддержку прокси, является следующей:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
/**
 * External access proxy settings:
 *
 * If your site must access the Internet via a web proxy then you can enter
 * the proxy settings here. Currently only basic authentication is supported
 * by using the username and password variables. The proxy_user_agent variable
 * can be set to NULL for proxies that require no User-Agent header or to a
 * non-empty string for proxies that limit requests to a specific agent. The
 * proxy_exceptions variable is an array of host names to be accessed directly,
 * not via proxy.
 */
$conf['proxy_server'] = 'web-proxy';
$conf['proxy_port'] = 3128;
# $conf['proxy_username'] = '';
# $conf['proxy_password'] = '';
# $conf['proxy_user_agent'] = '';
# $conf['proxy_exceptions'] = array('127.0.0.1', 'localhost');

В зависимости от настроек прокси-сервера могут использоваться разные значения.

Помните, что хотя сам Drupal (Core) поддерживает прокси, многие сторонние модули все еще не поддерживают его. Одним заметным исключением на момент написания статьи является модуль reCaptcha, который не будет работать без прямого подключения к Интернету.

Настройка чистых URL

Наконец, что не менее важно, поддержка чистых URL-адресов может быть включена. Drupal выполняет проверку работоспособности и не позволит вам включить функцию очистки URL-адресов, если тест не пройден. Тем не менее, я обнаружил множество ложных недостатков при запуске Drupal 7 во FreeBSD: если тест Чистых URL не удался в вашей установке, попробуйте проверить, работают ли чистые URL, и использовать обходной путь, описанный в официальной документации Drupal, и принудительно включить Чистые URL.

Ссылка: Установка Drupal на FreeBSD от нашего партнера по JCG Энрико Кризостомо в блоге The Grey Blog .