Ubuntu 16.04 LTS Installation APCu Object Cache für PHP7 und Einbindung in Nextcloud

Wir wollen heute unsere Nextcloud Installation mit PHP-APCu optimieren, dabei ist es egal welche Nextcloud- bzw. PHP7-Version wir benutzen. Je nach Version ersetzen wir das „x“ in den Commands.

Auf jeden Fall sollten PPAs für PHP, wie in meinem Beitrag Nextcloud 12 mit PHP 7.1 beschleunigen erläutert, bereits vorhanden sein. Ansonsten müssen wir dies noch nachholen. Für php7.0 ist das nicht notwendig, da wir hier mit den offiziellen Paket-Quellen arbeiten können.

Nachtrag:

Wer wie ich große, aber langsame Festplatten hat, kann hier auch mit einer RAM-Disk arbeiten. Voraussetzung ist, natürlich genügend RAM im System.

Dazu legen wir vorher eine RAM-Disk unter /tmp/ an:

sudo mkdir /tmp/apc

und mounten diese:

sudo mount -t ramfs ramfs /tmp/apc

damit diese nach jedem Reboot zur Verfügung steht, bearbeiten wir die /etc/fstab:

sudo nano /etc/fstab

und fügen die folgende Zeile ein:

ramfs   /tmp/apc     ramfs   defaults        0       0

Nachtrag ENDE

Wie immer bringen wir unser System auf aktuellen Stand:

sudo apt-get -y update && apt-get -y upgrade && apt-get -y dist-upgrade

Danach installieren wir PHP-APCu

sudo apt-get install php-apcu

Je nach Version die php.ini bearbeiten (hier das x durch die Version ersetzen)

Für php-fpm:

sudo nano /etc/php/7.x/fpm/php.ini

Für php-Apache-Modul:

sudo nano /etc/php/7.x/apache2/php.ini

und die folgenden Werte hinterlegen:

apc.enabled=1
apc.file_update_protection=2
apc.optimization=0
apc.shm_size=256M
apc.include_once_override=0
apc.shm_segments=1
apc.ttl=7200
apc.user_ttl=7200
apc.gc_ttl=3600
apc.num_files_hint=1024
apc.enable_cli=0
apc.max_file_size=5M
apc.cache_by_default=1
apc.use_request_time=1
apc.slam_defense=0
apc.mmap_file_mask=/tmp/apc/apc.XXXXXX
apc.stat_ctime=0
apc.canonicalize=1
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.lazy_classes=0
apc.lazy_functions=0

Nun müssen wir Nextcloud noch beibringen mit dem APCu zu arbeiten, dazu passen wir die config.php an:

sudo nano /var/www/html/nextcloud/config/config.php

Hier passen wir die Werte „memcache.distributed“ und „memcache.local“ wie folgt an:

'memcache.distributed' => '\\OC\\Memcache\\APCu',
  'memcache.local' => '\\OC\\Memcache\\APCu',

Im Anschluß starten wir Apache2 und php-fpm (wenn verwendet) neu:

sudo systemctl restart php7.x-fpm
sudo systemctl restart apache2

Überprüfen können wir den Erfolg und auch die Nutzung mit einem php-Skript, dass wir in unseren Webspace hinterlegen:

cd /var/www/html/nextcloud/
sudo wget https://raw.githubusercontent.com/krakjoe/apcu/master/apc.php

In unserem Browser rufen wir unsere Domain und dort das Skript auf, also https://nextcloud.deine-domain.tld/apc.php:

Falls wir uns die „User Cache Entries“ anschauen möchten, müssen wir in dem Skript „apc.php“ noch das default Passwort ersetzen:

sudo nano /var/www/html/nextcloud/apc.php

diese Zeile suchen und entsprechend anpassen:

defaults('ADMIN_PASSWORD','password');          // Admin Password - CHANGE THIS TO ENABLE!!!

Bis zum nächsten Beitrag und bei Fragen wie immer fragen… 🙂

11 Gedanken zu „Ubuntu 16.04 LTS Installation APCu Object Cache für PHP7 und Einbindung in Nextcloud

  1. Hallo,

    in PHP 7.0 kann ich erfolgreich APCU installieren und aktivieren, aber irgendwie schaffe ich das nicht in PHP 7.2.
    Gibt es irgendwo ein Tutorial wo es für PHP 7.2 erklärt wird?
    Vielleicht ist es auch noch wichtig zu wissen das ich Plesk benutze.

    Vielen Dank im voraus. 🙂

      1. Super, vielen Dank … habe ich gerade kurz ausprobiert und schon wird in meiner TYPO3 Installation APCU angezeigt. Gibt es irgendwie auch eine Möglichkeit, dass man das testen kann, wieviel schneller es nun sein soll?

  2. Bin gerade dabei, die guides zu aktualisieren. Als Dankeschön möchte ich Dir die commands zukommen lassen:

    sed -i ‚$aapc.enabled=1‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.file_update_protection=2‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.optimization=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.shm_size=256M‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.include_once_override=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.shm_segments=1‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.ttl=7200‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.user_ttl=7200‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.gc_ttl=3600‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.num_files_hint=1024‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.enable_cli=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.max_file_size=5M‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.cache_by_default=1‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.use_request_time=1‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.slam_defense=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.mmap_file_mask=/tmp/apc/apc.XXXXXX‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.stat_ctime=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.canonicalize=1‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.write_lock=1‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.report_autofilter=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.rfc1867=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.rfc1867_prefix =upload_‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.rfc1867_name=APC_UPLOAD_PROGRESS‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.rfc1867_freq=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.rfc1867_ttl=3600‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.lazy_classes=0‘ /etc/php/7.2/fpm/php.ini
    sed -i ‚$aapc.lazy_functions=0‘ /etc/php/7.2/fpm/php.ini

  3. Hallo und guten Abend! Super Artikel – ich werde das mal in meine Testumgebungen übernehmen und im Rahmen meiner zeitlichen Möglichkeiten testen. Sofern es erfolgreich getestet wurde, würde ich das gern in meine Nextcloud Guides aufnehmen. Vorausgesetzt Sie stimmen zu? Ein Link wäre für mich obligatorisch.
    Viele Grüße, Carsten Rieger

    1. Hallo Herr Rieger,
      vielen Dank für das Feedback, habe mich sehr gefreut.
      Natürlich dürfen Sie, meine Zustimmung haben Sie. Ein paar schöne Guides haben Sie da veröffentlicht. Gefallen mir.
      Den Artikel habe ich heute noch etwas ergänzt, da ich die letzten Abende noch ein wenig Zeit zum experimentieren hatte.
      Viele Grüße
      Markus Weingärtner

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert