re:oyd (12): WordPress, Permalinks, rewrite und nginx

Wer bei WordPress die suchmaschinenfreudlicheren Permalinks benutzen möchte, muss entsprechende rewrite Rules erstellen. Da wir nginx als Webserver nutzen, muss die Datei „/etc/nginx/nginx.conf“ angepasst werden (statt etwa der mod_rewrite Rules in .htaccess für Apache-Server). „Rewrite“ müssen wir dabei aber gar nicht nutzen, da es eine effektivere Regel gibt („try_files $uri $uri/ /index.php?$args;“). Diese also einfach in die entsprechende location-Sektion des (richtigen) Servers eintragen:

server {
   #...
   location / {
      root /srv/http/wordpress;
      index  index.php; 
      try_files $uri $uri/ /index.php?$args;  
 }

Rewrite könnte man etwa einsetzen, um eine einfache php-Webseite mit Verweisen der Form „index.php?seite=impressum“ als statische Seite („impressum.html“) erscheinen zu lassen:

server {
    #...
    location / {
       root   /srv/http;
       index  index.php;
       rewrite ^/([a-zA-Z0-9-_]+).html$ /index.php?seite=$1 last;
}

re:oyd (11): Domains, dynamische IPs und nginx

Dank DNSdynamic (oder jedem anderen dynamischen DNS Anbieter) ist unser Homeserver, trotz wechselnder IP-Adresse, einfach über royd.dnsd.me erreichbar. Schön ist aber anders und zufällig haben wir noch DOMAIN1.de und DOMAIN2.de. Eine davon soll auf unsere neue WordPress-Installation verweisen, die zweite auf unsere berufliche Webseite. Frame-Weiterleitung oder HTTP-Weiterleitung wollen wir natürlich nicht – also müssen wir an die DNS Einträger der Domains heran (sollte das nicht gehen, bleibt wohl nur ein Domainumzug).

Die Auflösung des Domainnamens erfolgt zunächst über das A-Record. Hier steht die (feste) IP-Adresse des Webservers. Mit wechselnder IP-Adresse können wir damit also nichts anfangen. Zum Glück gibt es aber noch den CNAME Eintrag. Hier können wir eine Alias-Domain angeben, an die DOMAIN1.de weitergeleitet werden soll (ein CNAME Eintrag für http://DOMAIN1.de zur Weiterleitung ist leider nicht standardkonform, aber für http://www.DOMAIN1.de gibt es kein Problem. Dafür müssen wir die Subdomain www anlegen, sofern sie noch nicht existiert). Für CNAME können wir jetzt einfach „royd.dnsd.me“ eintragen.
Das gleiche gilt für www.DOMAIN2.de . ACHTUNG! Eine Weiterleitung auf bspw. „royd.dnsd.me/wordpress/“ ist nicht möglich! Folglich müssen wir nginx so einrichten, dass wir bei Eingabe von www.DOMAIN1.de bzw. www.DOMAIN2.de auf der richtigen Webseite, bzw. im richtigen Verzeichnis des Webservers landen.

Also ins Verzeichnis „/etc/nginx/“ wechseln und nginx.conf bearbeiten:
Wir brauchen für jede Domain eine eigene „server“ Sektion. Die bereits existierende kann einfach kopiert werden. Die Anpassungen sehen dann etwa so aus (ACHTUNG: Darstellung nur auszugsweise):

server {
   listen   80;
   server_name DOMAIN1.de;
   location / {
      root /srv/http/wordpress;
      index  index.php index.html; 
   }
}
server {
   listen   80;
   server_name DOMAIN2.de;
   location / {
      root /srv/http;
      index  index.php index.html; 
   }
}

Damit sollten jetzt beide Domains korrekt funktionieren.

re:oyd (10): WordPress@Pogoplug V2

WordPress auf dem Pogoplug? Ob das so eine gute Idee ist…
allein bei den Ressourcen die MySQL verbraucht. Theoretisch kann WordPress auch mit SQLite, dann funktionieren aber wohl viele Plugins nicht.

  1. Also erstmal MySQL installieren:
    pacman -S mysql

    Dann MySQL starten:

    service mysqld start

    (stattdessen ginge auch mysqld_safe: „/usr/bin/mysqld_safe &“) und gleich für sichere Verhältnisse sorgen:

    /usr/bin/mysql_secure_installation

    Damit MySQL nach einem Neustart automatisch gestartet wird, noch folgenden Befehl ausführen:

    systemctl enable mysqld
  2. Als nächstes ist WordPress an der Reihe. Also ins Webverzeichnis wechseln:
    cd /srv/http/

    und die aktuelle WordPress-Version herunterladen

    wget HIER LINK ZUR AKTUELLEN DATEI EINFÜGEN

    Dann schnell unzip installieren:

    pacman -S unzip

    und die wordpress entpacken:

    unzip DATENNAME.zip

    Die Datei kann jetzt gelöscht werden

    rm DATEINAME.zip

    Unsere WordPress-Dateien liegen jetzt unter „/srv/http/wordpress/“.
    Jetzt müssen wir php-fpm noch mitteilen, dass ab sofort MySQL genutzt werden kann. Dafür müssen wir die Datei „/etc/php/php.ini“ bearbeiten. Dort einfach die Raute „#“ vor dem Eintrag

    extension=mysql-so

    entfernen und php-fpm neustarten:

    systemctl restart php-fpm
  3. Nun muss MySQL noch vorbereitet werden, dazu melden wir uns bei MySQL an:
    mysql --user=root --password=PASSWORT mysql

    Als erstes legen wir nun die Datenbank für WordPress an

    CREATE DATABASE wpdatabase;

    ENTER. Dann einen neuen Nutzer mit Passwort und Zugriff auf diese Datenbank:

    GRANT ALL ON wpdatabase.* TO wordpress_user@localhost IDENTIFIED BY "PASSWORT";

    ENTER. Und abmelden

    EXIT

    ENTER.
    Jetzt können wir über den Browseraufruf von „localhost/wordpress/“ WordPress mit der gerade erstellten Datenbank und dem MySQL Benutzer einrichten.

  4. Wie bereits angesprochen verbraucht MySQL viele Ressourcen, genauer: Arbeitsspeicher – und der ist beim Pogoplug stark begrenzt. Es ist daher wenig hilfreich, wenn sich MySQL standardmäßig etwa allein für key_buffer_size bis zu 64 MB genehmigt. Diese Werte können in der Datei „/etc/mysql/my.cnf“ angepasst werden. Etwa wie folgt:
    key_buffer_size = 1M
    max_allowed_packet = 1M
    table_open_cache = 64
    sort_buffer_size = 100K
    net_buffer_length = 8K
    read_buffer_size = 100K
    read_rnd_buffer_size = 100K
    myisam_sort_buffer_size = 1M
    

    Jetzt noch MySQL neustarten, damit die Änderungen wirksam werden:

    systemctl restart mysqld

Damit läuft WordPress auf dem Pogoplug. Man sollte sich bezüglich der Performance aber nicht all zu viele Hoffnungen machen. Eine einfacher Reload der Startseite bringt die CPU-Auslastung auf 70-90%…