пятница, 25 апреля 2008 г.

FastCGI External server - что и как

В свое время, переводя ряд проектов под FastCGI решали задачу, как многочисленные external fastcgi сервера связать с вебниками.
Для nginx'a есть вменяемый мануальчик, по которому все делается и работает. Выглядит это так:
server {
listen 127.0.0.1:80;
server_name mysite.ru;
root /var/home/www/;
index index.php;
location ~ .php$ {
fastcgi_pass unix:/var/home/www/php.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/home/www/$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /var/home/www/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_SOFTWARE "nginx/0.3.15";
fastcgi_param GATEWAY_INTERFACE "CGI/1.1";
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_connect_timeout 360;
fastcgi_send_timeout 360;
fastcgi_read_timeout 360;
include /usr/local/etc/nginx/fastcgi_params;

}

}


А вот для апача однозначного мануала по работе с fastcgi external не нашлось. Методом проб и - гм - ошибок была сделана вот такая вот конфа:

httpd.conf:

AddType application/x-httpd-fastphp .php

httpd-vhost.conf:


ServerAdmin admin@mysite.ru
ServerName mysite.ru
ServerAlias www.mysite.ru
DocumentRoot "/var/home/www"
ErrorLog /var/log/httpd-mysite-error.log
CustomLog /var/log/httpd-mysite-access.log common
FastCgiExternalServer /var/home/www/php.socket_notfound -socket /var/home/www/php.socket
ScriptAlias /php-fastcgi /var/home/www

Options -Indexes FollowSymLinks -MultiViews
AllowOverride All
Order allow,deny
Allow from all


SetHandler fastcgi-script
Allow from all

Action application/x-httpd-fastphp /php-fastcgi/php.socket_notfound



Как ни странно, эта конфигурация позволяет обозначать свой external server для каждого vhost'а :) Однако относятся обе конфигурации только к ситуации, когда fastcgi external выступает php. Для ряда приложений, отличных от php-интерпретатора, конфигурации в обоих случаях будут несколько иными.

Комментариев нет: