mirror of
https://github.com/AlexBocken/mykb.git
synced 2024-11-22 11:19:37 +01:00
Compare commits
2 Commits
ca8519bfac
...
5e111ba430
Author | SHA1 | Date | |
---|---|---|---|
5e111ba430 | |||
d95fd3186e |
@ -213,12 +213,19 @@ systemctl enable --now nextcloud-cron.timer
|
|||||||
|
|
||||||
### Performance Improvements by in-memory caching
|
### Performance Improvements by in-memory caching
|
||||||
Nextcloud's documentation recommends to apply some kind of in-memory object cache to significantly improve performance.
|
Nextcloud's documentation recommends to apply some kind of in-memory object cache to significantly improve performance.
|
||||||
|
You are able to use both APCu and Redis simultaneously for caching. The combination should be faster than either one alone.
|
||||||
|
|
||||||
#### APCu
|
#### APCu
|
||||||
Install `php-legacy-apcu`:
|
Install `php-legacy-apcu`:
|
||||||
```sh
|
```sh
|
||||||
pacman -S php-legacy-apcu --asdeps
|
pacman -S php-legacy-apcu --asdeps
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Uncomment the follwing in `/etc/php-legacy/conf.d/apcu.ini`:
|
||||||
|
```ini
|
||||||
|
extension=apcu.so
|
||||||
|
```
|
||||||
|
|
||||||
In `/etc/webapps/nextcloud/php.ini` enable the following extensions by uncommenting this:
|
In `/etc/webapps/nextcloud/php.ini` enable the following extensions by uncommenting this:
|
||||||
```ini
|
```ini
|
||||||
extension=apcu
|
extension=apcu
|
||||||
@ -245,6 +252,100 @@ A second application server retart is required and everything should be working.
|
|||||||
```sh
|
```sh
|
||||||
systemctl restart php-fpm-legacy
|
systemctl restart php-fpm-legacy
|
||||||
```
|
```
|
||||||
|
#### Redis
|
||||||
|
|
||||||
|
Install redis and the php-legacy extensions:
|
||||||
|
```sh
|
||||||
|
pacman -S redis
|
||||||
|
pacman -S php-legacy-redis php-legacy-igbinary --asdeps
|
||||||
|
```
|
||||||
|
|
||||||
|
Adjust the following in `/etc/redis.conf`:
|
||||||
|
```ini
|
||||||
|
protected-mode yes # only listen on localhost
|
||||||
|
port 0 # only listen on unix socket
|
||||||
|
unixsocket /run/redis/redis.sock
|
||||||
|
unixsocketperm 770
|
||||||
|
```
|
||||||
|
The rest should be able to stay as is.
|
||||||
|
Start and enable the redis service:
|
||||||
|
```sh
|
||||||
|
systemctl enbale --now redis
|
||||||
|
```
|
||||||
|
and check that it is running:
|
||||||
|
```sh
|
||||||
|
systemctl status redis
|
||||||
|
```
|
||||||
|
Also check that the socket is created:
|
||||||
|
```sh
|
||||||
|
ls -l /run/redis/redis.sock
|
||||||
|
```
|
||||||
|
You can also run a sanity check by connecting to the socket:
|
||||||
|
```sh
|
||||||
|
redis-cli -s /run/redis/redis.sock ping
|
||||||
|
```
|
||||||
|
(You should get a `PONG` response)
|
||||||
|
|
||||||
|
If everything works fine on the redis side, we can now configure php to use it.
|
||||||
|
|
||||||
|
In `/etc/php-legacy/conf.d/redis.ini` uncomment the following:
|
||||||
|
```ini
|
||||||
|
extension=redis
|
||||||
|
```
|
||||||
|
and analogously in `/etc/php-legacy/php-fpm.d/igbinary.ini`:
|
||||||
|
```ini
|
||||||
|
[igbinary]
|
||||||
|
extension=igbinary.so
|
||||||
|
|
||||||
|
igbinary.compact_strings=On
|
||||||
|
```
|
||||||
|
Now we can configure Nextcloud to use redis as a cache.
|
||||||
|
First, add the nextcloud user to the redis group:
|
||||||
|
```sh
|
||||||
|
usermod -a -G redis nextcloud
|
||||||
|
```
|
||||||
|
You can verify that nextcloud now has access to the redis socket by running:
|
||||||
|
```sh
|
||||||
|
sudo -u nextcloud redis-cli -s /run/redis/redis.sock ping
|
||||||
|
```
|
||||||
|
|
||||||
|
In `/etc/webapps/nextcloud/php.ini` uncomment the following:
|
||||||
|
```ini
|
||||||
|
; REDIS
|
||||||
|
extension=igbinary
|
||||||
|
extension=redis
|
||||||
|
```
|
||||||
|
and add the redis unix socket directory to the `open_basedir` directive:
|
||||||
|
```ini
|
||||||
|
open_basedir = <your_current_value>:/run/redis
|
||||||
|
```
|
||||||
|
|
||||||
|
In /etc/webapps/nextcloud/config/config.php add the following to the `CONFIG` array:
|
||||||
|
```php
|
||||||
|
'memcache.distributed' => '\\OC\\Memcache\\Redis',
|
||||||
|
'filelocking.enabled' => 'true',
|
||||||
|
'memcache.locking' => '\\OC\\Memcache\\Redis',
|
||||||
|
'redis' =>
|
||||||
|
array (
|
||||||
|
'host' => '/run/redis/redis.sock',
|
||||||
|
'port' => 0,
|
||||||
|
),
|
||||||
|
```
|
||||||
|
And finally in `/etc/php-legacy/fpm.d/nextcloud.conf` uncomment:
|
||||||
|
```ini
|
||||||
|
php_value[extension] = igbinary
|
||||||
|
php_value[extension] = redis
|
||||||
|
```
|
||||||
|
Also, add to the `open_basedir` directive the redis unix socket directory:
|
||||||
|
```ini
|
||||||
|
php_value[open_basedir] = <your_current_value>:/run/redis
|
||||||
|
```
|
||||||
|
Restart your application server:
|
||||||
|
```sh
|
||||||
|
systemctl restart php-fpm-legacy
|
||||||
|
```
|
||||||
|
Check that everything works by visiting cloud.example.com and checking the admin overview page.
|
||||||
|
If you have an internal server error and are not even able to access cloud.example.com, check the nginx error log for details.
|
||||||
|
|
||||||
### Do not bruteforce throttle local connections
|
### Do not bruteforce throttle local connections
|
||||||
You might see in your admin overview (https://cloud.example.com/settings/admin/overview) an error message like this:
|
You might see in your admin overview (https://cloud.example.com/settings/admin/overview) an error message like this:
|
||||||
|
Loading…
Reference in New Issue
Block a user