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

Задача:
Настроить веб-сервер 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]#
и проверяем ещё раз ошибки

Свежие комментарии