Тюнинг Nextcloud 15

После установки Nextcloud им можно сразу же пользоваться. (А если вы здесь по вопросу отключения техобслуживания Nextcloud, то вот команда — sudo -u www-data php /path/to/nextcloud/occ maintenance:mode —off (перед off ставьте два дефиса) )

Но, если вам хочется большей производительности, а также не хочется видеть предупреждение о текущей конфигурации, которое будет видно каждый раз при заходе в административную панель, то следующие советы для вас.

Как и ранее я писал, Nextcloud стоит на Ubuntu 18.04 и работает под связкой nginx + php-fpm + mysql. Язык интерфейса — русский.

После внесения изменений не забываем перезапускать php-fpm. Или можете после применения всех изменений перезапустить его один раз.

Убираем первое предупреждение:

"PHP не настроен правильно для получения переменных системного окружения. 
Запрос getenv("PATH") возвращает пустые результаты.
Обратитесь к разделу о конфигурации PHP и примечаниям к конфигурации
PHP из руководства по установке. Обратите внимание на настройку
параметров PHP, особенно при использовании механизма php-fpm."

Как сказано в документации

Когда вы используете php-fpm, системные переменные среды, такие как PATH, TMP или другие, не заполняются автоматически так же, как при использовании php-cli. Вызов функции PHP, такой как getenv(‘PATH’); может возвращать пустой результат. Поэтому вам может потребоваться вручную настроить переменные среды в файле конфигурации php-fpm.

Редактируем файл /etc/php/7.2/fpm/pool.d/www.conf

Ищем такие строки:

;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp

И раскомментируем их.

Или, если побыстрее

sed -i -e "s/\;env\[/env\[/g" \
/etc/php/7.2/fpm/pool.d/www.conf

Не забываем перезапустить php-fpm

systemctl restart php7.2-fpm

Готово. Идём дальше.

Убираем второе предупреждение

«PHP OPcache не настроен правильно»


 Для обеспечения лучшей производительности рекомендуется задать в файле php.ini следующие параметры настроек:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Заменим вручную вышеуказанные параметры в файле /etc/php/7.2/fpm/php.ini или сразу заменим значения sed’ом

sed -i -e "s/\;opcache.enable=1/opcache.enable=1/g" \
/etc/php/7.2/fpm/php.ini
sed -i -e "s/\;opcache.enable_cli=0/opcache.enable_cli=1/g" \
/etc/php/7.2/fpm/php.ini
sed -i -e "s/\;opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=8/g" \
/etc/php/7.2/fpm/php.ini
sed -i -e "s/\;opcache.max_accelerated_files=10000/opcache.max_accelerated_files=10000/g" \
/etc/php/7.2/fpm/php.ini
sed -i -e "s/\;opcache.memory_consumption=128/opcache.memory_consumption=128/g" \
/etc/php/7.2/fpm/php.ini
sed -i -e "s/\;opcache.save_comments=1/opcache.save_comments=1/g" \
/etc/php/7.2/fpm/php.ini
sed -i -e "s/\;opcache.revalidate_freq=2/opcache.revalidate_freq=1/g" \
/etc/php/7.2/fpm/php.ini

Убираем третье предупреждение

Некоторые индексы базы данных не были преобразованы в тип big int


Так как преобразование таких индексов может занять продолжительное время, оно должно быть запущенно вручную. Чтобы выполнить преобразование, необходимо включить режим обслуживания и запустить в терминале команду «occ db:convert-filecache-bigint». Дополнительные сведения приведены на соответствующей странице документации.filecache.mtime
filecache.storage_mtime

Для того, чтобы не потерять данные, или чтобы не было ошибок на клиентах, или просто для спокойствия нервной системы введите Nextcloud в режим обслуживания. Можно либо погасить веб-сервер, либо вставить\изменить параметр «maintenance»

В первом случае достаточно

systemctl stop nginx

Во втором — вставьте параметр (если его ещё нет) в файл config/config.php в директории установки Nextcloud. В случае установки по инструкции это будет выглядеть так:

nano /usr/share/nginx/nextcloud/config/config.php

