optimale Konfiguration (LEMP + Wordpress)? (viel Text)

  • Moin,


    ich habe seit einigen Tagen einen vServer und bin dabei die beste Grundonfiguration für eine Wordpressinstallation heraus zu kriegen. Das Ganze soll auf Nginx + MySQL und PHP5x basieren da ich sehr viele statische Elemente habe (Fotogallerien) habe und ich auf vielen Seiten gelesen habe das Nginx in dem Fall die bessere Wahl ist. Da meine letzten Gehversuche mit einem Server lange zurück liegen wollte ich mal abklären ob die folgende Anleitung so in Ordnung ist oder ob ich was vergessen habe, resp. ob es noch Sachen gibt die man speziell für einen Wordpress Blog optimieren könnte. Basis it eine Minimalinstallation von Debian Wheezy (alle Befehle werden unter einem User ausgeführt der nur per sudo root berechtigt ist):


    System aktualisieren

    Code
    1. apt-get update


    Installieren von nginx

    Code
    1. apt-get install nginx


    Starten des Services

    Code
    1. service nginx start


    Überprüfen ob nginx läuft (im Browser)  Welcome Nachricht sollte sichtbar sein

    Code
    1. http://<IP des (v)Servers>


    Installation von PHP5

    Code
    1. apt-get install php5-fpm


    Installieren von Modulen für PHP5 (benötigte Module entsprechend Auswählen)

    Code
    1. apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl


    Konfiguration von nginx um PHP benutzen zu können (Default configuration)

    Code
    1. nano /etc/nginx/sites-available/default


    Datei leeren und folgenden Code einfügen (Example.com durch eigene Domain ersetzen)


    Nginx neustarten

    Code
    1. service nginx restart



    PHP.ini Datei bearbeiten

    Code
    1. nano /etc/php5/fpm/php.ini


    Die folgende Zeile finden und „1“ durch „0“ ersetzen (Sicherheitslücke)

    Code
    1. cgi.fix_pathinfo=1  cgi.fix_pathinfo=0


    PHP5 neustarten

    Code
    1. service php5-fpm restart


    Testdatei erstellen um zu Prüfen ob PHP einwandfrei arbeitet (Example.com durch eigene Domain ersetzen)

    Code
    1. nano /var/www/example.com/test.php


    Inhalt der Datei

    PHP
    1. <?php
    2. phpinfo();
    3. ?>


    Im Browser aufrufen

    Code
    1. http://<IP des (v)Servers>/test.php


    MySQL installieren (das Passwort während der Installation gut aufbewahren)

    Code
    1. apt-get install mysql-server mysql-client


    MySQL Service starten

    Code
    1. service mysql start


    Einloggen in MySQL

    Code
    1. mysql -u root –p


    Datenbank für Wordpress anlagen

    Code
    1. CREATE DATABASE wordpress;


    Benutzer für die Wordpress-Datenbank anlegen (Benutzer ersetzen)

    Code
    1. CREATE USER Benutzer@localhost;


    Passwort für diesen Benutzer setzen (Benutzer & PW ersetzen)

    Code
    1. SET PASSWORD FOR Benutzer @localhost= PASSWORD("PW");


    Privilegien für die Datenbank setzen (Benutzer & PW ersetzen)

    Code
    1. GRANT ALL PRIVILEGES ON wordpress.* TO Benutzer@localhost IDENTIFIED BY 'PW';


    MySQL Aktualisieren

    Code
    1. FLUSH PRIVILEGES;


    MySQL verlassen

    Code
    1. exit;


    ins Homeverzeichniss wechseln

    Code
    1. cd ~


    Aktuellste Version von Wordpress runterladen

    Code
    1. wget http://wordpress.org/latest.tar.gz


    entpacken ins Unterverzeichniss „wordpress“

    Code
    1. tar -xzvf latest.tar.gz


    Kopie der Beispielkonfiguration erstellen

    Code
    1. cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php


    Öffnen der WP-Config.php

    Code
    1. nano ~/wordpress/wp-config.php


    Die folgenden Zeilen mit den vorher gesetzten Werten ergänzen

    Code
    1. // ** MySQL settings - You can get this info from your web host ** //
    2. /** The name of the database for WordPress */
    3. define('DB_NAME', ‘yourdbname’);
    4. /** MySQL database username */
    5. define('DB_USER', 'youruser');
    6. /** MySQL database password */
    7. define('DB_PASSWORD', 'password');


    Verzeichniss erstellen (Example.com durch eigene Domain ersetzen)

    Code
    1. mkdir -p /var/www/example.com


    Dateien ins neue Verzeichnis verschieben

    Code
    1. mv -r ~/wordpress/* /var/www


    Rechte an nginx Benutzer übergeben

    Code
    1. chown -R www-data:www-data /var/www/example.com


    Code
    1. usermod -a -G www-data username


    Kopie der Default Konfiguration für Wordpress erstellen (Example.com durch eigene Domain ersetzen)

    Code
    1. cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com


    Neue Datei öffnen (Example.com durch eigene Domain ersetzen)

    Code
    1. nano /etc/nginx/sites-available/example.com


    Datei leeren und folgenden Code benutzen (Example.com durch eigene Domain ersetzen)


    „Symbolic Link“ erstellen (Example.com durch eigene Domain ersetzen)

    Code
    1. ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com


    Default Server Block entfernen

    Code
    1. rm /etc/nginx/sites-enabled/default


    Nginx neustarten

    Code
    1. service nginx restart




    vielen Danke fürs durchlesen! Hoffe ich bin nicht ganz auf dem Holzweg :)


    Gruss
    Moritz

  • Danke für den Hinweis. Hab n bisschen was gelesen und werde wohl mit APC arbeiten. Gäbe ja noch Varnish aber das ist irgendwo dann zuviel des Guten.


    Was mir noch auffiel ist der fehlende Eintrag bezüglich der Gzip Aktiiverung in der nginx.conf

    Code
    1. gzip on;
    2. gzip_vary on;
    3. gzip_proxied any;
    4. gzip_comp_level 6;
    5. gzip_buffers 16 8k;
    6. gzip_http_version 1.1;
    7. gzip_types text/plain text/css application/json ...


    sowie der Optimierung der Prozesse (ebenfalls in der nginx.conf)

    Code
    1. worker_processes 1;
    2. events {worker_connections 768; }
    3. keepalive_timeout 10;
  • Hallo Moritz,


    Verzeichniss erstellen (Example.com durch eigene Domain ersetzen)

    Code
    1. mkdir -p /var/www/example.com


    Dateien ins neue Verzeichnis verschieben

    Code
    1. mv -r ~/wordpress/* /var/www

    Es hat sich ein kleiner "Schreib"fehler eingeschlichen
    in dein Tutorial ;)
    Es sollte doch sicher so heissen:

    Code
    1. mv -r ~/wordpress/* /var/www/example.com



    Gruss


    michi

    It's me, only me, pure michi

    RS 500 SAS G8 Ostern 2019

    VPS: 50 G7 |B Ostern 2017|200 G8 Aktion

    WH: SmallEi | Adv17 Webhosting Spezial Family | Expert Spezial 2016

  • So ist es, vielen Dank für den Hinweis!
    Arbeite gerade noch an den Feineinstellungen für APC, dann gibts n Update.


    Tutorial würde ich es jetzt nicht unbedingt nennen da ich mein "Wissen" auch nur von anderen Seiten habe. Ging mir primär um "Hab ich was vergessen" und "Was könnte man noch optimieren für WP" :)
    Freut mich natürlich wenn es dem einen oder anderen helfen sollte