SchlagwortvServer

[HowTo] LNMP – VPS mit wenig Ressourcen Nginx & PHP

LNMP-debianvps-300x257Wollt auch Ihr Eurer eigener Herr über einen Server sein? Scheut Euch aber einen dedizierten Root-Server zu mieten? Die Lösung sind kleine vServer, die Euch vollen Admin Zugriff erlauben. Ihr seid euer Herr.

Hat man ein “Low powered” VPS mit wenig CPU & RAM, muss man genau hinschauen was man installiert. Eine Möglichkeit Ressourcen zu sparen ist, anstatt dem weit verbreiteten Indianer (Apache) auf den schlanken Nginx Webserver zu setzten.

Hier ein kleinen HowTo, wie Ihr Euren VPS mit Nginx & PHP einrichtet.

Als erstes sollte man die “Dotdeb” Quellen zu seinem System hinzufügen.Hierzu bearbeitet man die Sources von apt (/etc/apt/sources.list)

nano /etc/apt/sources.list

und fügt am Ende einfach diese Zeilen ein:

# DotDeb
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

Um die Paketquellen nutzen zu können, müsst ihr den “Repository-Key” noch hinzufügen, indem ihr folgende schritte ausführt:

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -

Der nächste Schritt ist optional. Ihr könnt dem System eine höhere Priorität für die DetDeb Paketquellen geben, müsst dies aber nicht. Einfach diese Datei anlegen “/etc/apt/preferences.d/dotdeb”

nano /etc/apt/preferences.d/dotdeb

folgenden Inhalt einfügen:

Package: *
Pin: release o=packages.dotdeb.org
Pin-Priority: 990

Um zu checken, aus welchem Repository nun die Pakete installiert werden einfach folgenden Befehl ausführen.

apt-cache policy nginx

Jetzt geht’s erst richtig los

Mit dem folgenden Befehl installiert Ihr Nginx & PHP

apt-get install nginx php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd

Jetzt schnell noch ein Root Verzeichnis für den Webserver anlegen

mkdir /var/www

Seit Nginx 1.4 werden die Seiten ähnlich wie bei Apache im Ordner /etc/nginx/sites-enables konfiguriert. Hier sollten Symlinks zu files im Verzeichnis /etc/nginx/sites-available erzeugt werden.

nano /etc/nginx/sites-available/server2.tschoerner.eu

und folgenden Inhalt einfügen:

server {
	listen 80;	# Der zu lauschende Port
	server_name server2.tschoerner.eu;	# Der Name für den virtuellen Host
	root /var/www;	# Der zu verwendende Ordner

	location / {
		index index.php index.html;	# Zuerst versuchen, bei einem / Aufruf die index.php zu laden, alternativ die index.html
	}

	location ~* \.php$ {	# Ermöglicht die Verarbeitung von php Dateien
		try_files $uri /index.php;
		fastcgi_index index.php;
		fastcgi_pass 127.0.0.1:9000;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param SCRIPT_NAME $fastcgi_script_name;
	}

	autoindex on;	# Funktion, ob der Verzeichnisinhalt angezeigt werden soll, wenn keine index.php oder index.html existiert
}

Jetzt besagten Symlink erzeugen:

ln -s /etc/nginx/sites-available/server2.tschoerner.eu  /etc/nginx/sites-enabled/server2.tschoerner.e

rm -rf /etc/nginx/sites-enabled/default

Und fertig … Neginx neu starten

service nginx restart

Legt nun eine Datei (phpinfo.php) in /var/www an und ruft diese im Browser auf.

Wenn Ihr jetzt einen Fehler bekommt “502 Bad Gateway”, dann müsst Ihr noch folgende Zeile in der Datei (/etc/php5/fpm/pool.d/www.conf) ändern:

#ALT
listen = /var/run/php5-fpm.sock

#Zu:
listen = 127.0.0.1:9000

PHP durchstarten und fertig 🙂

/etc/init.d/php5-fpm restart

Alles zu Thema MySQL blogge ich demnächst.

Natürlich könnt Ihr auch hier die bereits geboggten Performance Enhancements eines PHP Caches nutzen.