Nextcloud nginx php fpm

Установка и настройка NextCloud на Rocky Linux 8

Обновлено

Обновлено: 24.05.2023 Опубликовано: 28.05.2020

Данная инструкция протестирована для установки NextCloud версий 2x (Hub 1-4), а также Rocky Linux 8 / CentOS 8. В качестве веб-сервера нами будет использоваться связка NGINX + MariaDB + php-fpm. Мы будем выполнять чистую установку на сервер (без docker).

Подготовка сервера

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

2. Правильное время.

Устанавливаем утилиту chrony:

systemctl enable chronyd —now

Выставляем нужный часовой пояс:

timedatectl set-timezone Europe/Moscow

* в данном примере московское время. Другие зоны также можно найти по пути /usr/share/zoneinfo.

3. Настройка брандмауэра.

Выполняется следующими командами:

firewall-cmd —permanent —add-service=

4. Отключение SELinux.

Для отключения SELinux вводим две команды:

sed -i «s/SELINUX=enforcing/SELINUX=disabled/» /etc/selinux/config

* первая команда отключает SELinux до перезагрузки, вторая — навсегда.
* подробнее об отключении SELinux. Подробнее о настройке SELinux.

Настройка сервера баз данных

В качестве СУБД используем MariaDB.

dnf install mariadb-server

* обратите внимание, чтобы устанавливалась одна из поддерживаемых версий СУБД. Если же в репозитории системы версия более новая или старая, используйте инструкцию Установка MariaDB-server на Rocky Linux или Ubuntu — раздел Подключение актуального репозитория.

Разрешаем автозапуск и стартуем сервис:

systemctl enable mariadb —now

Задаем пароль для суперпользователя mysql:

mysqladmin -u root password

Подключаемся к MariaDB, создаем базу данных и пользователя:

> CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

> GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost IDENTIFIED BY ‘nextcloud’;

* данными командами мы создали базу данных nextcloud, затем с таким же названием мы создали пользователя и задали ему пароль nextcloud.

Установка и настройка PHP + PHP-FPM

PHP

По умолчанию, из репозитория Rocky Linux и CentOS 8 может устанавливаться не та версия пакета php. Мы можем посмотреть ее командой:

dnf list available | egrep ^php.x86_64

а) Если версия не соответствует требуемой (на момент обновления инструкции это была 8.1), вводим команды:

* мы настроим репозиторий для установки php версии 8.1.

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

dnf install php php-fpm php-pdo php-zip php-dom php-intl php-gd php-mysqli php-mbstring php-json php-process php-bcmath php-gmp php-opcache php-process

PHP-FPM

Сам пакет php-fpm мы установили на предыдущем шаге. Поэтому на данном этапе необходимо его настроить.

Открываем конфигурационный файл:

Находим опцию listen. Проверяем ее значение:

Разрешаем автозапуск php-fpm и запускаем его:

systemctl enable php-fpm —now

Установка и настройка веб-сервера

Мы рассмотрим два варианта установки веб-сервера: NGINX и Apache. Установить нужно что-то одно.

NGINX

Nextcloud можно развернуть на NGINX или Apache. В данной инструкции будем использовать первый.

Для правильной работы nextcloud запросы должны идти по https. Для этого создаем виртуальный домен и настраиваем его для работы с облачным сервисом в NGINX:

server listen 80;
server_name nextcloud.dmosk.ru;
return 301 https://$server_name$request_uri;
>

server listen 443 ssl;
server_name nextcloud.dmosk.ru;

ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;

add_header Strict-Transport-Security «max-age=31536000; includeSubDomains» always;
client_max_body_size 10G;
fastcgi_buffers 64 4K;

rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

index index.php;
error_page 403 = /core/templates/403.php;
error_page 404 = /core/templates/404.php;

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

location ~ ^/(data|config|\.ht|db_structure\.xml|README) deny all;
>

location / rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
>

location ~ ^(.+?\.php)(/.*)?$ try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
fastcgi_pass unix:/run/php-fpm/www.sock;
>

location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ expires modified +30d;
access_log off;
>
>

* где dmosk.ru — домен, на котором будет работать сервис; nextcloud.dmosk.ru — имя сервера, на котором будет работать nextcloud; /etc/nginx/ssl — каталог, в котором будут храниться сертификаты; /var/www/nextcloud — каталог с порталом.

