Nextcloud ошибка обновления

Ошибка "504 Gateway Time-out" при обновлении NextCloud до 19 версии osBSD - cloud

Print Friendly, PDF & Email

Задача:

Найти причину возникновения ошибки “Parsing response failed. 504 Gateway Time-out” при попытке обновить NextCloud до новой версии и сделать необходимые настройки сервера.

—————————————————————

При попытке обновить NextCloud с версии 18 до 19.0.3 возникла ошибка

Create backup

Parsing response failed. <html><head><title>504 Gateway Time-Out</title></head><body><center><h1>504 Gateway Time-Out</h1></center><hr><center>nginx/1.18.0</center></body></html>

Так выглядит в браузере

В процессе поиска ошибки добавилась ошибка ImageMagick

root@cloud:/ # php -v
PHP Warning:  Version warning: Imagick was compiled against ImageMagick version 1690 but version 1691 is loaded. Imagick will run but may behave surprisingly in Unknown on line 0
PHP 7.3.22 (cli) (built: Sep 17 2020 01:30:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.22, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.22, Copyright (c) 1999-2018, by Zend Technologies
root@cloud:/ #

Решается просто обновлением или установкой нужной версии pecl-imagick. Проверяем доступные для установки

root@cloud:/ # pkg search pecl-imagick
php72-pecl-imagick-3.4.4       PHP wrapper to the ImageMagick/GraphicsMagick library version 6
php72-pecl-imagick-im7-3.4.4   PHP wrapper to the ImageMagick/GraphicsMagick library version 7
php73-pecl-imagick-3.4.4       PHP wrapper to the ImageMagick/GraphicsMagick library version 6
php73-pecl-imagick-im7-3.4.4   PHP wrapper to the ImageMagick/GraphicsMagick library version 7
php74-pecl-imagick-3.4.4       PHP wrapper to the ImageMagick/GraphicsMagick library version 6
php74-pecl-imagick-im7-3.4.4   PHP wrapper to the ImageMagick/GraphicsMagick library version 7
root@cloud:/ #

Устанавливаем соответствующую версию для PHP 7.3

root@cloud:/ # pkg install php73-pecl-imagick-im7
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 2 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        ImageMagick7-nox11: 7.0.10.24
        php73-pecl-imagick-im7: 3.4.4

Number of packages to be installed: 2

The process will require 26 MiB more space.
87 KiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching php73-pecl-imagick-im7-3.4.4.txz: 100%   87 KiB  89.3kB/s    00:01
Checking integrity... done (3 conflicting)
  - php73-pecl-imagick-im7-3.4.4 conflicts with php73-pecl-imagick-3.4.4 on /usr/local/lib/php/20180731/imagick.so
  - ImageMagick7-nox11-7.0.10.24 conflicts with ImageMagick6-nox11-6.9.11.6,1 on /usr/local/bin/Magick++-config
  - ImageMagick7-nox11-7.0.10.24 conflicts with ImageMagick6-nox11-6.9.11.6,1 on /usr/local/bin/Magick++-config
Checking integrity... done (0 conflicting)
Conflicts with the existing packages have been found.
One more solver iteration is needed to resolve them.
The following 4 package(s) will be affected (of 0 checked):

Installed packages to be REMOVED:
        ImageMagick6-nox11: 6.9.11.6,1
        php73-pecl-imagick: 3.4.4

New packages to be INSTALLED:
        ImageMagick7-nox11: 7.0.10.24
        php73-pecl-imagick-im7: 3.4.4

Number of packages to be removed: 2
Number of packages to be installed: 2

Proceed with this action? [y/N]: y
[1/4] Deinstalling php73-pecl-imagick-3.4.4...
[1/4] Deleting files for php73-pecl-imagick-3.4.4: 100%
[2/4] Deinstalling ImageMagick6-nox11-6.9.11.6,1...
[2/4] Deleting files for ImageMagick6-nox11-6.9.11.6,1: 100%
[3/4] Installing ImageMagick7-nox11-7.0.10.24...
[3/4] Extracting ImageMagick7-nox11-7.0.10.24: 100%
[4/4] Installing php73-pecl-imagick-im7-3.4.4...
[4/4] Extracting php73-pecl-imagick-im7-3.4.4: 100%
=====
Message from php73-pecl-imagick-im7-3.4.4:

--
This file has been added to automatically load the installed extension:
/usr/local/etc/php/ext-20-imagick.ini
root@cloud:/ # php -v
PHP 7.3.22 (cli) (built: Sep 17 2020 01:30:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.22, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.22, Copyright (c) 1999-2018, by Zend Technologies
root@cloud:/ #

Для решения основной ошибки, проверяем хватает ли ресурсов серверу. Об этом читаем тут: “Ошибка “504 Gateway Time-out” при обновлении nextcloud” если у вас используется связка nginx, php-fpm и apache, то вы используете nginx как прокси сервер и вам необходимо добавить:

proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600;

Если у вас только nginx, то вы его используете как веб-сервер. В этом случае

fastcgi_read_timeout 300;

Для примера, мой конфиг:

root@cloud:/ # cat /usr/local/etc/nginx/nginx.conf
worker_processes 1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

upstream php-handler {
    #server 127.0.0.1:9000;
    server unix:/var/run/php-fpm.sock;
}

server {
#    server_name nc.local;
#    server_name _;
    server_name cloud.osbsd.net;

#    return 301 https://$server_name$request_uri;

    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;
    add_header X-Frame-Options "SAMEORIGIN";
    fastcgi_hide_header X-Powered-By;

    root /usr/local/www/nextcloud/;
location ~ /.well-known {
    location ~ /.well-known/acme-challenge/(.*)
    {
        default_type "text/plain";
        root /usr/local/www/letsencrypt;
    }
}



    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location = /.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host/remote.php/dav;
    }

    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    location / {
        rewrite ^ /index.php$request_uri;
    }
    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny all;
    }
    location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+).php(?:$|/) {
        fastcgi_split_path_info ^(.+?.php)(/.*|)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        #Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
        fastcgi_read_timeout 300;
    }

    location ~ ^/(?:updater|oc[ms]-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }

    location ~ .(?:css|js|woff2?|svg|gif)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        add_header X-Frame-Options "SAMEORIGIN";
        access_log off;
    }

    location ~ .(?:png|html|ttf|ico|jpg|jpeg)$ {
        try_files $uri /index.php$request_uri;
        access_log off;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /usr/local/etc/letsencrypt/live/cloud.osbsd.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /usr/local/etc/letsencrypt/live/cloud.osbsd.net/privkey.pem; # managed by Certbot
    include /usr/local/etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}






