Bonsailinse
  • Home
  • Impressum
  • Kontakt

Projekt: Neuer Server – nginx + php-fpm

Keine Kommentare Kategorie: Technisches | Tags: Projekte, Server | 6. Januar 2012

Projekt: Neuer Server

Teil 1: Einleitung
Teil 2: Erste Schritte
Teil 3: nginx + php-fpm
Teil 4: MySQL + phpMyAdmin
Teil 5: Postfix + Dovecot
Teil 6: [in Planung]
Teil 7: [in Planung]
Teil 8: Der Abschluss

So, bevor ich jetzt irgendwas an meinem Server kaputt mache (ich hab da definitiv nen Hang zu. Benötige einen Undo-Knopf für sowas) erstelle ich an dieser Stelle ein komplettes Backup.

Bei netcup ist das glücklicherweise ziemlich einfach, ich erstelle das Backup im Verwaltungsbereich für die Server, da brauch ich kein Backuptool oder sonstiges bemühen.
In meinem Tarif habe ich zwei Backups frei, das heißt, ich kann hier und da ein wenig rumspielen und verschiedene Snapshots zurückspielen, falls ich mir bei irgendwelchen Installationen mal nicht ganz so sicher bin *g*.

Das Einzige, was ich nicht kann, ist dem Backup einen Namen oder eine Beschreibung zu geben, was es etwas einfacher machen würde, es dem jeweiligen Stand des Servers zuzuordnen. So muss ich mit einer Uhrzeit leben. Aber wofür habe ich denn ein Blog?! Ich schreib den Namen einfach hier rein, dann weiß ich immer, wo ich ihn finde :D

Das Backup zum aktuellen Stand hat also nun den Namen 2012.01.05_00:51 und ist 287.03 MB groß.

Wie bereits erwähnt möchte ich nicht mehr wie bisher Apache verwenden sondern gerne umsteigen. Ich habe mich nach kurzer Lektüre für den schlanken Webserver nginx (Gesprochen: En-gin-iX) entschieden. Das hat mehrere Gründe. Dazu hier ein kurzer Vergleich des Indianers, LIGHTTPD und nginx:

Apache

+ Open Source
+ unendlich viele Module
+ große Community
+ viele Tutorials
- schlechte Performance
- vglb. geringe Stabilität
- Langsame Entwicklung
- Veraltet und überfüllt
- Keine zufriedenstellende Standard-Konfiguration

LIGHTTPD

+ Open Source
+ unendlich viele Module
+ gute Community
+ unglaublich ressourcenschonend
+ gute Geschwindigkeit
- vglb. geringe Stabilität
- miese Rewrite-Engine
- nicht so schnelle Entwicklung
- ungefixte Memory-Leaks

nginx

+ Open Source
+ genügend Module
+ ziemlich ressourcenschonend
+ geniale Geschwindigkeit
+ stabil und ohne bekannte Leaks
+ vernünftige Rewrite-Engine
+ rasante Weiterentwicklung
+ schöne & übersichtliche Konfiguration
- kleine Community
- kein FastCGI, externer fcgi-Spawner erforderlich

Meine Entscheidung fiel hiermit auf nginx, da ich mir viel von der Performance verspreche und keine Lust auf die hässliche Rewrite-Engine vom lighty habe, wenn es darum geht, die Permalinks von WordPress anzupassen.

Für FastCGI-Prozesse werde ich php-fpm nutzen, was gar nicht so kompliziert sein soll. Mal abwarten =/

Also, los gehts!

Wie bereits im ersten Teil angedeutet, holen wir uns die aktuelle Version von nginx aus dem Repository von Dotdeb, da wir hier alles so aktuell bekommen wie wir es benötigen und auf eine aufbereitete, etwas hübschere Standard-Konfiguration von nginx stoßen werden.

Wir installieren uns nginx, php und einige php-Module über apt-get:

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

Wir wechseln in das nginx Verzeichnis um ein paar Einstellungen vorzunehmen:

# cd /etc/nginx/
# nano nginx.conf

Die nun folgende Konfiguration ist das Beispiel, welches für meine Bedürfnisse passt, für euch ist die Lektüre vom Wiki eventuell interessant, um eure Konfigurationen anzupassen.

index index.php index.htm index.html; keepalive_timeout 15; client_max_body_size 20M; client_body_buffer_size 128k; ## # Gzip Settings ## gzip on; gzip_comp_level 9; gzip_proxied any; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/png image/gif image/jpeg; gzip_http_version 1.1; gzip_min_length 1000; gzip_buffers 16 8k; gzip_disable "MSIE [1-6] \."; gzip_vary on;

Wir entfernen den Standard-vHost und schreiben uns einen eigenen (der Name ist hier natürlich frei wählbar, der Übersicht halber am besten den Domainnamen verwenden). Dabei natürlich darauf achten, dass ihr eure Domain entsprechend eintragt und den vHost nach euren Bedürfnissen anpasst. Hier sei wieder auf das nginx-Wiki verwiesen:

cd /etc/nginx/sites-enabled
rm default
nano /etc/nginx/sites-available/bonsailinse.net
server { server_name bonsailinse.net www.bonsailinse.net; root /var/www/bonsailinse.net/www; location / { try_files $uri $uri/ /index.php /index.html; } location ~ /\. { access_log off; log_not_found off; deny all; } location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 30d; } location ~ (\.inc\.php|\.tpl|\.sql|\.tpl\.php|\.db)$ { deny all; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }

