разрешенное максимальное значение использования памяти php ниже рекомендуемого значения в 512 мб
Тюнинг Nextcloud [обновляемая]
Но, если вам хочется большей производительности, а также не хочется видеть предупреждение о текущей конфигурации, которое будет видно каждый раз при заходе в административную панель, то следующие советы для вас.
Как и ранее я писал, Nextcloud стоит на Ubuntu 18.04 и работает под связкой nginx + php-fpm (версии 7.4) + mysql. Язык интерфейса — русский. Nextcloud установлен в /usr/share/nginx/nextcloud/
После внесения изменений не забываем перезапускать php-fpm. Или можете после применения всех изменений перезапустить его один раз.
Содержание:
Убираем первое предупреждение:
«PHP не настроен правильно для получения переменных системного окружения.
Запрос getenv(«PATH») возвращает пустые результаты.
Обратитесь к разделу о конфигурации PHP и примечаниям к конфигурации
PHP из руководства по установке. Обратите внимание на настройку
параметров PHP, особенно при использовании механизма php-fpm.»
Когда вы используете php-fpm, системные переменные среды, такие как PATH, TMP или другие, не заполняются автоматически так же, как при использовании php-cli. Вызов функции PHP, такой как getenv(‘PATH’); может возвращать пустой результат. Поэтому вам может потребоваться вручную настроить переменные среды в файле конфигурации php-fpm.
Редактируем файл /etc/php/7.4/fpm/pool.d/www.conf
И раскомментируем их.
Или, если побыстрее
Не забываем перезапустить php-fpm
Готово. Идём дальше.
Убираем второе предупреждение
«PHP OPcache не настроен правильно»
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.4/fpm/php.ini или сразу заменим значения sed’ом
Убираем третье предупреждение
Некоторые индексы базы данных не были преобразованы в тип 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» для каждой отдельной таблицы, то ничего особенного не остается делать. Продолжайте с инструкциями для MySQL. Во время тестирования формат файла всех таблиц был “Antelope”.
Таблицы должны быть перенесены в “barracuda” вручную, одна за другой. Однако команды SQL можно легко создавать:
Скопируйте появившийся ответ и уберите в нем символ «|». После этого вставляйте текст в консоль mariadb
После всего проделанного формат файла должен поменяться на Barracuda. Проверим.
Инструкции для MySQL
Вводим в режим обслуживания.
Должен быть такой результат
Отключаем режим обслуживания.
Режим шифрования
Задействован устаревший режим шифрования файлов на стороне сервера.
Рекомендуется отключить такое шифрование. Более подробные сведения содержатся в документации.
Как я понял, устаревший режим шифрования был введён в ранних версиях Nextcloud и впоследствии заменён на новый. Однако в хранилище могли остаться файлы со старым (legacy) типом шифрования.
В документации сказано, что найти эти файлы можно командой
или более полный вариант
В процессе сканирования occ начнёт искать файлы со старым типом шифрования или если в базе такие файлы отсутствуют, выдаст предупреждение, «does not have a proper header«.
Такие файлы я просто заменил копиями тех, у кого есть нужные заголовки. Так как таких файлов у меня просто не было.
После этого в файле config.php можно отключить поддержку устаревшего формата шифрования, удалив строку
или, выставив значение false вместо true
С самими файлами в хранилище ничего не произойдёт, они так же будут зашифрованы как и раньше. В данном случае, мы просто отключили поддержку старого режима шифрования.
Настройка обратного прокси для доступа
Для доступа к файлам, используя обратный прокси, особых настроек делать не надо, достаточно в директиве proxy_pass указать IP сервера с Nextcloud. Однако, если вы используете клиент Nextcloud, то он при авторизации запустит окно браузера с IP сервера Nextcloud, а не его доменным именем. Чтобы это исправить, делаем следующее:
Для примера IP обратного прокси — 192.168.0.1, IP Nextcloud-сервера — 192.168.0.2
В файле nextcloud/config/config.php
Таким образом, опция trusted_proxies исправляет проблему «Заголовки обратного прокси настроены неправильно, либо вы подключены к серверу Nextcloud через доверенный прокси«
Уведомление о HTTP «X-Frame-Options»
Заголовок HTTP «X-Frame-Options» не настроен на значение «SAMEORIGIN».
Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.
Для этого добавьте в файл конфигурации nginx на стороне nextcloud следующее содержимое в секцию server
Дополнительная информация может быть найдена в нашей документации
В конфиге nextcloud в статье есть строки с настройкой доступа к этому пути. Для удобства повторю тут
Новый dashboard
Следующая опция для тех, кто обновился до 20 версии и при заходе на главную облака видит новый dashboard вместо знакомого списка файлов.
Исправляется просто добавлением в файл config.php следующей строки
Модуль php-imagick и SVG
Модуль php-imagick в этом случае не поддерживает SVG.
Для лучшей совместимости рекомендуется установить его
После установки или обновления Nextcloud до 21 версии появится сообщение об ошибке в модуле php-imagick. И хотя само расширение для php установлено, может статься, что в системе не установлен пакет приложения imagemagick. Поэтому ставим его через apt
В русском переводе на 2021.03.25 фраза переведена немного неправильно. В оригинале это выглядит как «Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it.» — «У модуля php-imagick на этом сервере отсутствует поддержка формата SVG. Для лучшей совместимости рекомендуется установить его»
Регион размещения сервера
Не указан регион размещения этого сервера Nextcloud, что требуется для возможности проверки номеров телефонов без указания кода страны.
Чтобы разрешить пользователям сервера указывать номера телефонов без указания кода страны, добавьте параметр «default_phone_region» с соответствующим кодом страны в соответствии с ISO 3166-1↗.
Опять же после обновления до 21 версии Nextcloud появляется такое предупреждение. Точную причину почему в Nextcloud понадобилось указывать номер телефона я не знаю, но как устранить это предупреждение — знаю.
Открывает файл config.php, расположенный в директории Nextcloud по пути config/config.php и внизу вставляем строку
Не знаю для чего вообще понадилось разработчикам из Nextcloud вставлять в код такое требование (а это требование, потому что иначе бы не было предупреждения на странице проверки конфигурации), но пока обновляться до 21 версии не стоит. Хотя, возможно, это из-за многочисленных требований регуляторов многих стран, в государственных учреждениях которых используется Nextcloud. Всё может быть. Со временем такое категоричное непринятие 21 версии у меня пропадёт. 🙂
Установка и настройка NextCloud на CentOS
Данная инструкция протестирована для установки NextCloud версий 17, 18, 19 и 20, а также CentOS 8. В качестве веб-сервера нами будет использоваться связка NGINX + MariaDB + php-fpm. Мы будем выполнять чистую установку на сервер (без docker).
Подготовка сервера
1. Системные требования
2. Правильное время.
Устанавливаем утилиту chrony:
dnf install chrony
Запускаем ее службу:
Выставляем нужный часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время. Другие зоны также можно найти по пути /usr/share/zoneinfo.
3. Настройка брандмауэра.
Выполняется следующими командами:
4. Отключение SELinux.
Для отключения SELinux вводим две команды:
* первая команда отключает SELinux до перезагрузки, вторая — навсегда.
* подробнее об отключении SELinux. Подробнее о настройке SELinux.
Настройка сервера баз данных
В качестве СУБД используем MariaDB.
dnf install mariadb-server
Разрешаем автозапуск и стартуем сервис:
Задаем пароль для суперпользователя mysql:
Подключаемся к MariaDB, создаем базу данных и пользователя:
> CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost IDENTIFIED BY ‘nextcloud’;
* данными командами мы создали базу данных nextcloud, затем с таким же названием мы создали пользователя и задали ему пароль nextcloud.
Установка и настройка веб-сервера
В репозитории CentOS 8 есть требуемая версия пакета php. Для ее установки просто вводим команду:
dnf install php php-fpm php-pdo php-zip php-dom php-intl php-gd php-mysqli php-mbstring php-json php-process php-bcmath php-gmp php-imagick php-opcache
PHP-FPM
Сам пакет php-fpm мы установили на предыдущем шаге. Поэтому на данном этапе необходимо его настроить.
Открываем конфигурационный файл:
Находим опцию listen. Проверяем ее значение:
Разрешаем автозапуск php-fpm и запускаем его:
NGINX
Nextcloud можно развернуть на NGINX или Apache. В данной инструкции будем использовать первый.
Для правильной работы nextcloud запросы должны идти по https. Для этого создаем виртуальный домен и настраиваем его для работы с облачным сервисом в NGINX:
server <
listen 80;
server_name nextcloud.dmosk.ru;
return 301 https://$server_name$request_uri;
>
server <
listen 443 ssl;
server_name nextcloud.dmosk.ru;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
add_header Strict-Transport-Security «max-age=31536000; includeSubDomains» always;
client_max_body_size 10G;
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 = /core/templates/403.php;
error_page 404 = /core/templates/404.php;
location = /robots.txt <
allow all;
log_not_found off;
access_log off;
>
^/(data|config|\.ht|db_structure\.xml|README) <
deny all;
>
* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ <
expires modified +30d;
access_log off;
>
>
* где dmosk.ru — домен, на котором будет работать сервис; nextcloud.dmosk.ru — имя сервера, на котором будет работать nextcloud; /etc/nginx/ssl — каталог, в котором будут храниться сертификаты; /var/www/nextcloud — каталог с порталом.
Создаем каталог для хранения сертификатов и переходим в него:
* данная команда создаст сертификат на 4 года для URL nextcloud.dmosk.ru или nextcloud.
* в данном примере мы, всего лишь, создали самоподписанный сертификат, который не будет приниматься браузером и нужно будет пропускать предупреждение. Данный метод подходит для тестирования, а для продуктивной среды стоит купить сертификат или получить его бесплатно от Let’s Encrypt.
Проверяем конфигурацию nginx, разрешаем его автозапуск и перезапускаем сервис:
Установка Nextcloud
Для загрузки и распаковки архива на нужны следующие пакеты:
dnf install wget unzip
Переходим во временную папку:
Заходим на сайт nextcloud и копируем ссылку на скачивание последней версии программы:
Скачиваем исходник для установки:
Распаковываем скачанный архив:
Задаем права доступа:
Открываем браузер и переходим по адресу https://nextcloud.dmosk.ru, где nextcloud.dmosk.ru — наш адрес облачного сервиса, который мы создали в NGINX. Если мы используем самоподписанный сертификат, браузер выдаст предупреждение безопасности — игнорируем его и переходим на страницу.
* так как мы настроили виртуальный домен, важно обратиться к серверу, именно, по имени. Таким образом, настроенный узел (в моем случае, nextcloud.dmosk.ru) должен разрешаться в DNS или быть внесен в локальный файл hosts.
Прописываем логин и пароль администратора, которые хотим использовать для входа, кликаем по Хранилище и база данных:
Переключаемся на MySQL/MariaDB, вводим в качестве логина, пароля и базы nextcloud:
Завершаем установку, при желании, оставим галочку для установки рекомендованных приложений:
После установки мы окажемся в системе.
Проверка безопасности и параметров
Для корректной работы системы выполним дополнительную настройку системы. После входа в nextcloud под администратором, переходим в настройки для пользователя:
В разделе «Параметры сервера» переходим в Основные сведения:
В разделе «Проверка безопасности и параметров» мы можем увидеть список проблем:
Рассмотрим процесс решения некоторых из них.
1. PHP не настроен правильно для получения переменных системного окружения
Открываем файл php.ini. При нашей установке, это:
Снимаем комментарий с параметра PATH:
systemctl restart php-fpm
2. Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ
Открываем на редактирование файл:
Меняем настройку для memory_limit:
systemctl restart php-fpm
3. В базе данных отсутствуют некоторые индексы
Выполним команду для индексирования баз:
4. Некоторые индексы базы данных не были преобразованы в тип big int
Выполним команду для преобразования в тип big int:
На запрос Continue with the conversion отвечаем утвердительно:
Continue with the conversion (y/n)? [n] y
5. В системе не установлены рекомендуемые модули PHP
Данная ошибка устраняется в зависимости от списка модулей, которых не хватает системе. Чаще всего, подходит команда:
Установка некоторых модулей может вызвать затрудение. Например, imagick в CentOS 8 устанавливается по инструкции ниже.
После устанавливаем пакеты, необходимые для сборки imagick:
dnf install php-devel php-pear make
pecl install imagick
Создаем файл с расширением php:
systemctl restart php-fpm
6. Не загружен модуль OPcache
Устанавливаем модуль opcache командой:
dnf install php-opcache
Открываем конфигурационный файл:
.
opcache.max_accelerated_files=10000
.
opcache.save_comments=1
.
opcache.revalidate_freq=1
.
systemctl restart php-fpm
7. Не настроена система кеширования
Для решения проблемы мы должны установить и настроить одно из средств кэширования:
Мы рассмотрим последний вариант. Для этого выполняем установку модуля по инструкции Установка и настройка memcached на CentOS.
После этого открываем конфигурационный файл для nextcloud:
.
‘memcache.local’ => ‘\\OC\\Memcache\\Memcached’,
‘memcache.distributed’ => ‘\\OC\\Memcache\\Memcached’,
‘memcached_servers’ =>
array (
0 =>
array (
0 => ‘localhost’,
1 => 11211,
),
),
.
8. MySQL используется в качестве базы данных, но не поддерживает 4-байтовые символы
Выполняем конфигурирование в несколько этапов.
Настройка СУБД
Заходим в оболочку mysql:
Смотрим значение для переменной innodb_file_format:
> show variables like ‘innodb_file_format’;
Если видим значение «Antelope», меняем его на Barracuda:
> SET GLOBAL innodb_file_format=Barracuda;
Выходим из оболочки:
Настройка Nextcloud
Переводим Nextcloud в режим обслуживания:
Перезагружаем mariadb (если на первом шаге нам пришлось менять значение для переменной innodb_file_format):
systemctl restart mariadb
Редактирование базы данных
Снова подключаемся к консоли управления СУБД:
Меняем кодировку для базы данных:
> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
* где nextcloud — имя созданной нами базы данных.
Выходим из mariadb:
Также задаем новую кодировку для nextcloud
Преобразуем все таблицы в базе:
Завершаем режим обслужавания:
Установка и настройка клиента
Для синхронизации файлов установим и настроим клиента. Nextcloud поддерживает установку на Windows, Linux, Mac, iOS и Android.
Переходим на страницу загрузки Nextcloud и скачиваем нужный клиент. После устанавливаем его, отвечая на все вопросы мастера по умолчанию. Для установки клиента на телефон, пользуемся Google Play или Apple App Store.
Запускаем клиентское приложение и переходим к настройке, кликнув по Войти:
На следующей странице вводим адрес нашего сервера и кликаем по Далее:
Нас перекинет на веб страницу для авторизации — вводим логин и пароль для пользователя. После успешной авторизации можно использовать клиент для синхронизации с файлов с нашим облаком.
Работа с пользователями из UNIX-Shell
В состав nextcloud входит php-скрипт occ, с помощью которого можно управлять сервисом из командной строки Linux.
Добавление пользователя
Создать нового пользователя можно командой:
* где admin — имя учетной записи.
Сброс пароля
При необходимости сбросить пароль пользователя, можно воспользоваться командой:
* где admin — учетная запись пользователя, чей пароль хотим сбросить.
Установка приложений
Слева можно увидеть категории, по которым разбиты приложения:
Для установки нужного приложения просто кликаем под его описанием Скачать и включить.
Настройка почтового сервера
Для отправки уведомлений и возможности отправлять письма с nextcloud необходимо прописать сервер отправки почты. Для этого переходим в настройки и в разделе «Параметры сервера» переходим в Основные параметры:
Для раздела «Почтовый сервер» заполняем поля сервера отправки:
* в данном примере мы указали такие настройки:
* в вашем случае настройки могут быть принципиально другими. Их можно уточнить у поставщика почтовых услуг.
После внесения настроек кликаем по Отправить сообщение — если все сделано правильно, мы увидим сообщение «Письмо отправлено».
Подключение nextcloud как сетевой диск
Мы можем подключить пользовательские данные nextcloud в качестве сетевого диска. Рассмотрим процесс для Windows.
Для начала необходимо включить службу «Веб-клиент». Для этого открываем от администратора командную строку и вводим команды:
sc config webclient start= auto
net start webclient
* первая команда включит автозапуск службы; вторая — запустит ее.
После открываем командную строку от пользователя и создаем сетевой диск командой:
net use : https:// /remote.php/webdav /user:user password
Например, для нашей настройки:
net use N: https://nextcloud.dmosk.ru/remote.php/webdav /user:admin password
* где N — буква сетевого диска; nextcloud.dmosk.ru — адрес нашего сервера; admin — учетная запись, которая была создана при установке системы; password — пароль от пользователя admin.
Ошибка 0x800700DF
В Windows при попытке скопировать большой файл с сетевого диска webdav, мы можем получить ошибку Ошибка 0x800700DF: Размер файла превышает установленное ограничение, сохранение файла невозможно:
Проблема заключается в ограничении со стороны операционной системы Windows. Максимально разрешенный объем составляет, примерно, 50 мб. Для его увеличения необходимо внести изменения в реестре — ветка HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters, параметр FileSizeLimitInBytes. Максимально разрешенное значение 4294967295 (около 4 Гб).
Также можно воспользоваться командой:
reg add «HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters» /v FileSizeLimitInBytes /t REG_DWORD /d 4294967295 /f
* команду нужно запускать в консоли, запущенной от администратора.
Для применения настройки необходимо перезапустить службу «Веб-клиент» или компьютер.
Читайте также
Другие статьи для реализации облачного диска: