Теста ради решил несколько доменов поднять только на nginx и посмотреть как поменяется картинка на графиках загрузки сервера.
Как запустить nginx поверх apache было описано тут
Теперь начинаем прикручивать php к nginx через fastcgi.
для этого нам понадобится пакет spawn-fcgi
Итак, по порядку, сначала добавляем поддержку fastcgi в nginx:
echo "www-servers/nginx fastcgi ssl" >> /etc/portage/package.use/nginx
и пересобираем его
emerge -av nginx
теперь ставим spawn-cgi и php с поддержкой fastcgi:
echo www-servers/spawn-fcgi ~amd64 >> /etc/portage/package.keywords
echo dev-lang/php cgi force-cgi-redirect >> /etc/portage/package.use/php
emerge -av spawn-fcgi
emerge -av php
теперь расказываем spawn-cgi, что мы его пудем юзать совместно с php, для это создаем оттельный скрипт загрузки
ln -sf /etc/init.d/spawn-fcgi /etc/init.d/spawn-fcgi.php
ну и готовим для него конфиг на базе уже имеющегося:
cp /etc/conf.d/spawn-fcgi /etc/conf.d/spawn-fcgi.php
Внутри вносим небольшие изменения, чтоб враг не догадался:
ENABLE_SPAWNFCGI="yes"
## ABSOLUTE path to the spawn-fcgi binary
SPAWNFCGI="/usr/bin/spawn-fcgi"
## ABSOLUTE path to the PHP binary
FCGI_PROGRAM="/usr/bin/php-cgi"
## bind to tcp-port on localhost
FCGI_PORT="65532"
## number of PHP childs to spawn
PHP_FCGI_CHILDREN=5
## number of request server by a single php-process until is will be restarted
PHP_FCGI_MAX_REQUESTS=1000
## IP adresses where PHP should access server connections from
FCGI_WEB_SERVER_ADDRS="127.0.0.1"
# allowed environment variables sperated by spaces
ALLOWED_ENV="PATH USER"
# do NOT change line below
ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"
## if this script is run as root switch to the following user
USERID=nginx
GROUPID=nginx
Запускаем spawn-cgi
/etc/init.d/spawn-fcgi.php start
Если все прошло гладко, добавляем его в автозагрузку
rc-update add spawn-fcgi default
Теперь беремся за nginx. По сравнению с родным файлом там нужно добавить все несколько строк:
include /etc/nginx/fastcgi.conf;
fastcgi_pass 127.0.0.1:65532;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/путь/к/дому$fastcgi_script_name;
location / {
if (-f $request_filename) {
expires 30d;
break;
}
# this sends all non-existing file or directory requests to index.php
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
}
и пробуем поднятся
/etc/init.d/nginx restart
В файле fastcgi.conf можно прописать, что-то для себя, но и с дефолтными параметрами все работает.
Вродь ничего не пропустил 🙂