Today we want to optimize our Nextcloud installation with PHP-APCu, it does not matter which Nextcloud or PHP7 version we use. Depending on the version we replace the „x“ in the commands.
VPS Preparation:
Optional:
If you have big but slow disks like me, you can work with a RAM disk. Condition is, of course, enough RAM in the system.
For this purpose, we create a RAM disk under /tmp/ before we start:
sudo mkdir /tmp/apc
and mount this disk:
sudo mount -t ramfs ramfs /tmp/apc
To make this available after each reboot, we edit the file /etc/fstab:
sudo nano /etc/fstab
and we add the following line:
ramfs /tmp/apc ramfs defaults 0 0
As always, we bring our system up to date:
sudo apt -y update && apt -y upgrade && apt -y full-upgrade
then we install PHP-APCu
sudo apt install php-apcu
Depending on the version, edit the php.ini (replace the x with the version here)
for php-fpm:
sudo nano /etc/php/7.x/fpm/php.ini
for php-apache-modul:
sudo nano /etc/php/7.x/apache2/php.ini
and enter the following values:
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
Now we have to teach Nextcloud to work with the APCu, we adapt the config.php:
sudo nano /var/www/html/nextcloud/config/config.php
Here we adjust the values „memcache.distributed“ and „memcache.local“ as follows:
'memcache.distributed' => '\\OC\\Memcache\\APCu', 'memcache.local' => '\\OC\\Memcache\\APCu',
Next we restart Apache2 and php-fpm (if used):
sudo systemctl restart php7.x-fpm sudo systemctl restart apache2
We can verify the success with a php script that we have to load in our webspace
cd /var/www/html/nextcloud sudo wget https://raw.githubusercontent.com/krakjoe/apcu/master/apc.php
Then call the script in our domain via our browser, call https://nextcloud.deine-domain.tld/apc.php:
If we want to look at the „User Cache Entries“, we have to replace the default password in the script „apc.php“:
sudo nano /var/www/html/nextcloud/apc.php
In the script „apc.php“ we have to find this line and adjust accordingly:
defaults('ADMIN_PASSWORD','password'); // Admin Password - CHANGE THIS TO ENABLE!!!
That’s it and have fun… 🙂
10 Gedanken zu „How to install APCu Object Cache in php7 and integrate in Nextcloud“
Hi Markus,
great tutorial again. Thx again.
Little side note to your values on php.ini: apc.enable_cli=1 due to https://docs.nextcloud.com/server/18/admin_manual/configuration_server/caching_configuration.html
Best regards and thanks a lot
Christian
Hi Christian. I think that is not necessary, this value was added by plesk itself. Check your plesk-php7.x-logs, if it is enabled and you set it manually there should be errors.
Markus
Hello,
I got it to work after removing this line :
apc.mmap_file_mask=/tmp/apc/apc.XXXXXX
Thank you for helping others !
Thank you. I will check
Me too! Danke schön Markus und Nicolas!
Wenn ich die RAMFS disk nutze bekomme ich
PHP Fatal error: PHP Startup: apc_mmap: mkstemp on /tmp/apc/apc.2yPAeZ failed: in Unknown on line 0
direkt auf /tmp geht es problemlos (also filemask geändert). Ich kann Dateien auf /tmp/apc/ anlegen. Berechtigungen sind testhalber 777
Eine Idee woran das liegen könnte?
Hallo, Danke auch von mir. Die Installation klappt, Nextcloud meckert nicht mehr, aber nur, wenn ich die Zeilen
„apc.enabled=1
apc.file_update_protection=2
…
apc.lazy_functions=0“
NICHT in die PHP.ini eintrage. Tue ich es, ist der Webserver nicht mehr erreichbar.
Bin jetzt etwas unsicher…
Schönen Gruß, Thomas
Hallo Thomas,
Gerne.
Dann müsste in den LogFiles von nextcloud, PHP oder vom Webserver etwas zum Fehler stehen. Welches OS nutzt Du?
Gruß Markus
Schöner Post, knackig kurz gehalten ??
Danke sehr ??