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%…

re:oyd (9): Apple Kalender, Kontakte, iOS und OwnCloud CalDAV / CardDAV

Der auf unserem Pogoplug V2 laufende OwnCloud Server nutzt CalDAV und CardDAV, um Kalender- und Kontaktdaten zu speichern und für Clients bereitzustellen. Zunächst stellt sich aber die Frage, wie wir unsere im Apple Mail und Kontakte Programm gespeicherten Daten auf den OwnCloud Server bekommen. Nichts leichter als das – OwnCloud unterstützt Drag&Drop!

  1. Als erstes starten wir daher Apple Kalender. Auf der linken Seite sollten die unterschiedlichen Kalender (etwa Privat, Geschäftlich etc.) angezeigt werden. Wenn nicht: einfach oben links auf „Kalender“ klicken.
  2. Jetzt einfach den ersten Kalender auswählen, Zwei-Finger-Klick und im Kontextmenü „Exportieren“ auswählen.
  3. Die so in einer Datei gespeicherten Kalenderdaten können jetzt einfach per Drag&Drop auf das im Browser geöffnete Kalender-Fenster von OwnCloud gezogen werden. OwnCloud importiert die Daten und es kann mit dem nächsten Kalender weitergehen.
    1. Nicht viel schwieriger läuft es mit unseren Apple Kontaktdaten ab.

      1. Apple Kontakte aufrufen.
      2. Einen Kontakt auswählen und dann mit cmd+A alle auswählen. Die Kontakte können nun einfach per Drag&Drop als eine einzelne Datei auf den Schreibtisch gezogen werden.
      3. Die Datei jetzt ebenfalls per Drag&Drop einfach auf das im Browser geöffnete Kontakte-Fester von OwnCloud ziehen. Fertig.

      Für die Verknüpfung von OwnCloud CalDAV und CardDAV mit iOS und Apple Kalender/ Kontakte gibt OwnCloud jeweils unter Einstellungen die zu nutzende URL an. Sie ist nach dem Schema „https://DOMAINNAME/OWNCLOUDVERZEICHNIS/remote.php/caldav/principals/USERNAME/“ bzw. „https://DOMAINNAME/OWNCLOUDVERZEICHNIS/remote.php/carddav/principals/USERNAME/“ aufgebaut.
      ACHTUNG! Diese Vorgaben funktionieren nicht immer bei iOS / OS X! Eventuell kommen beispielsweise Fehlermeldungen wegen der SSL Verschlüsselung. Die Lösung ist in vielen Fällen recht einfach:
      Es müssen „https://“ am Anfang und „/“ am Ende weggelassen werden.

re:oyd (8): OwnCloud@Pogoplug V2

Unser Server läuft soweit, also geht es jetzt daran, OwnCloud zu installieren.

  1. Dafür wechseln wir zunächst in unser Webserververzeichnis
    cd /srv/http
  2. Dann laden wir die neueste OwnCloud Version herunter
    wget http://owncloud.org/releases/owncloud-4.5.5.tar.bz2
  3. die wir anschließend entpacken
    tar -xjf owncloud-4.5.5.tar.bz2
  4. und zu guter letzt noch den Besitzer der Dateien anpassen
    chown -R http:http /srv/http/owncloud/

Unser OwnCloud-Server sollte dann am Ende unter https://royd.dnsd.me/owncloud/ erreichbar sein. Damit OwnCloud läuft, müssen wir aber noch unseren Webserver und unsere php-Installation anpassen. Beginnen wir mit den Änderungen an der
nginx-Konfigurationsdatei (/etc/nginx/nginx.conf) (ACHTUNG, nur ausschnittsweise Darstellung der Datei):

server {
       listen       443;
       client_max_body_size 1000M; # UPLOAD-DATEIGRÖSSE
       #...
       location / {
            server_name   royd.dnsd.me; #ACHTUNG server_name IN DER GESAMTEN DATEI ANPASSEN!
            root   /srv/http;
            index index.php index.html index.htm;

            rewrite ^/cloud/.well-known/host-meta /public.php?service=host-meta last;
            rewrite ^/cloud/.well-known/carddav /remote.php/carddav/ redirect;
            rewrite ^/cloud/.well-known/caldav /remote.php/caldav/ redirect;
            rewrite ^/cloud/apps/calendar/caldav.php /remote.php/caldav/ last;
            rewrite ^/cloud/apps/contacts/carddav.php /remote.php/carddav/ last;
            rewrite ^/cloud/apps/([^/]*)/(.*.(css|php))$ /index.php?app=$1&getfile=$2 last;
            rewrite ^/cloud/remote/(.*) /remote.php/ last;
            #error_page 403 /cloud/core/templates/403.php;
            #error_page 404 /cloud/core/templates/404.php;

            try_files $uri $uri/ @webdav;
            }

            # Direkten Zugriff auf Daten unterbinden
            location ~ /(data|config|.ht|db_structure.xml|README) {
                        deny all;
            }

    location @webdav {
                    fastcgi_split_path_info ^(.+.php)(/.*)$;
                    unix:/var/run/php-fpm/php-fpm.sock;
                    fastcgi_param SCRIPT_FILENAME /srv/http$fastcgi_script_name;
                    fastcgi_param HTTPS on;
                    fastcgi_param HTTP_AUTHORIZATION $http_authorization;
                    fastcgi_param htaccessWorking true;
                    include fastcgi_params;
     }
}

Als nächstes müssen wir noch in der php-Konfigurationsdatei (/etc/php/php.ini) einige Zeilen auskommentieren. Das Rautezeichen # muss vor den folgenden Zeilen gelöscht werden:

xmlrpc.so
zip.so
gd.so
pdo_sqlite.so
sqlite3.so
extension=iconv.so
extension=openssl.so

Zu guter Letzt starten wie noch nginx und php-fpm neu

systemctl restart nginx
systemctl restart php-fpm

Jetzt sollte sich OwnCloud über https://royd.dnsd.me/owncloud/ einrichten lassen. Und natürlich muss noch der entsprechende Mac-Client heruntergeladen und eingerichtet werden. Wer für sein abzugleichendes OwnCloud-Verzeichnis auf dem Mac noch ein passendes Icon sucht, hier gibt es zwei die benutzt werden könnten:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/SidebariCloud.icns
/Programme/owncloud/Resources/ownCloud.icns

OwnCloud muss zwischendurch diverse Aktualisierungen durchführen. Standardmäßig wird dafür AJAX verwendet, um diese bei Seitenaufruf auszuführen. Wir können diese Aufgabe allerdings auch in einen Cron-Job auslagern.

  1. Dafür muss im Administrationsmenü von OwnCloud unter Cron-Jobs die Einstellung von AJAX auf CRON umgestellt werden.
  2. Anschließend fügen wir einen entsprechenden Cron-Job der jede Minute ausgeführt wird in ArchLinux ein:
    crontab -e
    * * * * * php -f /srv/http/cloud/cron.php
    

EDIT: Gerade diesen Blog gefunden, wo das gleiche Projekt verfolgt wird.

EDIT2: Weiterführender Link zum Thema nginx und OwnCloud.