и в конец файла до закрывающей скобки и точки с запятой вставьте эту команду:

'maintenance' => true,

Обратите внимание на запятую в конце строки — она важна. Сохраните и закройте файл. В браузере вы можете увидеть, что система находится в режиме обслуживания. Теперь в консоли выполните следующее:

sudo -u www-data php /usr/share/nginx/nextcloud/occ db:convert-filecache-bigint -–no-interaction

Затем выключите режим обслуживания, заменив true на false.

Следующий шаг посложнее.

Убираем ещё одно предупреждение.

Не настроена система кеширования

Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация доступна в документации

Поэтому прикручиваем систему кэширования, состоящую из локальной системы кэширования на основе APCu и системы распределённого кеширования Redis.

Ставим APCu

 apt install php-apcu -y

В файле php.ini включаем apcu

nano /etc/php/7.2/fpm/php.ini

вставив в начало

apc.enable_cli=1

Сохраняем файл и перезапускаем php-fpm.

Редактируем файл config/config.php в директории установки Nextсloud

nano /usr/share/nginx/nextcloud/config/config.php

и вставляем следующую строку

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

Ставим Redis.

apt install redis-server php-redis -y

Проверяем, что он запустился

ps ax | grep redis
15758 ? Ssl 0:00 /usr/bin/redis-server 127.0.0.1:6379

В тот же файл config/config.php

nano /usr/share/nginx/nextcloud/config/config.php

вставьте следующее

  'memcache.distributed' => '\OC\Memcache\Redis',
'redis' =>
array (
'host' => '127.0.0.1',
'port' => 6379,
),
'memcache.locking' => '\OC\Memcache\Redis',

Сохраняем файл. Перезапускаем php-fpm, если вы это ещё не сделали и наслаждаемся ускоренной работе Nextcloud.

7 thoughts on “Тюнинг Nextcloud 15

  1. Владимир

    Добрый день!
    У меня не выходит из режима технического обслуживания.
    при вводе команды
    sudo -u www-data php /path/to/nextcloud/occ maintenance:mode —off
    пишет
    Could not open input file: /path/to/nextcloud/occ

    Все настраивал по вашим гайдам.

    1. DiDim Автор записи

      /path/to/nextcloud/occ — это путь к установленному nextcloud’у, он может отличаться, но если смотреть по моим статьям, то путь такой — /usr/share/nginx/nextcloud/
      P.S. И да, перед off стоят два дефиса

      1. Владимир

        Спасибо. Действительно путь не тот был, как в шапке.

        Но после действий про ТО, когда включаю его, то когда захожу на веб интерфейс пишет, что идет ТО.
        А когда отключаю, то не могу подключится(ничего не происходит).
        И если опять включу в true, то через какое-то время пишет, что идет ТО.

        Не подскажите в чем может быть дело?

        Спасибо Вам большое за ваш труд при написании циклов статей!

        1. DiDim Автор записи

          Подсказать не могу — причин может быть много. Тут только смотреть в логи nextcloud’а и веб-сервера.
          Или снести всё и поставить заново 🙂
          Или сделать бэкап и перенести на новую платформу\систему.

  2. Святослав

    Спасибо огромное за Ваш цикл статей по Nextcloud!
    Найти в рунете что-то подобное крайне сложно. Современные средства (apt) и доходчивые объяснения. Иногда думается «да нах*й столько блогов расплодилось», а когда приходится решать задачу и ответ находится не на каких-нибудь гигантах, вроде хабра или медиума, а только на таких скромных ресурсах, понимаешь, что сильно ошибался.

    1. DiDim Автор записи

      Очень приятно, что мои небольшие заметки ценятся и комментируются. Как ни удивительно, но действительно появляется желание писать и дальше 🙂
      Сам пользуюсь nextcloud’ом как основным облаком и для бесплатного продукта он очень даже хорош.

  3. Олег

    Nextcloud крайне удобен для работы, раньше сидели всем офисом на OwnCloud. Но у последнего были проблемы в виде ежедневных зависаний.

Добавить комментарий

Ваш e-mail не будет опубликован.