server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
#    server_name nc.local;
#    server_name _;
    server_name cloud.osbsd.net;

    ssl_certificate /etc/ssl/nc.local.crt;
    ssl_certificate_key /etc/ssl/nc.local.key;
#    ssl_certificate /usr/local/etc/letsencrypt/live/cloud.osbsd.net/fullchain.pem;
#    ssl_certificate_key /usr/local/etc/letsencrypt/live/cloud.osbsd.net/privkey.pem;

    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;
    add_header X-Frame-Options "SAMEORIGIN";
    fastcgi_hide_header X-Powered-By;

    root /usr/local/www/nextcloud/;

location ~ /.well-known
{
    location ~ /.well-known/acme-challenge/(.*)
    {
        default_type "text/plain";
        root /usr/local/www/letsencrypt;
  }
  }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location = /.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host/remote.php/dav;
    }

    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    location / {
        rewrite ^ /index.php$request_uri;
    }
    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny all;
    }
    location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+).php(?:$|/) {
        fastcgi_split_path_info ^(.+?.php)(/.*|)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        #Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
        fastcgi_read_timeout 300;
    }

    location ~ ^/(?:updater|oc[ms]-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }

    location ~ .(?:css|js|woff2?|svg|gif)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        add_header X-Frame-Options "SAMEORIGIN";
        access_log off;
    }

    location ~ .(?:png|html|ttf|ico|jpg|jpeg)$ {
        try_files $uri /index.php$request_uri;
        access_log off;
    }
}



server {
    if ($host = cloud.osbsd.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name cloud.osbsd.net;
    return 404; # managed by Certbot


}}

не забываем перезапустить nginx

nginx -s reload

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

  • Печать

Страницы: [1]   Вниз

