Ограничение памяти php nextcloud

Обновлено: 05.07.2024

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

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

Содержание:

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ.

Ищем memory_limit и вводим, например, 512M вместо 128M. И перезапускаем php-fpm

или если хотим побыстрее

Убираем предупреждение о кешировании.

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

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

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

Ставим APCu

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

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

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

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

Ставим Redis.

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

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

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

Убираем ошибку отсутствия индексов

В базе данных отсутствуют некоторые индексы.

Так как создание таких индексов может занять достаточно продолжительное время, оно должно быть запущено вручную. Для создания индексов необходимо запустить команду «occ db:add-missing-indices» во время работы сервера Nextcloud. При созданных индексах, как правило, запросы к базе данных выполняются значительно быстрее.

При успешном индексировании будет следующий текст:

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

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

Вводим сервер в режим обслуживания и выполняем преобразование

И выводим из режима обслуживания

Убираем предупреждение о 4-х байтовых символах

MySQL используется в качестве базы данных, но не поддерживает 4-байтовые символы.

Чтобы иметь возможность обрабатывать 4-байтовые символы (например, смайлики) без проблем в именах файлов или комментариях, рекомендуется включить 4-байтовую поддержку в MySQL. Для получения более подробной информации обратитесь к документации.

Так как первоначально Nextcloud я ставил на базе MariaDB, то по ссылке выше для возможности обработки ошибки я не заметил продолжение про MariaDB, а сразу стал применять шаги для MySQL. Не надо так. Поэтому распишу по шагам, что и как надо делать.

P.S. Убедитесь, что MariaDB версии выше 10.2. У меня была версия 15.1

Убедитесь, что на вашем сервере MySQL установлены следующие параметры InnoDB в файле:

и если их нет, то вставьте в конец файла.

Перезапустите сервер MariaDB

Выясните был ли изменён формат файла на Barracuda

Таблицы должны быть перенесены в “barracuda” вручную, одна за другой. Однако команды SQL можно легко создавать:

После всего проделанного формат файла должен поменяться на Barracuda. Проверим.

Инструкции для MySQL

Вводим в режим обслуживания.

Должен быть такой результат

Отключаем режим обслуживания.

Режим шифрования

Задействован устаревший режим шифрования файлов на стороне сервера.

Рекомендуется отключить такое шифрование. Более подробные сведения содержатся в документации.

Как я понял, устаревший режим шифрования был введён в ранних версиях Nextcloud и впоследствии заменён на новый. Однако в хранилище могли остаться файлы со старым (legacy) типом шифрования.

В документации сказано, что найти эти файлы можно командой

или более полный вариант

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

После этого в файле config.php можно отключить поддержку устаревшего формата шифрования, удалив строку

или, выставив значение false вместо true

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

Настройка обратного прокси для доступа

В файле nextcloud/config/config.php

Для этого добавьте в файл конфигурации nginx на стороне nextcloud следующее содержимое в секцию server

Веб-сервер не настроен должным образом для разрешения «/.well-known/caldav». .

Дополнительная информация может быть найдена в нашей документации

В конфиге nextcloud в статье есть строки с настройкой доступа к этому пути. Для удобства повторю тут

Новый dashboard

Следующая опция для тех, кто обновился до 20 версии и при заходе на главную облака видит новый dashboard вместо знакомого списка файлов.

Исправляется просто добавлением в файл config.php следующей строки

Модуль php-imagick и SVG

Модуль php-imagick в этом случае не поддерживает SVG.

Для лучшей совместимости рекомендуется установить его

Регион размещения сервера

Не указан регион размещения этого сервера Nextcloud, что требуется для возможности проверки номеров телефонов без указания кода страны.

Чтобы разрешить пользователям сервера указывать номера телефонов без указания кода страны, добавьте параметр «default_phone_region» с соответствующим кодом страны в соответствии с ISO 3166-1↗.

Открывает файл config.php, расположенный в директории Nextcloud по пути config/config.php и внизу вставляем строку

