Определённые системы управления контентом не работают со связкой nginx и php-fpm, и требуют именно веб-сервера apache с модулем php. Чаще всего причина этого — необходимость использования модуля rewrite для работы сайта.
Одной командой установите базовые компоненты. Зависимости будут установлены автоматически.
# aptitude install apache2-mpm-itk libapache2-mod-php5 php5-curl php5-mysqlnd php5-gd
Содержание статьи:
- 1 Настраиваем apache
- 2 Создание виртуального хоста
- 3 Тестирование настроенной связки
Настраиваем apache
Первым делом включите mod_rewrite. Он обязательно понадобится, если ваш сайт будет использовать ЧПУ.
# a2enmod rewrite
Включать mod_php не потребуется, поскольку при установке он будет включён автоматически.
Также я рекомендую отключить следующие модули, если они вам не нужны:
# a2dismod -f autoindex deflate setenvif status
Это позволит вам сократить расход памяти.
Откройте файл /etc/apache2/conf-available/charset.conf и раскомментируйте следующую строку:
AddDefaultCharset UTF-8
Данная директива указывает, что кодировкой по-умолчанию будет UTF-8. Если ваши сайты используют другую кодировку, например, CP-1251, то необходимо указать её либо тут же, либо в параметрах виртуального хоста.
Сохраните изменения.
Откройте файл /etc/apache2/conf-available/security.conf и преобразуйте строку ServerTokens OS
в ServerTokens Prod
. Это скроет версию apache для клиентов.
Строку ServerSignature On
преобразуйте в ServerSignature Off
.
Сохраните изменения.
Откройте для редактирования файл /etc/apache2/apache2.conf и найдите параметр KeepAlive On
. Если после настройки apache вы установите nginx и будете проксировать от него запросы, то этот параметр нужно преобразовать в KeepAlive Off
, поскольку эту функцию (поддержание соединения с клиентом) будет выполнять nginx. Если вы планируете использовать apache в качестве основного веб-сервера, эту функцию следует настроить.
MaxKeepAliveRequests
— максимальное количество запросов на поддержание постоянного соединения. Для большей производительности рекомендуется установить высокое значение. Для начала подойдёт значение по-умолчанию — 100.
KeepAliveTimeout
— время в секундах для ожидания следующего запроса от того же самого клиента.
Сохраните изменения и перезапустите apache.
Откройте файл /etc/apache2/mods-available/mpm_prefork.conf.
Параметры в этом файле следует указывать в зависимости от посещаемости сайта и ресурсов сервера. Для начала попробуйте запустить сайт с минимальной конфигурацией и понаблюдать за его работой. Если окажется, что ресурсов недостаточно, увеличьте их.
Приведите значения по-умолчанию к такому виду:
StartServers 2 MinSpareServers 2 MaxSpareServers 6 MaxRequestWorkers 32 MaxConnectionsPerChild 0
StartServers
— количество дочерних процессов сервера, создаваемых при запуске.
MinSpareServers
— минимальное количество простаивающих процессов.
MaxSpareServers
— максимальное количество простаивающих процессов.
MaxRequestWorkers
— максимальное количество соединений, которые будут обрабатываться одновременно.
MaxConnectionsPerChild
— максимальное количество соединений, обработав которые, дочерний процесс будет завершён. Может быть полезен в борьбе с утечками памяти.
Также сохраните изменения и перезапустите apache: service apache2 restart.
Создание виртуального хоста
Виртуальным хостом называется группа конфигурационных параметров для определённого сайта. Она включает в себя обслуживаемый домен, email администратора, пути к лог-файлам, подключение обработчиков php и т.д.
Мне нравится размещать конфигурации виртуальных хостов в одном файле — apache2.conf. Если потребуется массово заменить какое-то значение для всех сайтов, то не нужно будет открывать поочерёдно все конфигурационные файлы виртуальных хостов.
В первую очередь отключите default site.
# a2dissite 000-default
В конце файла /etc/apache2/apache2.conf пропишите следующую директиву:
В этой директиве группируются все параметры сайта. Именно она является виртуальным хостом. Следующие параметры прописываем внутри этой директивы.
ServerName
— ваш домен без www. (Например, example.com.)
ServerAlias
— домен с www (www.example.com)
DocumentRoot
— каталог, где располагаются файлы вашего сайта. Например, /var/www/.
ServerAdmin
— email администратора сайта.
ErrorLog
— местоположение лог-файла ошибок. Как правило, они располагаются в каталоге /var/log/apache2/. Для него служит алиас ${APACHE_LOG_DIR}. Пример:
ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
LogLevel warn
. Ничего не меняем, прописываем так. Задаёт уровень логирования ошибок.
CustomLog
— Расположение и тип access-лога сайта. По-умолчанию тип — combined. Хотя существуют и другие типы. Пример:
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
В обоих примерах example.com заменяем на ваш домен без www.
Добавляем настройки для mpm-itk, поскольку произвели установку именно этого модуля. Что он даёт? Позволяет обрабатывать php-скрипты от имени пользователя — владельца сайта.
AssignUserId user group
Здесь нужно заменить user на имя пользователя и group на имя группы, в чьей домашней папке размещены сайты.
Определяем настройки для директорий.
Options +FollowSymLinks AllowOverride None Require all granted Options -Indexes +FollowSymLinks AllowOverride All Order allow,deny allow from all
Директорию /var/www замените на ту, где размещены ваши сайты.
Подключаем обработчик php-скриптов.
php_admin_flag engine on php_admin_value open_basedir "/var/www:/tmp/sessions:/tmp/upload_tmp" php_admin_value upload_tmp_dir /tmp/sessions php_admin_value session.safe_path /tmp/upload_tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -fmail@example.com"
open_basedir
в качестве значения указываем через двоеточие каталоги, куда php будет иметь доступ: каталог с сайтом, каталог для хранения файлов сессий, каталог для загрузки временных файлов.
upload_tmp_dir
— каталог для хранения временных файлов. Когда вы загружаете картинку (или что-то ещё) на сайт, загруженный файл сначала помещается в этот каталог, а затем в конечное местоположение.
session.safe_path
— каталог для хранения сессий.
Из соображений безопасности, эти два каталога не следует держать в общедоступном месте. Создайте их в домашнем каталоге пользователя, где размещаются ваши сайты. Разрешите доступ к ним только этому пользователю (права 0750).
sendmail_path
— путь к sendmail и параметры. Как правило, sendmail располагается в каталоге /usr/sbin. После параметра -f следует указать email, не разделяя пробелом.
Сохраняем конфигурационный файл apache2.conf, перезапускаем apache:
service apache2 restart
Тестирование настроенной связки
В каталоге сайта создайте файл index.php. Пропишите в нём код:
После чего откройте ваш сайт в браузере и посмотрите, отображается ли информация о php. Если да, то сервер успешно настроен и можно разместить сайт в предназначенном для него каталоге.
В ином случае следует проанализировать логи ошибок, проверить настройки в конфигурационных файлах.