Тема: Обновление Nextcloud и ошибка open_basedir  (Прочитано 1153 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
Knud

Добрый день. На сервере стоит Ubuntu 16.04 и VESTA. Хочу Nextcloud (11.0.0) обновить до версии 11.0.4. При попытке обновиться через админку, выдает ошибку

SplFileInfo::isDir(): open_basedir restriction in effect. File(/home/admin/web/cloud.domain.ru/public_html/updater/../..) is not within the allowed path(s): (/home/admin/web/cloud.domain.ru/public_html:/home/admin/tmp)

Права вроде как все есть (имя пользователя в Vesta — admin)

$ sudo ls -l /home/admin/web/cloud.domain.ru/public_html/updater
итого 640
-rw-r--r-- 1 admin admin  57353 авг 16 12:16 index.php
-rw-r--r-- 1 admin admin 591718 авг 16 12:16 updater.phar

~$ sudo ls -l /home/admin/tmp/
итого 8
-rw------- 1 admin admin 7347 авг 16 15:01 sess_3nmc0r1q5nkj9huvunae94is22

В файле /home/cloud.domain.ru/conf/web/apache2.conf есть такие строки

php_admin_value open_basedir /home/admin/web/cloud.domain.ru/public_html:/home/admin/tmp
php_admin_value upload_tmp_dir /home/admin/tmp
php_admin_value session.save_path /home/admin/tmp

В логах ошибка такая при выполнении обновления. IP 192.168.1.12 является адресом сервера за NAT.

[authz_core:error] [pid 2338] [client 192.168.1.12:37774] AH01630: client denied by server configuration: /home/admin/web/cloud.domain.ru/public_html/data/.ocdata


ТС не появлялся на Форуме более полугода по состоянию на 17/07/2019 (последняя явка: 23/08/2017). Модератором раздела принято решение закрыть тему.
—zg_nico

« Последнее редактирование: 17 Июля 2019, 08:51:21 от zg_nico »


Оффлайн
victor00000

sudo apt-get install apache2-mpm-itk
конф

<VirtualHost *:80>
AssignUserId admin admin

« Последнее редактирование: 20 Октября 2017, 10:30:03 от Azure »


Оффлайн
NikolayOzerov

т.е. изменить пользователя апача на пользователя Ubuntu? попробую сегодня вечером

« Последнее редактирование: 20 Октября 2017, 10:30:23 от Azure »


Оффлайн
victor00000


  • Печать

Страницы: [1]   Вверх

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

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

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

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

Содержание:

  1. PHP не настроен правильно для получения переменных системного окружения.
  2. PHP OPcache не настроен правильно
  3. Некоторые индексы базы данных не были преобразованы в тип big int
  4. Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ
  5. Не настроена система кеширования
  6. В базе данных отсутствуют некоторые индексы
  7. MySQL используется в качестве базы данных, но не поддерживает 4-байтовые символы
  8. Задействован устаревший режим шифрования файлов на стороне сервера
  9. Настройка обратного прокси для доступа
  10. Заголовок HTTP «X-Frame-Options» не настроен на значение «SAMEORIGIN»
  11. Новый dashboard
  12. Модуль php-imagick и SVG
  13. Регион размещения сервера

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

«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

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

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

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

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

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

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

systemctl restart php7.4-fpm

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

К оглавлению

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

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

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

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

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

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

К оглавлению

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

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


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

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

sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --on

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

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

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

sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --off

К оглавлению

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

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

sudo nano /etc/php/7.4/fpm/php.ini

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

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

sed -i -e "s/memory_limit = 128M/memory_limit = 512M/g" /etc/php/7.4/fpm/php.ini
sudo systemctl restart php7.4-fpm

К оглавлению

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

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

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

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

Ставим APCu

 sudo apt install php-apcu -y

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

sudo nano /etc/php/7.4/cli/php.ini

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

apc.enable_cli=1

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

sudo systemctl restart php7.4-fpm

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

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

и вставляем следующую строку перед закрывающем скобкой «);»

'memcache.local' => 'OCMemcacheAPCu',

Ставим Redis.

sudo apt install redis-server php-redis -y

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

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

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

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

вставьте следующее опять перед закрывающей скобкой «);»

  'memcache.distributed' => 'OCMemcacheRedis',
