dracoblue.net

Agavi Seite mit NGINX einrichten (mit PHP-FPM)

Ich bin es eigentlich gewöhnt meine Agavi Seiten mit Lighttpd auszuliefern. Seit kurzem läuft vieles hinter dem Nginx. Da die Konfiguration für mich nicht so gewohnt war, möchte ich hier einfach mal veröffentlichen, wie ich Nginx mit Agavi eingerichtet hab. Am besten die Stellen anpassen wo "HINT:" steht.

Erstmal braucht man php5-fpm. Unter ubuntu ging es so:

$ sudo apt-get install php5-fpm

Nun eine Datei anlegen:

$ vim /etc/nginx/sites-enabled/dracoblue.net

Und das folgende dort rein tun:

server {
    listen dracoblue.net:80;
    # HINT: Hier auf alle Fälle server_name setzen, sonst sieht Agavi nicht, dass es sich
    # um dracoblue.net handelt und generiert die URLs mit "localhost" oder ähnlichem
    server_name dracoblue.net;

    location / {
        # HINT: Das Verzeichnis wo die index.php ist
        root   /home/dracobluenet/tags/1.0.0/pub;
        index index.php;

        # HINT: Alle Anfragen (außer an "static") sollen index.php ausgeliefert werden
        location ~* ^/(favicon.ico|robots.txt|static) {
            break;
        }

        # HINT: Alle Anfragen (außer an "static") sollen index.php ausgeliefert werden
        if ($uri !~ "^/(favicon.ico|robots.txt|static|index.php)") {
            rewrite ^/([^?]*)$ /index.php?/$1 last;
        }
    }

    location ~ \.php($|/) {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        # HINT: Das Verzeichnis wo die index.php liegt $fastcgi_script_name
        fastcgi_param SCRIPT_FILENAME /home/dracobluenet/tags/1.0.0/pub$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
    }
}

Wie Du siehst, haben meine Projekte normalerweise lediglich den "static" Ordner, der nicht von Agavi ausgeliefert. Das sorgt dafür, dass der nginx nicht so viel ausprobieren muss um rauszufinden, ob die datei von php ausgeliefert wird oder nicht. Hier habe ich auch noch robots.txt und das favicon.ico hinzugefügt, weil man die meistens ja auch im root hat.

Nun noch Nginx neu starten:

$ /etc/init.d/nginx restart
In agavi, articles, lighttpd, linux, nginx, php by
@ 09 Dec 2010, Comments at Reddit & Hackernews

Give something back

Were my blog posts useful to you? If you want to give back, support one of these charities, too!

Report hate in social media Campact e.V. With our technology and your help, we protect the oceans from plastic waste. Gesellschaft fur Freiheitsrechte e. V. The civil eye in the mediterranean

Recent Dev-Articles

Read recently

Recent Files

About