Sebastian Mogilowskis Blog

Just another blog about administration, linux and other stuff

Install Foswiki on Ubuntu with Nginx

Der Server

Als Ausgangsbasis habe ich eine Standartinstallation eines Ubuntu Server gewählt (11.10 in dieser Anleitung).

Ngnix installieren

Software zur Installation der PPA installieren:

aptitude install python-software-properties

Nginx PPA hinzufügen:

nginx=stable # use nginx=development for latest development version
add-apt-repository ppa:nginx/$nginx

Nginx installieren

aptitude update 
aptitude install nginx

Für weitere Details: Nginx install Ubuntu PPA

FastCGI

Nun FastCGI für Ngnix installieren:

aptitude install fcgiwrap spawn-fcgi

Für weitere Details: Linode perl-fastcgi on Ubuntu

Foswiki installieren

wget http://sourceforge.net/projects/foswiki/files/foswiki/1.1.4/Foswiki-1.1.4.tgz
mkdir /var/www
tar vfx Foswiki-1.1.4.tgz
mv Foswiki-1.1.4 /var/www/foswiki
chown www-data:www-data /var/www -R

Softwarepakete für Foswiki installieren

aptitude install rcs libarchive-tar-perl libarchive-zip-perl libcgi-session-perl \
libdigest-sha-perl libdigest-sha1-perl libhtml-entities-numbered-perl \
libhtml-parser-perl libhtml-tree-perl

Ngnix konfigurieren

Entfernen der ‘default’ Webseite durch das löschen des symbolischen Links:

rm /etc/nginx/sites-enabled/default

Nun eine neue Seite anlegen durch das erstellen der Datei ‘/etc/nginx/sites-available/foswiki.conf’ mit folgendem Inhalt:

server {
    listen       80;
    server_name  foswikiserver;

    set $foswiki_root "/var/www/foswiki";
    root $foswiki_root; 

    location / {
        root $foswiki_root;
        index index.html;
    }
   
    location /bin/configure {
        allow 127.0.0.1;
        allow YOUR_IP_HERE_!!!;
        deny all;
        gzip off;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_split_path_info ^/foswiki(/bin/configure)(?:\.pl)?(.*);
        fastcgi_param  SCRIPT_FILENAME  $foswiki_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
    }
}

Bemerkung: Ersetze “YOUR_IP_HERE_!!!” mit der IP-Adresse deines Computers um dir den Zugriff auf die Konfigurationsseite zu erlauben.

Nun die neue Seite aktivieren:

ln -s /etc/nginx/sites-available/foswiki.conf /etc/nginx/sites-enabled/

Anschließend den Nginx neu starten:

service nginx restart

Bemerkung: Mein Foswiki server heißt ‘foswikiserver’. Dies muss warscheinlich durch den Namen deines Server wie z.B ‘www.myfoswiki.com’ ersetzt werden.

Foswiki konfigurieren

Offne dazu ‘http://foswikiserver’ in deinem Browser:

Wähle ‘Configure Foswiki’ und führe alle Konfigurationseinstellungen für dein Foswiki durch.

Anschließend öffne ‘Extensions’ und wähle ‘Install and Update Extensions’.

Suche die ‘FastCGIEngineContrib’ Erweiterung und installiere sie.

Weitere Details dazu findest du unter: Foswiki configuration on Nginx

FastCGI von Foswiki konfigurieren

Installieren des benötigten Paketes:

aptitude install libfcgi-perl

Nun erstellt man ein kleines Upstart-Skript für den Foswiki-FastCGI-Service.

Dazu die Datei ‘/etc/init/foswiki.conf’ mit folgendem Inhalt erstellen:

# Foswiki - Service Upstart script #

description "foswiki"
author "Mogilowski Sebastian"

start on started networking
stop on runlevel [!2345]

env FOSHOMEDIR=/var/www/foswiki
env FOSSOCKDIR=/var/run/nginx
env FOSUSER=www-data
env FOSGROUP=www-data
env NUMCHILDS=25

respawn

pre-start script
    chdir $FOSHOMEDIR/bin
    mkdir $FOSSOCKDIR                              ||true
    chown $FOSUSER:$FOSGROUP $FOSSOCKDIR           ||true
    chmod 0755 $FOSSOCKDIR                         ||true
end script

script
  cd $FOSHOMEDIR/bin

  exec su -s /bin/sh -c 'exec "$0" "$@"' -- $FOSUSER ./foswiki.fcgi -n $NUMCHILDS -l $FOSSOCKDIR/foswiki.sock

end script

Nun kann man den Foswiki-Service starten:

service foswiki start

Nun muss noch die Ngnix-Konfiguration erweitert werden:

server {
    listen       80;
    server_name  foswikiserver;

    set $foswiki_root "/var/www/foswiki";
    root $foswiki_root; 

    location / {
        root $foswiki_root;
	rewrite ^/?$ http://foswikiserver/bin/view.pl/Main permanent;
    }
   
    location /bin/configure {
        allow 127.0.0.1; # localhost, you may want to omit due to security considerations.
        allow YOUR_IP_HERE_!!!;
        deny all;
        gzip off;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_split_path_info ^/foswiki(/bin/configure)(?:\.pl)?(.*);
        fastcgi_param  SCRIPT_FILENAME  $foswiki_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
    }

    location /bin/ {
           gzip off;
           fastcgi_pass             unix:/var/run/nginx/foswiki.sock;
           fastcgi_split_path_info  ^(/bin/\w+)(.*);
           fastcgi_param            SCRIPT_FILENAME $foswiki_root/$fastcgi_script_name;
           fastcgi_param            PATH_INFO       $fastcgi_path_info;
           fastcgi_param            SCRIPT_NAME     $fastcgi_script_name;
           include fastcgi_params;
       }

    location ~ (^/lib|^/data|^/locale|^/templates|^/tools|^/work) {
        deny all;
    }

    if ($http_user_agent ~ ^SiteSucker|^iGetter|^larbin|^LeechGet|^RealDownload|^Teleport|^Webwhacker|^WebDevil|^Webzip|^Attache|^SiteSnagger|^WX_mail|^EmailCollector|^WhoWhere|^Roverbot|^ActiveAgent|^EmailSiphon|^CrownPeak-HttpAgent|^$) {
        rewrite .* /404.html break;
   }
}

Bemerkung: Nicht vergessen “YOUR_IP_HERE_!!!” wieder mit der IP-Adresse deines Computers zu ersetzen und ‘foswikiserver’ durch deinen Servernamen zu ersetzen.

Der letzte Schritt ist den Nginx-Webserver neu zu starten:

service nginx reload

Nun Foswiki mit ‘http://foswikiserver’ im Browser aufrufen.

Links:

* foswiki.org
* nginx.org
* Foswiki configuration on Nginx
* Perl FastCGI on Ubuntu
* Install Ubuntu_PPA
* Foswiki FastCGIEngineContrib Extension
* Running upstart jobs as unprivileged users
* Upstart Intro, Cookbook and Best Practises

, , ,

3 thoughts on “Install Foswiki on Ubuntu with Nginx

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.