Создаем каталог для хранения сертификатов и переходим в него:

openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=nextcloud.dmosk.ru/CN=nextcloud»

* данная команда создаст сертификат на 4 года для URL nextcloud.dmosk.ru или nextcloud.
* в данном примере мы, всего лишь, создали самоподписанный сертификат, который не будет приниматься браузером и нужно будет пропускать предупреждение. Данный метод подходит для тестирования, а для продуктивной среды стоит купить сертификат или получить его бесплатно от Let’s Encrypt.

Проверяем конфигурацию nginx, разрешаем его автозапуск и перезапускаем сервис:

systemctl enable nginx —now

Apache

Создаем виртуальный домен и настраиваем его для работы с облачным сервисом:

Define root_domain nextcloud.dmosk.ru
Define root_path /var/www/nextcloud

SSLEngine on
SSLCertificateFile /etc/httpd/ssl/cert.pem
SSLCertificateKeyFile /etc/httpd/ssl/cert.key


Header always set Strict-Transport-Security «max-age=15552000; includeSubDomains; preload»

>
AllowOverride All
Require all granted

  • nextcloud.dmosk.ru — домен, на котором будет работать сервис.
  • ssl/cert.pem — открытый сертификат. Его мы создадим ниже по инструкции.
  • ssl/cert.key — путь до ключа закрытого сертификата. Его мы создадим ниже по инструкции.
  • /var/www/nextcloud — каталог с порталом. В него мы распакуем исходники.

Создаем каталог для хранения сертификатов и переходим в него:

openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=nextcloud.dmosk.ru/CN=nextcloud»

* данная команда создаст сертификат на 4 года для URL nextcloud.dmosk.ru или nextcloud.

Для первичного запуска Nextcloud достаточно самоподписанного сертификата. Однако, для продуктивной среду лучше его купить или запросить бесплатный у Let’s Encrypt.

Проверяем конфигурацию apache:

* мы увидим предупреждение Warning: DocumentRoot [/var/www/nextcloud] does not exist. Оно означает, что каталога /var/www/nextcloud не существует. Игнорируем — мы созданим его позже.

Разрешаем автозапуск апача и перезапускаем сервис:

Установка Nextcloud

Для загрузки и распаковки архива на нужны следующие пакеты:

Переходим во временную папку:

Заходим на сайт nextcloud и копируем ссылку на скачивание последней версии программы:

Копируем ссылку для скачивания последней версии сервера Nextcloud

Скачиваем исходник для установки:

Распаковываем скачанный архив:

chown -R apache:apache /var/www/nextcloud

Открываем браузер и переходим по адресу https://nextcloud.dmosk.ru, где nextcloud.dmosk.ru — наш адрес облачного сервиса, который мы создали в NGINX. Если мы используем самоподписанный сертификат, браузер выдаст предупреждение безопасности — игнорируем его и переходим на страницу.

* так как мы настроили виртуальный домен, важно обратиться к серверу, именно, по имени. Таким образом, настроенный узел (в моем случае, nextcloud.dmosk.ru) должен разрешаться в DNS или быть внесен в локальный файл hosts.

Прописываем логин и пароль администратора, которые хотим использовать для входа, кликаем по Хранилище и база данных:

Создаем пользователя и переходим к настройке хранилища для nextcloud

Переключаемся на MySQL/MariaDB, вводим в качестве логина, пароля и базы nextcloud:

Задаем настройки для подключения к базе данных

Завершаем установку, при желании, оставим галочку для установки рекомендованных приложений:

Завершаем установку Nextcloud

После установки мы окажемся в системе.

Проверка безопасности и параметров

Для корректной работы системы выполним дополнительную настройку системы. После входа в nextcloud под администратором, переходим в настройки для пользователя:

Переходим в настройку Nextcloud

В разделе «Параметры сервера» переходим в Основные сведения:

Переходим к общим сведениям

В разделе «Проверка безопасности и параметров» мы можем увидеть список проблем:

В разделе «Проверка безопасности и параметров» мы можем увидеть список проблем

Рассмотрим процесс решения некоторых из них.

1. PHP не настроен правильно для получения переменных системного окружения

Открываем файл php.ini. При нашей установке, это:

Снимаем комментарий с параметра PATH:

Источник

Читайте также:  Java extends class cannot find symbol
Оцените статью