Da wir keine Lust haben, diesen ganzen Wulst für jeden einzelnen vHost neu einzutragen erstellen wir uns eine Datei, die wir einfach für jede Domain fix includen.

Damit sieht die Include-Datei nun so aus:

# nano /etc/nginx/defaults.inc
location / { try_files $uri $uri/ /index.php /index.html; } location ~ /\. { access_log off; log_not_found off; deny all; } location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 30d; } location ~ (\.inc\.php|\.tpl|\.sql|\.tpl\.php|\.db)$ { deny all; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; }

Dementsprechend ist unser vHost nun etwas kürzer:

# nano /etc/nginx/sites-available/bonsailinse.net
server { server_name bonsailinse.net www.bonsailinse.net; root /var/www/bonsailinse.net/www; include defaults.inc; }

Ein neuer Symlink sorgt dafür, dass unser vHost auch aktiv ist:

# ln -s /etc/nginx/sites-available/bonsailinse.net /etc/nginx/sites-enabled/bonsailinse.net

Fröhliches Neustarten:

# /etc/init.d/nginx restart

Und den eben angelegten vHost am besten mit einer phpinfo testen:

# mkdir -p /var/www/bonsailinse.net/{www,tmp}
# chown -R root:www-data /var/www/bonsailinse.net
# chmod -R 0770 /var/www/bonsailinse.net
# cd /var/www/bonsailinse.net/www
# nano info.php
<?php phpinfo(); ?>

Ein Aufruf von http://bonsailinse.net/info.php zeigt mir jetzt meine PHP-Konfiguration an.
Bei euch sollte das nun auch funktionieren.

Twitter das!
So, bevor ich jetzt irgendwas an meinem Server kaputt mache (ich hab da definitiv nen Hang zu. Benötige einen Undo-Knopf für sowas) erstelle ich an dieser Stelle ein komplettes Backup. Bei netcup ist das glücklicherweise ziemlich einfach, ich erstelle das Backup im Verwaltungsbereich für die Server, da brauch ich kein Backuptool oder sonstiges bemühen. In meinem ...

Das könnte dich auch interessieren

  • Bash: Eine schönere History
    Bash: Eine schönere History14. Januar 2012
  • Projekt: Neuer Server – Postfix + Dovecot
    Projekt: Neuer Server – Postfix + Dovecot12. Januar 2012
  • Projekt: Neuer Server – MySQL + phpMyAdmin
    Projekt: Neuer Server – MySQL + phpMyAdmin7. Januar 2012
← Projekt: Neuer Server – Erste Schritte
Projekt: Neuer Server – MySQL + phpMyAdmin →

Eine Antwort schreiben

Hier klicken, um die Antwort abzubrechen.

Connect with Facebook


Kommentar schreiben

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Beliebte Posts

  • StarCraft II Beta-Key zu vergeben [Update]
    StarCraft II Beta-Key zu vergeben [Update] 6. Mai 2010
  • Humble Bundle [Gewinnspiel] [2x Update]
    Humble Bundle [Gewinnspiel] [2x Update] 18. August 2011
  • Blog. Neu. Freakin Design. Penis.
    Blog. Neu. Freakin Design. Penis. 8. Juni 2011

Tag-Wolke

#fail #followerpower 10 Dinge Age of Empire III App Arkham Horror asuROCKS Auto-Update Autobahn Backup BBB Blinse Blog BlogBlume Blogroll Blondinen bueltge.de Canabalt Conway Cthulhu Cutiepies Life Daheim Design Döner Feiertag Gewinnspiel Humphrey iPhone Katzen Performance PieEmpire Pink Fluffy Polizei Projekte Redesign Sasha Schnee Server Silvester Trigami Twitter Umzug Webhosting Weihnachten Winter

Beliebte Artikel

  • StarCraft II Beta-Key zu vergeben [Update]
    StarCraft II Beta-Key zu vergeben [Update] 6. Mai 2010
  • Humble Bundle [Gewinnspiel] [2x Update]
    Humble Bundle [Gewinnspiel] [2x Update] 18. August 2011
  • Blog. Neu. Freakin Design. Penis.
    Blog. Neu. Freakin Design. Penis. 8. Juni 2011
  • KKK: Kreative Kredit-Karte
    KKK: Kreative Kredit-Karte 7. Januar 2010

Blogroll

  • asuROCKS Art, Gal Style and Uber Cute Stuff!
  • Beetlebum Eine autobiografische Online Graphic Novel von Johannes Kretzschmar.
  • BlogBlume Ricarda berichtet von ihrem ganz normalen Chaos, und dem Versuch, es zu sortieren.
  • bueltge.de [by:ltge.de] Frank Bültge gibt exzellente Tips, was man so aus WordPress herausholen kann.
  • Cutiepies Life CutiePie über sich und ihr neugewonnenes Einwandererleben als Exil-Österreicherin.
  • Freak Desu Elizra über ihren Alltag, ihre Vorliebe für alles Japanische und ihre sonstigen Hobbies.
  • Oldschool Herr $oldschool berichtet über Kundenlust und -Frust im Elektronikladen.
  • Outer Heaven EvilPie und das Leben eines Kuchens.
  • PinkFluffy Pink Fluffy berichtet in ihrem Blog über ihren pinken Alltag.
  • Stephness Die Katzenmafia schlägt zurück!
  • UARRR Marcel übt sich in gekonnter Selbstprofilierung. Sonst nichts. Jawoll.
© 2011 Bonsailinse.net.