Устанавливаем NextCloud в CentOS 7

Print Friendly, PDF & Email

 

Задача:

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

---------------------------------------------------------------

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

yum update

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

-bash: ifconfig: command not found

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

yum -y install net-tools

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

yum install -y epel-release yum-utils unzip curl wget bash-completion policycoreutils-python mlocate bzip2

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

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

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

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

vi /etc/yum.repos.d/nginx.repo

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

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

Устанавливаем nginx

yum -y install nginx

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

systemctl enable nginx

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

systemctl start nginx

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

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

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

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

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

Посмотреть какой репозиторий соответствует вашей системе можно на сайте https://downloads.mariadb.org/mariadb/repositories/ .

vi /etc/yum.repos.d/MariaDB.repo

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

# MariaDB 10.4 CentOS repository list - created 2019-08-10 19:42 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

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

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

yum install MariaDB-server MariaDB-client

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

systemctl enable mariadb.service
systemctl start mariadb.service

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

mysql_secure_installation

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

Switch to unix_socket authentication [Y/n]

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

[root@cs ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@cs ~]# 

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

mysql -uroot -p

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

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
CREATE DATABASE IF NOT EXISTS nextcloud;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
FLUSH privileges;
quit

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

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

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

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

yum install -y php72w php72w-cli php72w-common php72w-curl php72w-gd \
php72w-mbstring php72w-mysqlnd php72w-process php72w-xml php72w-zip \
php72w-opcache php72w-pecl-apcu php72w-intl php72w-pecl-redis php72w-pecl-imagick php72w-fpm

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

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php73
yum update -y

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

yum -y install php php-cli php-common php-curl php-gd \
php-mbstring php-mysqlnd php-process php-xml php-zip \
php-opcache php-pecl-apcu php-intl php-pecl-redis php-pecl-imagick php-fpm

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

systemctl enable php-fpm.service
systemctl start php-fpm.service

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

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.backup

Настраиваем PHP-FPM

vi /etc/php-fpm.d/www.conf

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

user = nginx
group = nginx
listen=/var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

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

[root@cs php-fpm]# cat /etc/php-fpm.d/www.conf | \
grep -v '^#' | grep -v '^$' | grep -v '^;'
[www]
user = nginx
group = nginx
listen=/var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
[root@cs php-fpm]#

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

vi /etc/php.ini 

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

cgi.fix_pathinfo=0

Проверяем изменения

Если вы хотите, чтобы nextcloud работал с https, то создаём самоподписанный сертификат. В процессе генерации придётся ответить вопросы, важным является только Common Name – имя Вашего сайта. Остальные можно оставить без ответа, но если в Сommon Name  допустите ошибку, то сертификат работать не будет:

[root@cs ~]# openssl req -x509 -newkey rsa:2048 -days 365 -keyout  /etc/nginx/ssl/server.key -out /etc/nginx/ssl/cert.crt
Generating a 2048 bit RSA private key
................................+++
...........................+++
writing new private key to '/etc/nginx/ssl/server.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:RU
State or Province Name (full name) []:MSK
Locality Name (eg, city) [Default City]:Moskow
Organization Name (eg, company) [Default Company Ltd]:osbsd
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:cs.xaxa.local
Email Address []:admin@osbsd.com

Описание параметров:

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

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

[root@cs xaxa]# openssl req -in cert.csr -noout -text
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=RU, ST=MSK, L=Moskow, O=osbsd, OU=IT, CN=cs.xaxa.local/emailAddress=admin@osbsd.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b3:db:1b:a1:24:3b:d1:61:23:4e:06:5b:64:eb:
                    0b:6a:c4:cf:61:60:08:e5:48:44:73:3c:fd:15:b4:
                    1c:0d:7b:57:ce:7b:f8:35:9d:07:e2:43:0d:33:b8:
                    f4:c6:ca:2e:13:5e:bb:11:45:53:d4:ef:ad:49:97:
                    db:ef:7b:9d:a6:b4:4a:79:21:70:87:53:ad:dc:0a:
                    34:35:64:97:14:1e:55:6f:f0:a1:d5:3f:a2:68:36:
                    41:33:01:0d:e9:27:0a:6d:9c:d4:5f:b2:6b:f0:7b:
                    ce:7a:a1:0c:de:f1:12:02:74:b9:9e:ca:d0:c3:6c:
                    69:62:3a:d7:2e:04:4c:0b:d3:04:60:d9:e0:fb:c6:
                    ed:03:d4:0d:2d:bf:c3:87:0c:bb:2e:8b:ab:03:d7:
                    f9:49:04:75:b2:18:e3:10:4f:92:72:75:c2:6e:5a:
                    d2:43:1b:d4:e6:2b:38:1c:ac:b7:3e:e1:15:61:26:
                    20:21:b3:bc:45:6c:f8:e1:13:b8:c2:12:e4:35:6b:
                    dc:5d:97:11:15:10:3c:bb:ee:79:65:40:6e:c8:c1:
                    b1:7e:60:d8:ba:83:79:00:62:2a:d3:17:aa:0e:73:
                    5c:0c:df:29:28:62:cd:3e:c7:2d:a6:42:5c:38:4b:
                    96:e3:f9:04:b3:88:97:d6:87:70:1d:65:d6:30:d4:
                    1b:43
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         4a:f1:12:ce:36:ae:22:bd:0e:81:b5:ef:49:a7:b2:42:a3:96:
         b7:36:11:2c:68:01:03:21:98:b4:3c:ee:b1:9b:ca:6a:9c:8b:
         ac:72:b2:65:4b:66:14:e7:76:62:73:ce:93:f4:cc:21:06:e3:
         b6:18:e1:7e:0a:58:ff:01:1e:49:52:18:7f:30:e8:cd:34:7d:
         2a:2e:d9:ce:04:fb:f9:69:dd:d8:35:02:0e:7c:b3:78:fd:de:
         cf:5a:23:ad:5d:e0:cd:5d:3c:b8:ce:5f:e4:a2:c7:f3:1a:06:
         a5:54:ce:85:ce:3b:c6:95:3c:d8:f9:50:82:db:59:15:a2:d9:
         37:24:ce:11:f2:e1:ab:bf:84:bc:c3:04:ba:c2:6f:4a:95:38:
         a5:d2:66:65:a3:c7:3d:27:87:e7:e8:9e:5a:a9:31:4c:7b:44:
         12:c5:06:3d:1b:34:6b:07:81:6d:10:4d:e5:0b:26:f2:96:5a:
         d3:52:c3:5e:42:a7:2c:38:1a:ee:34:84:a0:35:5d:27:03:84:
         75:db:2a:c3:7e:8e:26:e0:84:8c:c8:a7:a3:28:32:e8:ec:a0:
         2a:d4:53:61:91:2c:7e:83:fb:3b:98:cb:d2:49:34:8b:1a:fa:
         09:f3:b5:e6:9a:10:04:65:c4:9f:75:2d:17:e5:72:1f:99:41:
         4f:fe:25:c5
[root@cs xaxa]#

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

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup

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

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;

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

server {
    listen 80;
    listen [::]:80;
    server_name cs.xaxa.local;
    return 301 https://$server_name:443$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name cs.xaxa.local;

    ssl_certificate /etc/nginx/ssl/cert.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    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;

    fastcgi_hide_header X-Powered-By;

    root /var/www/nextcloud;

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

    location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host:$server_port/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;
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

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

    location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
        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;

        access_log off;
    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
        access_log off;
    }
}
    
}

В моём конфиге я использую DNS имя, если вы используете мой конфиг, не забываем подправить DNS сервер. Теперь, чтобы конфиг применился, перезапускаем Nginx.

[root@cs ~]# service nginx restart
Redirecting to /bin/systemctl restart nginx.service
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
[root@cs ~]# systemctl status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sun 2019-08-25 21:42:36 CEST; 3s ago
     Docs: http://nginx.org/en/docs/
  Process: 683 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 840 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
 Main PID: 21033 (code=exited, status=0/SUCCESS)

