Настройка 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
Есть два варианта
- отредактировать глобальный
fcgid.conf
- отредактировать отдельной конфиг каждого сайта.
Я выбираю второй:
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 {} \;