Предыдущая версия справа и слеваПредыдущая версия | |
web:cms:dokuwiki-tuning [1] – удалено novik | web:cms:dokuwiki-tuning [1] (текущий) – создано novik |
---|
| <html> |
| <div class="entry-content"> |
| |
| <p class="has-black-color has-vivid-green-cyan-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-fdf2d2ffd1baef4103e8c5648f7f1a45">UPD 2024.12.24. Статья обновилась на использование Ubuntu 24 и, соответственно, php версии 8.3. </p> |
| |
| |
| |
| <p>После <a href="https://kurazhov.ru/install-nextcloud-ubuntu-18-lemp/">установки Nextcloud</a> им можно сразу же пользоваться. (А если вы здесь по вопросу отключения техобслуживания Nextcloud, то вот команда — sudo -u www-data php /path/to/nextcloud/occ maintenance:mode —off (перед off ставьте два дефиса) )</p> |
| |
| |
| |
| <p>Но, если вам хочется большей производительности, а также не хочется видеть предупреждение о текущей конфигурации, которое будет видно каждый раз при заходе в административную панель, то следующие советы для вас.</p> |
| |
| |
| |
| <figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="1024" height="219" src="https://kurazhov.ru/wp-content/uploads/2019/02/2019-02-16_01-39-38-1024x219.png" alt="" class="wp-image-1938" srcset="https://kurazhov.ru/wp-content/uploads/2019/02/2019-02-16_01-39-38-1024x219.png 1024w, https://kurazhov.ru/wp-content/uploads/2019/02/2019-02-16_01-39-38-150x32.png 150w, https://kurazhov.ru/wp-content/uploads/2019/02/2019-02-16_01-39-38-300x64.png 300w, https://kurazhov.ru/wp-content/uploads/2019/02/2019-02-16_01-39-38-624x134.png 624w, https://kurazhov.ru/wp-content/uploads/2019/02/2019-02-16_01-39-38.png 1588w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> |
| |
| |
| |
| <p>Как и ранее я писал, Nextcloud стоит на Ubuntu 24.04 и работает под связкой nginx + php-fpm (версии 8.3) + mysql. Язык интерфейса — русский. Nextcloud установлен в /usr/share/nginx/nextcloud/</p> |
| |
| |
| |
| <span id="more-1937"></span> |
| |
| |
| |
| <p>После внесения изменений не забываем перезапускать php-fpm. Или можете после применения всех изменений перезапустить его один раз.</p> |
| |
| |
| |
| <p id="0"><strong><em>Содержание:</em></strong></p> |
| |
| |
| |
| <ol class="wp-block-list"> |
| <li><a href="#1" data-type="internal" data-id="#1">PHP не настроен правильно для получения переменных системного окружения</a>.</li> |
| |
| |
| |
| <li><a href="#2" data-type="internal" data-id="#2">PHP OPcache не настроен правильно</a></li> |
| |
| |
| |
| <li><a href="#3" data-type="internal" data-id="#3">Некоторые индексы базы данных не были преобразованы в тип big int</a></li> |
| |
| |
| |
| <li><a href="#4" data-type="internal" data-id="#4">Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ</a></li> |
| |
| |
| |
| <li><a href="#5" data-type="internal" data-id="#5">Не настроена система кеширования</a></li> |
| |
| |
| |
| <li><a href="#6" data-type="internal" data-id="#6">В базе данных отсутствуют некоторые индексы</a></li> |
| |
| |
| |
| <li><a href="#7" data-type="internal" data-id="#7">MySQL используется в качестве базы данных, но не поддерживает 4-байтовые символы</a></li> |
| |
| |
| |
| <li><a href="#8" data-type="internal" data-id="#8">Задействован устаревший режим шифрования файлов на стороне сервера</a></li> |
| |
| |
| |
| <li><a href="#9" data-type="internal" data-id="#9">Настройка обратного прокси для доступа</a></li> |
| |
| |
| |
| <li><a href="#10" data-type="internal" data-id="#10">Заголовок HTTP «X-Frame-Options» не настроен на значение «SAMEORIGIN»</a></li> |
| |
| |
| |
| <li><a href="#11" data-type="internal" data-id="#11">Новый dashboard</a></li> |
| |
| |
| |
| <li><a href="#12">Модуль php-imagick и SVG</a></li> |
| |
| |
| |
| <li><a href="#13">Регион размещения сервера</a></li> |
| |
| |
| |
| <li><a href="#14" data-type="internal" data-id="#14">Файлы .mjs</a></li> |
| |
| |
| |
| <li><a href="#15" data-type="internal" data-id="#15">Время обслуживания</a></li> |
| |
| |
| |
| <li><a href="#16" data-type="internal" data-id="#16">PHP output_buffering</a></li> |
| |
| |
| |
| <li><a href="#17" data-type="internal" data-id="#17">Настройка e-mail</a></li> |
| |
| |
| |
| <li><a href="#18">Формат строки в базе данных</a></li> |
| </ol> |
| |
| |
| |
| <a name="1"></a><h2>Убираем первое предупреждение: </h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>«PHP не настроен правильно для получения переменных системного окружения.</p> |
| <cite>Запрос getenv(«PATH») возвращает пустые результаты.<br>Обратитесь к разделу о конфигурации PHP и примечаниям к конфигурации<br>PHP из <a href="https://docs.nextcloud.com/server/15/go.php?to=admin-php-fpm">руководства по установке</a>. Обратите внимание на настройку<br>параметров PHP, особенно при использовании механизма php-fpm.»</cite></blockquote> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Как сказано в документации</p> |
| <cite>Когда вы используете php-fpm, системные переменные среды, такие как PATH, TMP или другие, не заполняются автоматически так же, как при использовании php-cli. Вызов функции PHP, такой как getenv(‘PATH’); может возвращать пустой результат. Поэтому вам может потребоваться вручную настроить переменные среды в файле конфигурации php-fpm. </cite></blockquote> |
| |
| |
| |
| <p>Редактируем файл /etc/php/8.3/fpm/pool.d/www.conf</p> |
| |
| |
| |
| <p>Ищем такие строки:</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">;env[HOSTNAME] = $HOSTNAME<br>;env[PATH] = /usr/local/bin:/usr/bin:/bin <br>;env[TMP] = /tmp <br>;env[TMPDIR] = /tmp <br>;env[TEMP] = /tmp</pre> |
| |
| |
| |
| <p>И раскомментируем их.</p> |
| |
| |
| |
| <p>Или, если побыстрее</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sed -i -e "s/\;env\[/env\[/g" \<br>/etc/php/8.3/fpm/pool.d/www.conf</pre> |
| |
| |
| |
| <p>Не забываем перезапустить php-fpm</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">systemctl restart php8.3-fpm</pre> |
| |
| |
| |
| <p>Готово. Идём дальше.</p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="2"></a><h2>Убираем второе предупреждение</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>«PHP OPcache не настроен правильно»</p> |
| <cite> <a href="https://docs.nextcloud.com/server/15/go.php?to=admin-php-opcache">Для обеспечения лучшей производительности рекомендуется </a>задать в файле <code>php.ini</code> следующие параметры настроек: <br><br><code>opcache.enable=1</code><br><code>opcache.enable_cli=1</code><br><code>opcache.interned_strings_buffer=</code>16<br><code>opcache.max_accelerated_files=10000</code><br><code>opcache.memory_consumption=256</code><br><code>opcache.save_comments=1</code><br><code>opcache.revalidate_freq=1</code></cite></blockquote> |
| |
| |
| |
| <p>Заменим вручную вышеуказанные параметры в файле <strong>/etc/php/8.3/fpm/php.ini</strong> или сразу заменим значения sed’ом</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sed -i -e "s/\;opcache.enable=1/opcache.enable=1/g" \<br>/etc/php/8.3/fpm/php.ini<br>sed -i -e "s/\;opcache.enable_cli=0/opcache.enable_cli=1/g" \<br>/etc/php/8.3/fpm/php.ini<br>sed -i -e "s/\;opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=16/g" \<br>/etc/php/8.3/fpm/php.ini<br> sed -i -e "s/\;opcache.max_accelerated_files=10000/opcache.max_accelerated_files=10000/g" \<br>/etc/php/8.3/fpm/php.ini<br>sed -i -e "s/\;opcache.memory_consumption=128/opcache.memory_consumption=256/g" \<br>/etc/php/8.3/fpm/php.ini<br>sed -i -e "s/\;opcache.save_comments=1/opcache.save_comments=1/g" \<br>/etc/php/8.3/fpm/php.ini<br>sed -i -e "s/\;opcache.revalidate_freq=2/opcache.revalidate_freq=1/g" \<br>/etc/php/8.3/fpm/php.ini</pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="3"></a><h2>Убираем третье предупреждение</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p> Некоторые индексы базы данных не были преобразованы в тип big int </p> |
| <cite> <br>Так как преобразование таких индексов может занять продолжительное время, оно должно быть запущенно вручную. Чтобы выполнить преобразование, необходимо включить режим обслуживания и запустить в терминале команду «occ db:convert-filecache-bigint». Дополнительные сведения приведены <a href="https://docs.nextcloud.com/server/15/go.php?to=admin-bigint-conversion">на соответствующей странице документации</a>.filecache.mtime<br>filecache.storage_mtime </cite></blockquote> |
| |
| |
| |
| <p>Для того, чтобы не потерять данные, или чтобы не было ошибок на клиентах, или просто для спокойствия нервной системы введите Nextcloud в режим обслуживания. </p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --on</pre> |
| |
| |
| |
| <p>В браузере вы можете увидеть, что система находится в режиме обслуживания. Теперь в консоли выполните следующее:</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ db:convert-filecache-bigint --no-interaction |
| </pre> |
| |
| |
| |
| <p>Затем выключите режим обслуживания. </p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --off</pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="4"></a><h2>Убираем предупреждение о php</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ.</p> |
| </blockquote> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo nano /etc/php/8.3/fpm/php.ini</pre> |
| |
| |
| |
| <p>Ищем memory_limit и вводим, например, 512M вместо 128M. И перезапускаем php-fpm</p> |
| |
| |
| |
| <p>или если хотим побыстрее</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sed -i -e "s/memory_limit = 128M/memory_limit = 512M/g" /etc/php/8.3/fpm/php.ini</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo systemctl restart php8.3-fpm</pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="5"></a><h2>Убираем предупреждение о кешировании. </h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p> Не настроена система кеширования </p> |
| <cite> Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация доступна в <a href="https://docs.nextcloud.com/server/15/go.php?to=admin-performance">документации</a> </cite></blockquote> |
| |
| |
| |
| <p>Поэтому прикручиваем систему кэширования, состоящую из локальной системы кэширования на основе APCu и системы распределённого кеширования Redis. </p> |
| |
| |
| |
| <h3 class="wp-block-heading">Ставим APCu</h3> |
| |
| |
| |
| <pre class="wp-block-preformatted"> sudo apt install php-apcu -y</pre> |
| |
| |
| |
| <p>В файле php.ini включаем <strong>apcu</strong></p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo nano /etc/php/8.3/cli/php.ini</pre> |
| |
| |
| |
| <p>вставив в начало</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">apc.enable_cli=1</pre> |
| |
| |
| |
| <p>Сохраняем файл и перезапускаем php-fpm.</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo systemctl restart php8.3-fpm</pre> |
| |
| |
| |
| <p>Редактируем файл config/config.php в директории установки Nextсloud </p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo nano /usr/share/nginx/nextcloud/config/config.php</pre> |
| |
| |
| |
| <p>и вставляем следующую строку перед закрывающем скобкой «);»</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">'memcache.local' => '\OC\Memcache\APCu',</pre> |
| |
| |
| |
| <h3 class="wp-block-heading">Ставим Redis.</h3> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo apt install redis-server php-redis -y</pre> |
| |
| |
| |
| <p>Проверяем, что он запустился</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">ps ax | grep redis<br> 15758 ? Ssl 0:00 /usr/bin/redis-server 127.0.0.1:6379</pre> |
| |
| |
| |
| <p>В тот же файл config/config.php</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo nano /usr/share/nginx/nextcloud/config/config.php</pre> |
| |
| |
| |
| <p>вставьте следующее опять перед закрывающей скобкой «);»</p> |
| |
| |
| |
| <pre class="wp-block-preformatted"> 'memcache.distributed' => '\OC\Memcache\Redis',<br> 'redis' =><br> array (<br> 'host' => '127.0.0.1',<br> 'port' => 6379,<br> ),<br> 'memcache.locking' => '\OC\Memcache\Redis', </pre> |
| |
| |
| |
| <p>Сохраняем файл. Перезапускаем php-fpm, если вы это ещё не сделали и наслаждаемся ускоренной работе Nextcloud.</p> |
| |
| |
| |
| <p>P.S. Если при консольном выполнении команд вы получаете такое сообщение: </p> |
| |
| |
| |
| <pre class="wp-block-preformatted">OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)</pre> |
| |
| |
| |
| <p>то тогда пропишите в файл <strong>php.ini</strong>, который находится по пути <strong>/etc/php/8.3/cli</strong> следующий текст</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">apc.enable_cli=1</pre> |
| |
| |
| |
| <p>Ошибка должна исчезнуть</p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="6"></a><h2>Убираем ошибку отсутствия индексов</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>В базе данных отсутствуют некоторые индексы. </p> |
| <cite>Так как создание таких индексов может занять достаточно продолжительное время, оно должно быть запущено вручную. Для создания индексов необходимо запустить команду «occ db:add-missing-indices» во время работы сервера Nextcloud. При созданных индексах, как правило, запросы к базе данных выполняются значительно быстрее.</cite></blockquote> |
| |
| |
| |
| <p>Выполняем</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ db:add-missing-indices</pre> |
| |
| |
| |
| <p>При успешном индексировании будет следующий текст:</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">Check indices of the share table. |
| Check indices of the filecache table. |
| Check indices of the twofactor_providers table. |
| Check indices of the login_flow_v2 table. |
| Check indices of the whats_new table. |
| Check indices of the cards table. |
| Check indices of the cards_properties table. |
| Check indices of the calendarobjects_props table. |
| Adding calendarobject_calid_index index to the calendarobjects_props table, this can take some time… |
| calendarobjects_props table updated successfully. |
| Check indices of the schedulingobjects table. |
| Adding schedulobj_principuri_index index to the schedulingobjects table, this can take some time… |
| schedulingobjects table updated successfully.</pre> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Некоторые индексы базы данных не были преобразованы в тип big int.</p> |
| <cite>Так как преобразование таких индексов может занять продолжительное время, оно должно быть запущенно вручную. Чтобы выполнить преобразование, необходимо включить режим обслуживания и запустить в терминале команду «occ db:convert-filecache-bigint». Дополнительные сведения приведены <a href="https://docs.nextcloud.com/server/18/go.php?to=admin-bigint-conversion">на соответствующей странице документации</a>.</cite></blockquote> |
| |
| |
| |
| <p>Вводим сервер в режим обслуживания и выполняем преобразование</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --on</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ db:convert-filecache-bigint</pre> |
| |
| |
| |
| <p>Появится сообщение</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">Nextcloud is in maintenance mode - no apps have been loaded |
| Following columns will be updated: |
| mounts.storage_id |
| mounts.root_id |
| mounts.mount_id |
| This can take up to hours, depending on the number of files in your instance! |
| Continue with the conversion (y/n)? [n]</pre> |
| |
| |
| |
| <p>Вводим «y»</p> |
| |
| |
| |
| <p>И выводим из режима обслуживания</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --off</pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="7"></a><h2>Убираем предупреждение о 4-х байтовых символах</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>MySQL используется в качестве базы данных, но не поддерживает 4-байтовые символы.</p> |
| <cite>Чтобы иметь возможность обрабатывать 4-байтовые символы (например, смайлики) без проблем в именах файлов или комментариях, рекомендуется включить 4-байтовую поддержку в MySQL. Для получения более подробной информации обратитесь к <a href="https://docs.nextcloud.com/server/18/go.php?to=admin-mysql-utf8mb4">документации</a>.</cite></blockquote> |
| |
| |
| |
| <p>Так как первоначально Nextcloud я ставил на базе MariaDB, то по ссылке выше для возможности обработки ошибки я не заметил продолжение про MariaDB, а сразу стал применять шаги для MySQL. Не надо так. Поэтому распишу по шагам, что и как надо делать.</p> |
| |
| |
| |
| <p>P.S. Убедитесь, что MariaDB версии выше 10.2. У меня была версия 15.1</p> |
| |
| |
| |
| <p>Убедитесь, что на вашем сервере MySQL установлены следующие параметры InnoDB в файле:</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo nano /etc/mysql/mariadb.cnf</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">[mysqld] |
| innodb_large_prefix=true |
| innodb_file_format=barracuda |
| innodb_file_per_table=1</pre> |
| |
| |
| |
| <p>и если их нет, то вставьте в конец файла.</p> |
| |
| |
| |
| <p>Перезапустите сервер MariaDB</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo systemctl restart mariadb</pre> |
| |
| |
| |
| <p>Выясните был ли изменён формат файла на Barracuda</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo mariadb</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%";</pre> |
| |
| |
| |
| <p>Если формат файла — «barracuda» для каждой отдельной таблицы, то ничего особенного не остается делать. Продолжайте с инструкциями для MySQL. Во время тестирования формат файла всех таблиц был “Antelope”.</p> |
| |
| |
| |
| <p>Таблицы должны быть перенесены в “barracuda” вручную, одна за другой. Однако команды SQL можно легко создавать:</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">USE INFORMATION_SCHEMA; |
| SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` ROW_FORMAT=DYNAMIC;") AS MySQLCMD FROM TABLES WHERE TABLE_SCHEMA = "nextcloud";</pre> |
| |
| |
| |
| <p>Скопируйте появившийся ответ и уберите в нем символ «|». После этого вставляйте текст в консоль mariadb</p> |
| |
| |
| |
| <p>После всего проделанного формат файла должен поменяться на Barracuda. Проверим.</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%"; |
| exit;</pre> |
| |
| |
| |
| <h4 class="wp-block-heading">Инструкции для MySQL</h4> |
| |
| |
| |
| <p>Вводим в режим обслуживания.</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --on</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo mariadb</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
| exit;</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"</pre> |
| |
| |
| |
| <p>Должен быть такой результат</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">Nextcloud is in maintenance mode - no apps have been loaded |
| |
| System config value mysql.utf8mb4 set to boolean true</pre> |
| |
| |
| |
| <p>Запускаем конвертацию</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:repair</pre> |
| |
| |
| |
| <p>Отключаем режим обслуживания.</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --off</pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="8"></a><h2>Режим шифрования</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Задействован устаревший режим шифрования файлов на стороне сервера. </p> |
| <cite>Рекомендуется отключить такое шифрование. Более подробные сведения содержатся в <a href="https://docs.nextcloud.com/server/20/go.php?to=admin-sse-legacy-format">документации</a>.</cite></blockquote> |
| |
| |
| |
| <p>Как я понял, устаревший режим шифрования был введён в ранних версиях Nextcloud и впоследствии заменён на новый. Однако в хранилище могли остаться файлы со старым (legacy) типом шифрования. </p> |
| |
| |
| |
| <p>В документации сказано, что найти эти файлы можно командой</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">occ encryption:scan:legacy-format</pre> |
| |
| |
| |
| <p>или более полный вариант</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo -u www-data php /usr/share/nginx/nextcloud/occ encryption:scan:legacy-format</pre> |
| |
| |
| |
| <p>В процессе сканирования occ начнёт искать файлы со старым типом шифрования или если в базе такие файлы отсутствуют, выдаст предупреждение, «<em>does not have a proper header</em>«.</p> |
| |
| |
| |
| <p>Такие файлы я просто заменил копиями тех, у кого есть нужные заголовки. Так как таких файлов у меня просто не было.</p> |
| |
| |
| |
| <p>После этого в файле config.php можно отключить поддержку устаревшего формата шифрования, удалив строку </p> |
| |
| |
| |
| <pre class="wp-block-preformatted">'encryption.legacy_format_support' => true,</pre> |
| |
| |
| |
| <p>или, выставив значение <strong>false </strong>вместо <strong>true</strong></p> |
| |
| |
| |
| <p>С самими файлами в хранилище ничего не произойдёт, они так же будут зашифрованы как и раньше. В данном случае, мы просто отключили поддержку старого режима шифрования.</p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="9"></a><h2>Настройка обратного прокси для доступа</h2> |
| |
| |
| |
| <p>Для доступа к файлам, используя обратный прокси, особых настроек делать не надо, достаточно в директиве proxy_pass указать IP сервера с Nextcloud. Однако, если вы используете клиент Nextcloud, то он при авторизации запустит окно браузера с IP сервера Nextcloud, а не его доменным именем. Чтобы это исправить, делаем следующее: </p> |
| |
| |
| |
| <p>Для примера IP обратного прокси — 192.168.0.1, IP Nextcloud-сервера — 192.168.0.2</p> |
| |
| |
| |
| <p>В файле nextcloud/config/config.php</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">'trusted_domains' => |
| array ( |
| 0 => '192.168.0.2', |
| 1 => '192.168.0.1', |
| ),</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">'overwritehost' => 'domain.name.example.org', |
| 'overwriteprotocol' => 'https', |
| 'overwritewebroot' => '', |
| 'overwritecondaddr' => '^192\.168\.0\.1$', |
| 'overwrite.cli.url' => 'https://domain.name.example.org',</pre> |
| |
| |
| |
| <pre class="wp-block-preformatted">'trusted_proxies' => |
| array ( |
| 0 => '192.168.0.1', |
| ),</pre> |
| |
| |
| |
| <p>Таким образом, опция trusted_proxies исправляет проблему «<em>Заголовки обратного прокси настроены неправильно, либо вы подключены к серверу Nextcloud через доверенный прокси</em>«</p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="10"></a><h2>Уведомление о HTTP «X-Frame-Options»</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Заголовок HTTP «X-Frame-Options» не настроен на значение «SAMEORIGIN». </p> |
| <cite>Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.</cite></blockquote> |
| |
| |
| |
| <p>Для этого добавьте в файл конфигурации nginx на стороне nextcloud следующее содержимое в секцию <strong><em>server</em></strong></p> |
| |
| |
| |
| <pre class="wp-block-preformatted">add_header X-Frame-Options "SAMEORIGIN";</pre> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Веб-сервер не настроен должным образом для разрешения «/.well-known/caldav». .</p> |
| <cite>Дополнительная информация может быть найдена в нашей документации</cite></blockquote> |
| |
| |
| |
| <p>В конфиге nextcloud <a href="https://kurazhov.ru/install-nextcloud-ubuntu-20-lemp/" data-type="post" data-id="2288">в статье</a> есть строки с настройкой доступа к этому пути. Для удобства повторю тут</p> |
| |
| |
| |
| <pre class="wp-block-preformatted"> location = /.well-known/carddav { |
| return 301 $scheme://$host/remote.php/dav; |
| } |
| |
| location = /.well-known/caldav { |
| return 301 $scheme://$host/remote.php/dav; |
| }</pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="11"></a><h2>Новый dashboard</h2> |
| |
| |
| |
| <p>Следующая опция для тех, кто обновился до 20 версии и при заходе на главную облака видит новый dashboard вместо знакомого списка файлов. </p> |
| |
| |
| |
| <p>Исправляется просто добавлением в файл <strong>config.php</strong> следующей строки</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">'defaultapp' => 'files',</pre> |
| |
| |
| |
| <p>Или можно в админке в Параметрах сервера — Внешний вид в секции Приложение по умолчанию выбрать нужное приложение.</p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="12"></a><h2>Модуль php-imagick и SVG</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Модуль php-imagick в этом случае не поддерживает SVG.</p> |
| <cite>Для лучшей совместимости рекомендуется установить его</cite></blockquote> |
| |
| |
| |
| <p>После установки или обновления Nextcloud до 21 версии появится сообщение об ошибке в модуле php-imagick. И хотя само расширение для php установлено, может статься, что в системе не установлен пакет приложения imagemagick. Поэтому ставим его через apt</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo apt install imagemagick</pre> |
| |
| |
| |
| <p>В русском переводе на 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. Для лучшей совместимости рекомендуется установить его»</p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="13"></a><h2>Регион размещения сервера</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Не указан регион размещения этого сервера Nextcloud, что требуется для возможности проверки номеров телефонов без указания кода страны.</p> |
| <cite>Чтобы разрешить пользователям сервера указывать номера телефонов без указания кода страны, добавьте параметр «default_phone_region» с соответствующим кодом страны в соответствии с <a rel="noreferrer noopener" target="_blank" href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements">ISO 3166-1↗</a>.</cite></blockquote> |
| |
| |
| |
| <p>Опять же после обновления до 21 версии Nextcloud появляется такое предупреждение. Точную причину почему в Nextcloud понадобилось указывать номер телефона я не знаю, но как устранить это предупреждение — знаю. </p> |
| |
| |
| |
| <p>Открываем файл config.php, расположенный в директории Nextcloud по пути config/config.php и внизу вставляем строку</p> |
| |
| |
| |
| <pre class="wp-block-preformatted"> 'default_phone_region' => 'RU',</pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="14"></a><h2>Файлы .mjs</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Your webserver does not serve `.mjs` files using the JavaScript MIME type. This will break some apps by preventing browsers from executing the JavaScript files. You should configure your webserver to serve `.mjs` files with either the `text/javascript` or `application/javascript` MIME type.</p> |
| </blockquote> |
| |
| |
| |
| <p>С версии 28 в Nextcloud появился функционал использования файлов mjs </p> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Файл с расширением .mjs — это файл исходного кода JavaScript, который используется в качестве модуля ECMA (модуль ECMAScript) в приложениях Node.js.</p> |
| </blockquote> |
| |
| |
| |
| <p>Из-за этого в панели администрирования можно увидеть предупреждение о том, что веб-сервер не поддерживает mjs файлы, необходимые для работы некоторых приложений или дополнений. Чтобы это исправить просто добавьте в конфигурационный файл mime-типов вашего веб-сервера следующую строку (для начала покажу на примере nginx)</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo nano /etc/nginx/mime.types</pre> |
| |
| |
| |
| <pre class="wp-block-code"><code>image/jpeg jpeg jpg; |
| application/javascript js mjs; |
| application/atom+xml atom;</code></pre> |
| |
| |
| |
| <p>Затем перезапустите nginx</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo nginx -s reload</pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="15"></a><h2>Время обслуживания</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks</p> |
| </blockquote> |
| |
| |
| |
| <p>С 28 версии появилось предупреждение о том, что не настроено окно для проведения работ по обслуживанию системы. Опция была и раньше, просто предупреждение не выводилось в админ-панель. </p> |
| |
| |
| |
| <p>Этот параметр учитывается только в режиме <code>cron</code>.</p> |
| |
| |
| |
| <p>Чтобы исправить предупреждение добавьте в config/config.php строку</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">'maintenance_window_start' => 5,</pre> |
| |
| |
| |
| <p>Документация гласит, что указанное число используется как время старта задач по обслуживанию системы. Время старта задаётся числом с началом отсчёта по времени UTC. Тяжёлые задачи будут отложены, чтобы не нагружать сервер в рабочие часы. Они будут выполнены в течение 4 часов после наступления этого времени. То есть, указав 23 в параметре, тяжёлые задачи выполнятся с 2 ночи до 6 утра по Москве (11 PM (23:00) + UTC(MSK+3) = 23+3 = 2. Получаем 2 часа ночи как точка старта)</p> |
| |
| |
| |
| <p>Если ваша система не сильно нагружена, то можно указать в параметре 100. </p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="16"></a><h2>PHP output_buffering</h2> |
| |
| |
| |
| <p>После минорного обновления появилось такое предупреждение</p> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Параметр конфигурации PHP «output_buffering» должен быть отключён</p> |
| </blockquote> |
| |
| |
| |
| <p>Для устранения предупреждения в файле</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">sudo nano /etc/php/8.3/fpm/php.ini</pre> |
| |
| |
| |
| <p>нужно вписать следующее</p> |
| |
| |
| |
| <pre class="wp-block-preformatted"><code>output_buffering = 0</code></pre> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="17"></a><h2>Настройка e-mail</h2> |
| |
| |
| |
| <p>С отправкой уведомлений по почте проблем обычно не возникает. Каждый почтовый сервис предоставляет свои параметры для подключения. Если проблемы с отправкой почты есть, то добавьте в config.php</p> |
| |
| |
| |
| <pre class="wp-block-preformatted"> 'mail_smtpstreamoptions' =><br> array (<br> 'ssl' => <br> array (<br> 'allow_self_signed' => true,<br> 'verify_peer' => false,<br> 'verify_peer_name' => false,<br> ),<br> ),</pre> |
| |
| |
| |
| <p>За этот совет спасибо моему читателю.</p> |
| |
| |
| |
| <p>Но лучше всё же корректно настроить почтовый сервер 🙂</p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <a name="18"></a><h2>Формат строки в базе данных</h2> |
| |
| |
| |
| <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> |
| <p>Неправильный формат строки обнаружен в вашей базе данных. ROW_FORMAT=Dynamic предлагает наилучшую производительность базы данных для Nextcloud. Пожалуйста, обновите формат строки в следующем списке: </p> |
| </blockquote> |
| |
| |
| |
| <p>Эта ошибка возникает при обновлении с 30 по 31 версию Nextcloud. На <a href="https://help.nextcloud.com/t/upgrade-to-nextcloud-hub-10-31-0-0-incorrect-row-format-found-in-your-database/218366/12" target="_blank" rel="noreferrer noopener">форуме</a> есть, как мне кажется, временное решение. Скопирую его сюда</p> |
| |
| |
| |
| <p>Сначала создайте файл скрипта</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">nano dynamic.sh</pre> |
| |
| |
| |
| <p>Вставьте текст</p> |
| |
| |
| |
| <pre class="wp-block-preformatted">#!/bin/bash<br><br># Prompt for database credentials<br>read -p "Enter Database Name: " DB_NAME<br>read -p "Enter Username: " DB_USER<br>read -s -p "Enter Password: " DB_PASS<br>echo<br><br># Execute all ALTER TABLE statements in one query<br>mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -Bse "<br>SELECT CONCAT('ALTER TABLE \`', TABLE_NAME, '\` ROW_FORMAT=DYNAMIC;') <br>FROM INFORMATION_SCHEMA.TABLES <br>WHERE TABLE_SCHEMA = '$DB_NAME' <br>AND ENGINE = 'InnoDB'<br>" | mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME"</pre> |
| |
| |
| |
| <p>Сохранитесь и сделайте скрипт исполняемым. При необходимости отключите в скрипте запрос пароля, если при установке авторизация в mariadb была через сокет. </p> |
| |
| |
| |
| <p>Запустите скрипт и подождите пока он отработает. Ошибка должна исчезнуть. Но результат тут я не гарантирую.</p> |
| |
| |
| |
| <p>По идее, авторы Nextcloud при обновлении должны проверять формат таблиц и при необходимости конвертировать. Пока вот есть такое решение.</p> |
| |
| |
| |
| <p><em><a href="#0" data-type="internal" data-id="#0">К оглавлению</a></em></p> |
| |
| |
| |
| <p>На этом тюнинг закончен, но не завершён.</p> |
| |
| |
| |
| <p></p> |
| </div> |
| |
| </html> |