Aug 25 21:42:36 cs.xaxa.local systemd[1]: Starting nginx - high performance web server...
Aug 25 21:42:36 cs.xaxa.local nginx[840]: Enter PEM pass phrase:
Aug 25 21:42:36 cs.xaxa.local nginx[840]: nginx: [emerg] cannot load certificate key "/etc/nginx/ssl/server.key": PEM_read_bio_PrivateKey() failed (SSL: error:0906406D:PEM ...ssword read)
Aug 25 21:42:36 cs.xaxa.local systemd[1]: nginx.service: control process exited, code=exited status=1
Aug 25 21:42:36 cs.xaxa.local systemd[1]: Failed to start nginx - high performance web server.
Aug 25 21:42:36 cs.xaxa.local systemd[1]: Unit nginx.service entered failed state.
Aug 25 21:42:36 cs.xaxa.local systemd[1]: nginx.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

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

root@cs ~]# openssl rsa -in /etc/nginx/ssl/server.key -out //etc/nginx/ssl/server.key
Enter pass phrase for /etc/nginx/ssl/server.key:
writing RSA key
[root@cs ~]#

Установка NextCloud

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

cd ~
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip -d /var/www/
rm -f latest.zip

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

chmod 755 /var/www/nextcloud
chown -R nginx:nginx /var/www/nextcloud

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

Внутренняя ошибка сервера
Запрос не может быть обработан сервером.
Если это случится ещё раз, отправьте администратору сервера подробное сообщение о произошедшем, приведённое ниже.
Подробную информацию можно найти в журнале сервера.
Технические подробности
Удаленный адрес: 192.168.10.207
ID Запроса: t2VEr3doSc9AuWOzYVU9

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

[root@cs ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31
[root@cs ~]#

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

vi /etc/sysconfig/selinux

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

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

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

[root@cs php]# service nginx restart && service php-fpm restart
Redirecting to /bin/systemctl restart nginx.service
Redirecting to /bin/systemctl restart php-fpm.service
[root@cs php]#

После перезагрузки вновь открываем в браузере наш сервер и устанавливаем. У меня установился без указания порта, но если есть желание, указывайте ‘localhost:3306

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

chown nginx:nginx /var/lib/php/session/
chown root:nginx /var/lib/php/wsdlcache/
chown root:nginx /var/lib/php/opcache/

Первым делом, после авторизации, заходим в настройки и выбираем ‘общие сведения’

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

PHP не настроен правильно для получения переменных системного окружения. Запрос getenv(“PATH”) возвращает пустые результаты. Обратитесь к разделу о конфигурации PHP и примечаниям к конфигурации PHP из руководства по установке. Обратите внимание на настройку параметров PHP, особенно при использовании механизма php-fpm.

Редактируем файл /etc/php-fpm.d/www.conf . Нам необходимо найти строки и привести их к следующему виду а именно просто убрать комментарии

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

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

[root@cs php]# printenv PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/xaxa/.local/bin:/home/xaxa/bin
[root@cs php]# service nginx restart && service php-fpm restart
Redirecting to /bin/systemctl restart nginx.service
Redirecting to /bin/systemctl restart php-fpm.service
[root@cs php]#

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

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

[root@cs etc]# service nginx restart && service php-fpm restart
Redirecting to /bin/systemctl restart nginx.service
Redirecting to /bin/systemctl restart php-fpm.service
[root@cs etc]# 

Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим подсказкам по безопасности ↗.

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

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

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

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name cs.xaxa.local;

    ssl_certificate /etc/nginx/ssl/cert.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    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 Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    fastcgi_hide_header X-Powered-By;

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

Устанавливаем сам сервер memcached и модуль php для него

yum -y install memcached php-memcached

Правим конфиг nextcloud /var/www/nextcloud/config/config.php и вставляем следующие строки

  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.distributed' => '\OC\Memcache\Memcached',
  'memcached_servers' => array(
       array('localhost', 11211),
                      ),

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

systemctl enable memcached
systemctl start memcached

PHP OPcache не настроен правильно. Для обеспечения лучшей производительности рекомендуется задать в файле php.ini следующие параметры настроек:
opcache.enable=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.d/10-opcache.ini

Перезагружаем последний раз необходимые службы

[root@cs config]# service nginx restart && service php-fpm restart && service memcached restart
Redirecting to /bin/systemctl restart nginx.service
Redirecting to /bin/systemctl restart php-fpm.service
Redirecting to /bin/systemctl restart memcached.service
[root@cs config]#

и проверяем ещё раз ошибки

Помогла статья? Есть возможность отблагодарить автора

QR Link:

QR Code

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *