Настройка suexec в Apache2 на Ubuntu 14.04

Механизм suexec позволяет выполнять CGI скрипты от имени разных пользователей системы. В этой статье я рассмотрю пример настройки suexec на базе Linux Ubuntu 14.04.

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

Для начала установим нужные пакеты:

apt-get install php5-cgi libapache2-mod-fcgid apache2-suexec apache2-suexec-custom -y

Включим модули

a2enmod fcgid  
a2enmod suexec

Теперь нужно указать, что все php файлы - это cgi скрипты и должны обрабатываться модулем fcgid

Есть два варианта

  1. отредактировать глобальный fcgid.conf
  2. отредактировать отдельной конфиг каждого сайта.

Я выбираю второй:

nano /etc/apache2/sites-enabled/**sitename.conf**

Следующая конструкция объявляет php файлы cgi скриптами:

<IfModule mod_mime.c>
  AddHandler     fcgid-script .php
  FCGIWrapper /usr/bin/php5-cgi .php
</IfModule>

В том же самом файле указываем от имени какого именно системного пользователя apache будет получать доступ к папкам и файлам сайта. В даном примере я указываю отдельный php.ini для каждого сайта:

<IfModule mod_suexec.c>
  FcgidInitialEnv PP_CUSTOM_PHP_INI /etc/php_conf.d/websitename_php.ini
  SuexecUserGroup "<strong>systemuser</strong>" "<strong>systemgroup</strong>"
</IfModule>

В остальном конфигурационный файл остается стандартным. Полный пример можно посмотреть по адресу:
Настройка сайтов в Apache2

Перезапускаем демон apache:

service apache2 restart

Разрешаем листинг каталога сайта:

chmod +x /var/www/**sitename.conf**

Делаем все php файлы исполняемыми:

find /var/www/**sitename.conf** -type f -name `*.php` -exec chmod +x {} \;