Не знаю для чего вообще понадилось разработчикам из Nextcloud вставлять в код такое требование (а это требование, потому что иначе бы не было предупреждения на странице проверки конфигурации), но пока обновляться до 21 версии не стоит. Хотя, возможно, это из-за многочисленных требований регуляторов многих стран, в государственных учреждениях которых используется Nextcloud. Всё может быть. Со временем такое категоричное непринятие 21 версии у меня пропадёт. 🙂

Устанавливаем Midnight Commander и делаем rehash, чтобы FreeBSD обнаружила появление новых команд.

Прописываем nginx в автозагрузке

Запускаем веб-сервер nginx

Проверяем работу nginx


Устанавливаем базы данных

Добавляем в автозагрузку и ограничиваем доступ только с локальной машины

Создаём конфиг для 2 GB RAM

Со следующим содержимым

Задаем пароль root для MariaDB и делаем предварительные настройки

Авторизуемся на сервере баз данных

Создаём базу для nextcloud

Устанавливаем PHP версии 7.3

Далее устанавливаем php73-extensions

Вот список того, что нам необходимо. Список может немного отличаться в зависимости от зачач, возлагаемых на netcloud

PHP module ctype
PHP module curl
PHP module dom
PHP module GD
PHP module iconv
PHP module JSON
PHP module mbstring
PHP module openssl
PHP module posix
PHP module session
PHP module SimpleXML
PHP module XMLReader
PHP module XMLWriter
PHP module zip
PHP module zlib
PHP module pdo_mysql (MySQL/MariaDB)
PHP module fileinfo (highly recommended, enhances file analysis performance)
PHP module bz2 (recommended, required for extraction of apps)
PHP module intl (increases language translation performance and fixes sorting of non-ASCII characters)
PHP module ftp (for FTP storage / external user authentication)
PHP module imap (for external user authentication)
PHP module exif (for image rotation in pictures app)
PHP module gmp (for SFTP storage)

Переходим к редактированию конфига PHP-FPM

Также ищем строки и снимаем с них комментарии

Также разработчики nextcloud советуют использовать следующие параметры:

В итоге получаем следующий конфиг:


Добавляем php-fpm в автозагрузку


Копируем конфигурационный файл php.ini


Редактируем php.ini, чтобы в дальнейшем не было проблем с nextcloud

Ищем нужные параметры и меняем их. Должно получиться

Правим конфиг nginx, у меня получился следующий (точнее, его можно найти на сайте разработчиков):

Для примера и так как сервер находится в локальной сети, я использовал имя nc.local. Теперь создадим CSR сертификат

Или можно два действия выполнить одной командой

Далее создаем самоподписанный сертификат CRT :

Переходим к установке Nextcloud. Скачиваем последнюю версию в домашнюю директорию пользователя

На момент написания это была версия 15.0.5. Если вам нужна именно эта версия, то ссылка для скачивания:

Распаковываем, перемещаем в директорию веб-сервера и выдаём необходимые права

Перезапускаем nginx и используя любой браузер, заходим на сервер:


Если вы увидели



Настраиваем PHP OPcache

Редактируем следующие строки:

Устанавливаем дополнительно, рекомендованный модуль: PHP module apcu (>= 4.0.6)


Проверяем установился ли APC


Для работы необходимо в любом месте конфига php.ini прописать строку apc.enable_cli = 1. Приведу часть своего конфига, я добавил в начале конфига

Устанавливаем и настраиваем PHP module memcached


Настраиваем автоматический запуск, разрешаем слушай только на локальном интерфейсе и выделяем 64 MB памяти

Проверяем работу memcached (мониторить работу memcached можно при помощи memcached-tool):


теперь для работы memcached с php, необходимо установить библиотеки для PHP


Проверяем правильность установки

Проверить при помощи php

Для настройки memcached также не необходимо добавить строки в php.ini и config.php.

Перед строкой с datadirectory, вставляем строки. Для примера привожу часть конфига если используете ip:


прописываем в автозагрузку ( /etc/rc.conf )

Генерируем пароль, который будем использовать в redis


Настраиваем его на работу через сокет

Вот содержимое моего конфига

Проверим аутентификацию по паролю, по окончанию проверки введите exit


В документации рекомендовано: PHP module redis (>= 2.2.6, required for Transactional File Locking) Устанавливаем модуль для работы redis с PHP


Проверяем установку PHP-redis

Теперь необходимо перенастроит конфигурационный файл nextcloud

Вот часть моего конфига

На сайте nextcloud рекомендуется использовать: PHP module libxml (Linux package libxml2 must be >=2.7.0) . Если конфиг для сборки не менялся он должен идти по умолчанию. Проверяем:

Теперь переходим к предупреждениям


В системе не установлены рекомендуемые модули PHP. Для улучшения производительности и совместимости рекомендуется установим модуль imagick .

При установке я меня появилась ошибка

mesa-libs-18.3.2 needs Python 2.7 at most, but 3.6 was specified.

Попробуем установить по отдельности:

Из рекомендованных осталось установить: PHP module smbclient (SMB/CIFS integration, see SMB/CIFS). Нужен он в том случае, если в сети есть файловый сервер и вы хотите через nextcloud организовать доступ к нему. Устанавливаем

Проверяем установку pecl-smbclient

Также на сайте nextcloud рекомендуется использовать параметр cgi.fix_pathinfo=1, ищем его в конфиге php.ini и исправляем.

Чтобы не появлялась ошибка связанная с бездействием, настраиваем выполение фоновых задач при помощи CRON. Открываем редактор от пользователя www и вписываем ниже приведенные строки

В панели администрирования nextcloud указываем выполнение фоновых задач, при помощи крона


Если для хранения данных пользователей используется директория, отличная от стандартной, то создаём её и настраиваем права:

QR Link:

Другие статьи

  • Следующая публикацияКак изменить имя сервера на Freebsd
  • Предыдущая публикацияУстановка FreeBSD 12.0 (по-умолчанию)



Наcтройка CRON в NextCloud


комментария 4

DirectoryIndex index.php index.html

Alias /nextcloud /usr/local/www/nextcloud
AcceptPathInfo On

AllowOverride All
Require all granted

chown -R www:www /usr/local/www/nextcloud/
chmod -R 0755 /usr/local/www/nextcloud/

Я грешу на права где то в гдлубине /www/nextcloud буду признателен за помощ начинающему BSDшнику. Да nextcloud в моем случае работает в локалку без NAT. СПАСИБО

Настроить веб-сервер nginx в связке с php-fpm и MariaDB. После чего установить NextCloud.

Первым дело обновляем сервер и устанавливаем необходимые для администрирования утилиты.


К административным утилитам можно отнести net-tools, так как без неё вы не сможете использовать привычную команду ifconfig, получив соответствующую ошибку:

-bash: ifconfig: command not found

Для установки вводим

Устанавливаем остальное необходимое для NextCloud

Если необходимо настроить сеть, можно воспользоваться nmtui или nmcli.

Если вы обновили сервер, настроили и установили всё необходимое для администрирования, то переходим с установке веб-сервера.

Устанавливаем и настраиваем Nginx

Добавляем репозиторий Nginx

Вписываем содержимое и сохраняем (:wq)

Добавляем сервис nginx в автозагрузку


Запускаем веб-сервер nginx

Чтобы получить внешний доступ к веб-серверу, нам нужно открыть необходимые порты

Проверяем работу веб-сервера


Так же, можно проверить из консоли используя команду curl при помощи другого linux сервера


Устанавливаем и настраиваем MariaDB

Для моей системы соответствует конфиг

Вставляем следующее содержимое и сохраняем (:wq)


Устанавливаем MariaDB сервер и клиент

Добавляем службу MariaDB в автозагрузку

Запускаем мастер настройки безопасности MariaDB

В настройке появился новый вопрос

Switch to unix_socket authentication [Y/n]

если мы хотим использовать аутентификацию через unix-сокет, а именно использовать локальные учётные записи, тогда нажимаем Y. Для меня это пока ново, поэтому я отказался и нажал N

Авторизуемся на сервере баз данных

Создаём базу для nextcloud

Устанавливаем и настраиваем PHP

Если вы хотите использовать PHP версии 7.2, то добавляем репозиторий Webtatic

Устанавливаем PHP и все необходимые пакеты