'redis' =>
array (
'host' => '127.0.0.1',
'port' => 6379,
),
'memcache.locking' => 'OCMemcacheRedis',

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

P.S. Если при консольном выполнении команд вы получаете такое сообщение:

OCHintException: [0]: Memcache OCMemcacheAPCu not available for local cache (Is the matching PHP module installed and enabled?)

то тогда пропишите в файл php.ini, который находится по пути /etc/php/7.4/cli следующий текст

apc.enable_cli=1

Ошибка должна исчезнуть

К оглавлению

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

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

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

Выполняем

sudo -u www-data php /usr/share/nginx/nextcloud/occ db:add-missing-indices

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

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.

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

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

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

sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --on
sudo -u www-data php /usr/share/nginx/nextcloud/occ db:convert-filecache-bigint

Появится сообщение

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]

Вводим «y»

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

sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --off

К оглавлению

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

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

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

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

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

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

sudo nano /etc/mysql/mariadb.cnf
[mysqld]
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=1

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

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

sudo systemctl restart mariadb

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

sudo mariadb
SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%";

Если формат файла — «barracuda» для каждой отдельной таблицы, то ничего особенного не остается делать. Продолжайте с инструкциями для MySQL. Во время тестирования формат файла всех таблиц был “Antelope”.

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

USE INFORMATION_SCHEMA;
SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` ROW_FORMAT=DYNAMIC;") AS MySQLCMD FROM TABLES WHERE TABLE_SCHEMA = "nextcloud";

Скопируйте появившийся ответ и уберите в нем символ «|». После этого вставляйте текст в консоль mariadb

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

SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%";
exit;

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

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

sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --on
sudo mariadb
ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
exit;
sudo -u www-data php /usr/share/nginx/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"

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

Nextcloud is in maintenance mode - no apps have been loaded

System config value mysql.utf8mb4 set to boolean true

Запускаем конвертацию

sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:repair

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

sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --off

К оглавлению

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

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

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

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

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

occ encryption:scan:legacy-format

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

sudo -u www-data php /usr/share/nginx/nextcloud/occ encryption:scan:legacy-format

В процессе сканирования occ начнёт искать файлы со старым типом шифрования или если в базе такие файлы отсутствуют, выдаст предупреждение, «does not have a proper header«.

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

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

'encryption.legacy_format_support' => true,

или, выставив значение 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_domains' =>
array (
0 => '192.168.0.2',
1 => '192.168.0.1',
),
'overwritehost' => 'domain.name.example.org',
'overwriteprotocol' => 'https',
'overwritewebroot' => '',
'overwritecondaddr' => '^192.168.0.1$',
'overwrite.cli.url' => 'https://domain.name.example.org',
'trusted_proxies' =>
array (
    0 => '192.168.0.1',
),

Таким образом, опция trusted_proxies исправляет проблему «Заголовки обратного прокси настроены неправильно, либо вы подключены к серверу Nextcloud через доверенный прокси«

К оглавлению

Уведомление о HTTP «X-Frame-Options»

Заголовок HTTP «X-Frame-Options» не настроен на значение «SAMEORIGIN».

Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.

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

add_header X-Frame-Options "SAMEORIGIN";

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

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

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

 location = /.well-known/carddav {
         return 301 $scheme://$host/remote.php/dav;
     }

     location = /.well-known/caldav {
        return 301 $scheme://$host/remote.php/dav;
     }

К оглавлению

Новый dashboard

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

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

'defaultapp' => 'files',

К оглавлению

Модуль php-imagick и SVG

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

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

После установки или обновления Nextcloud до 21 версии появится сообщение об ошибке в модуле php-imagick. И хотя само расширение для php установлено, может статься, что в системе не установлен пакет приложения imagemagick. Поэтому ставим его через apt

apt install imagemagick

В русском переводе на 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 и внизу вставляем строку

  'default_phone_region' => 'RU',

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

К оглавлению

На этом тюнинг закончен, но не завершён.

Like this post? Please share to your friends:
  • Next rp network error
  • Newtec error 050
  • Nfs13 exe системная ошибка
  • Network error could not connect to the easyanticheat network magicka
  • Nfs underground 2 ошибка при установке