1) Ставим апач + php + suexec + остальные модули одной строкой
apt-get install apache2 apache2-suexec libapache2-mod-fcgid php5-cgi
При этом все папки с пользователями, из под которых запускаются сайты, должны будут находиться в var/www
, а публичные папки с сайтами должны иметь имена public_html
. Если же мы хотим кастомные директории, нужно ставить apache2-suexec-custom
вместо apache2-suexec
, и потом редактировать его конфиг файл.
2) Включаем модули:
a2enmod rewrite
a2enmod suexec
a2enmod include
a2enmod fcgid
3) затем добавляем юзера с указанием домашней директории
sudo useradd -d /var/www/testuser -m testuser
устанавливаем пароль
sudo passwd testuser
4) в папке пользователя создаем структуру папок веб-вервера:
pulbic_html
fastcgi-bin
logs
TODO: написать про (chmod 644
и chown
)
5) В папке fastcgi-bin
создаем файл с именем php.cgi.wrapper
со следующим содержимым:
#!/bin/sh
#PHPRC="/usr/local/etc"
#export PHPRC
#PHP_FCGI_CHILDREN=8
#export PHP_FCGI_CHILDREN
#PHP_FCGI_MAX_REQUESTS=5000
#export PHP_FCGI_MAX_REQUESTS
exec /usr/lib/cgi-bin/php5
6) В папке /etc/apache2/sites-available/
cоздаем файл testsite
:
<VirtualHost *:80>
SuexecUserGroup testuser testuser
ServerAdmin webmaster@localhost
DocumentRoot /var/www/testuser/public_html
ServerName testuser.testuser.ru
ServerAlias testsite
<IfModule mod_fcgid.c>
<Directory /var/www/testuser/public_html>
Options -Indexes FollowSymLinks +ExecCGI
AllowOverride None
AddHandler fcgid-script .php
FcgidWrapper /var/www/testuser/fastcgi-bin/php.cgi.wrapper .php
Order allow,deny
allow from all
</Directory>
</IfModule>
ErrorLog /var/www/testuser/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/www/testuser/logs/access.log combined
</VirtualHost>
7) a2ensite testsite
8) перезапустить апач
service apache2 reload
apachectl restart
9) Проверка, в папке /var/log/apache2/suexec.log
должны появиться следующие записи:
[2011-09-09 02:51:46]: info: (target/actual) uid: (testuser/testuser) gid:(testuser/testuser) cmd: php.cgi.wrapper