Sektionen
Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support Dokumentation docs Roundcube per FastCGI mit Nginx unter Debian

Roundcube per FastCGI mit Nginx unter Debian

Erichtung des Webmailers Roundcube, zusammen mit dem Webserver Nginx und FastCGI auf einem Debian System.

Die Einrichtung bezieht sich auf folgende Debianpaketversionen:

  • nginx 0.6.32-3+lenny3
  • roundcube 0.3.1-3
aptitude install roundcube roundcube-sqlite nginx

Die Datei "fastcgi_params" wie folgt anpassen:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

# Vhosts fastcgi config
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;

Roundcube virtualHost in conf.d/roundcube.conf:

server {
listen   192.168.2.100:80;
server_name webmail.inqbus.com;

access_log  /var/log/nginx/webmail.inqbus.com.access.log;
error_log  /var/log/nginx/webmail.inqbus.com.error.log debug;

location / {
root   /var/www/roundcube;
index  index.html index.htm index.php;
}

location ~ \.php$ {
fastcgi_param  SCRIPT_FILENAME /var/www/roundcube$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

FastCGI Spawning einrichten

Hierfür legen wir die folgende Datei unter /etc/init.d/php-fcgi an:

#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=15
PHP_FCGI_MAX_REQUESTS=1000

PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0

start() {
echo -n "Starting PHP FastCGI: "
start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
RETVAL=$?
echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FastCGI: "
killall -q -w -u $USER $PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
}

case "$1" in
start)
start
 ;;
stop)
stop
 ;;
restart)
stop
start
 ;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
 ;;
esac
exit $RETVAL

Diese wird wie folgt in die Startscripte eingehängt:

update-rc.d php-fcgi defaults

Jetzt können wir den FastCGI Spawner aktivieren:

/etc/init.d/php-fcgi start

Eine kurze Anleitung findet sich auch hier:

http://wiki.nginx.org/PHPFcgiExample