Инструменты пользователя

Инструменты сайта


web:cms:dokuwiki-tuning

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
web:cms:dokuwiki-tuning [1] – удалено novikweb:cms:dokuwiki-tuning [1] (текущий) – создано novik
Строка 1: Строка 1:
 +<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, то вот команда &#8212; sudo -u www-data php /path/to/nextcloud/occ maintenance:mode &#8212;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. Язык интерфейса &#8212; русский. 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>&#171;PHP не настроен правильно для получения переменных системного окружения.</p>
 +<cite>Запрос getenv(&#171;PATH&#187;) возвращает пустые результаты.<br>Обратитесь к разделу о конфигурации PHP и примечаниям к конфигурации<br>PHP из <a href="https://docs.nextcloud.com/server/15/go.php?to=admin-php-fpm">руководства по установке</a>. Обратите внимание на настройку<br>параметров PHP, особенно при использовании механизма php-fpm.&#187;</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(&#8216;PATH&#8217;); может возвращать пустой результат. Поэтому вам может потребоваться вручную настроить переменные среды в файле конфигурации 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>&#171;PHP OPcache не настроен правильно&#187;</p>
 +<cite>&nbsp;<a href="https://docs.nextcloud.com/server/15/go.php?to=admin-php-opcache">Для обеспечения лучшей производительности рекомендуется&nbsp;</a>задать в файле&nbsp;<code>php.ini</code>&nbsp;следующие параметры настроек: <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&#8217;ом</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». Дополнительные сведения приведены&nbsp;<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. Более подробная информация доступна в&nbsp;<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>и вставляем следующую строку перед закрывающем скобкой &#171;);&#187;</p>
 +
 +
 +
 +<pre class="wp-block-preformatted">'memcache.local' =&gt; '\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>вставьте следующее  опять перед закрывающей скобкой &#171;);&#187;</p>
 +
 +
 +
 +<pre class="wp-block-preformatted">  'memcache.distributed' =&gt; '\OC\Memcache\Redis',<br>  'redis' =&gt;<br>  array (<br>        'host' =&gt; '127.0.0.1',<br>        'port' =&gt; 6379,<br>  ),<br>  'memcache.locking' =&gt; '\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>В базе данных отсутствуют некоторые индексы.&nbsp;</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». Дополнительные сведения приведены&nbsp;<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>Вводим &#171;y&#187;</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. Для получения более подробной информации обратитесь к&nbsp;<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>Если формат файла &#8212; &#171;barracuda&#187; для каждой отдельной таблицы, то ничего особенного не остается делать. Продолжайте с инструкциями для 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>Скопируйте появившийся ответ и уберите в нем символ &#171;|&#187;. После этого вставляйте текст в консоль 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>Рекомендуется отключить такое шифрование. Более подробные сведения содержатся в&nbsp;<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 начнёт искать файлы со старым типом шифрования или если в базе такие файлы отсутствуют, выдаст предупреждение, &#171;<em>does not have a proper header</em>&#171;.</p>
 +
 +
 +
 +<p>Такие файлы я просто заменил копиями тех, у кого есть нужные заголовки. Так как таких файлов у меня просто не было.</p>
 +
 +
 +
 +<p>После этого в файле config.php можно отключить поддержку устаревшего формата шифрования, удалив строку </p>
 +
 +
 +
 +<pre class="wp-block-preformatted">'encryption.legacy_format_support' =&gt; 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 обратного прокси &#8212; 192.168.0.1, IP Nextcloud-сервера &#8212; 192.168.0.2</p>
 +
 +
 +
 +<p>В файле nextcloud/config/config.php</p>
 +
 +
 +
 +<pre class="wp-block-preformatted">'trusted_domains' =&gt;
 +array (
 +0 =&gt; '192.168.0.2',
 +1 =&gt; '192.168.0.1',
 +),</pre>
 +
 +
 +
 +<pre class="wp-block-preformatted">'overwritehost' =&gt; 'domain.name.example.org',
 +'overwriteprotocol' =&gt; 'https',
 +'overwritewebroot' =&gt; '',
 +'overwritecondaddr' =&gt; '^192\.168\.0\.1$',
 +'overwrite.cli.url' =&gt; 'https://domain.name.example.org',</pre>
 +
 +
 +
 +<pre class="wp-block-preformatted">'trusted_proxies' =&gt;
 +array (
 +    0 =&gt; '192.168.0.1',
 +),</pre>
 +
 +
 +
 +<p>Таким образом, опция trusted_proxies исправляет проблему &#171;<em>Заголовки обратного прокси настроены неправильно, либо вы подключены к серверу Nextcloud через доверенный прокси</em>&#171;</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' =&gt; 'files',</pre>
 +
 +
 +
 +<p>Или можно в админке в Параметрах сервера &#8212; Внешний вид в секции Приложение по умолчанию выбрать нужное приложение.</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 фраза переведена немного неправильно. В оригинале это выглядит как &#171;Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it.&#187; &#8212; &#171;У модуля php-imagick на этом сервере отсутствует поддержка формата SVG. Для лучшей совместимости рекомендуется установить его&#187;</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» с соответствующим кодом страны в соответствии с&nbsp;<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 понадобилось указывать номер телефона я не знаю, но как устранить это предупреждение &#8212; знаю. </p>
 +
 +
 +
 +<p>Открываем файл config.php, расположенный в директории Nextcloud по пути config/config.php и внизу вставляем строку</p>
 +
 +
 +
 +<pre class="wp-block-preformatted">  'default_phone_region' =&gt; '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>Этот параметр учитывается только в режиме&nbsp;<code>cron</code>.</p>
 +
 +
 +
 +<p>Чтобы исправить предупреждение добавьте в config/config.php строку</p>
 +
 +
 +
 +<pre class="wp-block-preformatted">'maintenance_window_start' =&gt; 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&nbsp;=&nbsp;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' =&gt;<br>   array (<br>    'ssl' =&gt; <br>     array (<br>      'allow_self_signed' =&gt; true,<br>      'verify_peer' =&gt; false,<br>      'verify_peer_name' =&gt; 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. Пожалуйста, обновите формат строки в следующем списке:&nbsp;</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>
web/cms/dokuwiki-tuning.1754039037.txt.gz · Последнее изменение: novik