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
    apt-get update


    Installieren von nginx

    Code
    apt-get install nginx


    Starten des Services

    Code
    service nginx start


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

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


    Installation von PHP5

    Code
    apt-get install php5-fpm


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

    Code
    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
    nano /etc/nginx/sites-available/default


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


    Nginx neustarten

    Code
    service nginx restart



    PHP.ini Datei bearbeiten

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


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

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


    PHP5 neustarten

    Code
    service php5-fpm restart


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

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


    Inhalt der Datei

    PHP
    <?php 
    phpinfo(); 
    ?>


    Im Browser aufrufen

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


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

    Code
    apt-get install mysql-server mysql-client


    MySQL Service starten

    Code
    service mysql start


    Einloggen in MySQL

    Code
    mysql -u root –p


    Datenbank für Wordpress anlagen

    Code
    CREATE DATABASE wordpress;


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

    Code
    CREATE USER Benutzer@localhost;


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

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


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

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


    MySQL Aktualisieren

    Code
    FLUSH PRIVILEGES;


    MySQL verlassen

    Code
    exit;


    ins Homeverzeichniss wechseln

    Code
    cd ~


    Aktuellste Version von Wordpress runterladen

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


    entpacken ins Unterverzeichniss „wordpress“

    Code
    tar -xzvf latest.tar.gz


    Kopie der Beispielkonfiguration erstellen

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


    Öffnen der WP-Config.php

    Code
    nano ~/wordpress/wp-config.php


    Die folgenden Zeilen mit den vorher gesetzten Werten ergänzen

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


    Verzeichniss erstellen (Example.com durch eigene Domain ersetzen)

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


    Dateien ins neue Verzeichnis verschieben

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


    Rechte an nginx Benutzer übergeben

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


    Code
    usermod -a -G www-data username


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

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


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

    Code
    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
    ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com


    Default Server Block entfernen

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


    Nginx neustarten

    Code
    service nginx restart




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


    Gruss
    Moritz

  • hört sich soweit sehr gut an :)


    Noch optimaler wird es wenn ein caching verfahren eingesetzt wird (beispielsweise apc oder hdd cache, beides mit cachifay möglich und nginx kompatibel)

  • 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
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json ...


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

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


    Verzeichniss erstellen (Example.com durch eigene Domain ersetzen)

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


    Dateien ins neue Verzeichnis verschieben

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

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

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



    Gruss


    michi

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • 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