Если вы хотите использовать PHP версии 7.3, то добавляем репозиторий remi

Устанавливаем PHP, PHP-FPM и всё необходимое

Добавляем PHP-FPM в автозагрузку и запускаем сервис

Делаем резервную копию конфига

Наиболее важные параметры, которые мы будем менять:

Вот содержимое конфига


Необходимо найти cgi.fix_pathinfo и изменить значение на 0


  • req — это генерация запросов на подпись сертификата, но с ключом «-x509», мы указываем что генерируем самоподписанный сертификат.
  • -newkey rsa:2048 — создаем ключ автоматически, так как у нас его ещё нет
  • -days 365 — указываем сколько дней сертификат будет действовать.
  • -keyout /etc/nginx/ssl/server.key — указываем путь для сохранения ключа.
  • -out /etc/nginx/ssl/cert.crt — путь, где будет сохранён сертификат сайта.

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

Теперь необходимо настроить nginx, но первым делаем делаем резервную копию стандартного конфига.

Без излишних подробностей, просто приведу пример моего конфига.

В нашём случае сервер не смог перезапуститься так как, для приватного ключа был создан пароль. Удаляем пароль, в ходе выполнения команды необходимо будет ввести пароль для приватного ключа.

Установка NextCloud

Скачиваем последнюю версию nexcloud и распаковываем в директорию веб сервера.

Nextcloud распакуется в директорию /var/www/nextcloud, на которую необходимо установить необходимые права доступа

Теперь пробуем открыть nextcloud сервер при помощи браузера. У меня открылся , но с ошибкой


Проверяем статус SELinux

Не вдаваясь в подробности, просто отключаем SELinux. Хотя конечно его необходимо настраивать.

Заменяем параметр SELINUX с enforcing на disabled

и перезагружаем сервер


Если у вас сервер установился без ошибок, но при вводе логина и пароля в в окне авторизации ничего не происходит, необходимо проверить права на папку и выдать необходимые


Исправляем указанные ошибки

Затем запускаем printenv PATH и перезапускаем службы

Разрешённое PHP максимальное значение использования памяти ниже рекомендуемого значения в 512 МБ,

В файле /etc/php.ini ищем параметр memory_limit и устанавливаем его 1024M, после чего перезапускаем сервер

Для исправления, вносим исправления в файл /etc/nginx/nginx.conf, вписываем следующую строку

Вот часть конфига и того что должно получиться

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

Hello, i'm using the latest image (with nextcloud 14)
and when i run any php occ command. i get this message
The current PHP memory limit is below the recommended value of 512MB.
i haven't touch the image. it's the official image from docker hub vanilla (with clean installation to mariadb)

The text was updated successfully, but these errors were encountered:

J0WI commented Sep 9, 2018

xXZaretXx commented Sep 10, 2018

Hello,
i have the same problem ,
the php limit is to 128 (php -i | grep memory_limit)
the values in .htacess and user.ini are set to 512

bitdegree67 commented Sep 10, 2018

@J0WI No, as i said. i've just run
docker run nextcloud
and then in this new nextcloud run "php occ" then i get the message of warning 128MB

xXZaretXx commented Sep 10, 2018

@bitdegree67
You can change it with
echo 'memory_limit = 512M' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini;
inside the docker container
but i think its temporary and hacky

bitdegree67 commented Sep 10, 2018

@xXZaretXx I myself proposed this solution

xXZaretXx commented Sep 10, 2018

@bitdegree67 ups yes you are right , i'm blind

ixinshang commented Sep 10, 2018

Hello,
i have the same problem ,someone who can slove it. thanks.

J0WI commented Sep 10, 2018

bitdegree67 commented Sep 11, 2018

The question is why .htaccess isn't used by "php occ"

J0WI commented Sep 11, 2018

Because it's the cli and not apache

bitdegree67 commented Sep 11, 2018

Alright! so it's dsn't a problem for nextcloud, only for occ

@bitdegree67 It is apparently still an issue with the php-fpm variant. My current solution is to have my own derived Dockerfile which simply increases the mem limit, but I think this should really be included in upstream (php-fpm and the alpine alt).

Читайте также: