Установка apache и php на Debian

Установка apache и php на Debian

Определённые системы управления контентом не работают со связкой nginx и php-fpm, и требуют именно веб-сервера apache с модулем php. Чаще всего причина этого — необходимость использования модуля rewrite для работы сайта.

Установка apache и php на Debian

Одной командой установите базовые компоненты. Зависимости будут установлены автоматически.

# 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. Если да, то сервер успешно настроен и можно разместить сайт в предназначенном для него каталоге.

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

Leave a comment

    Send a Comment

    Ваш адрес email не будет опубликован.