Гид по технологиям

Установка Nextcloud 10 на CentOS 7 с Nginx, PHP7-FPM и MariaDB

• 6 min read • Серверы • Обновлено 18 Nov 2025
Установка Nextcloud 10 на CentOS 7
Установка Nextcloud 10 на CentOS 7

Важно: этот материал предназначен для системных администраторов, знакомых с командной строкой и базовой администрированием Linux.

О чём этот документ

Это практическая инструкция по развёртыванию Nextcloud версии 10 на сервере CentOS 7 с Nginx и PHP7-FPM, использованием MariaDB в качестве СУБД. Приведены команды, конфигурации и советы по безопасности и совместимости. Определение: Nextcloud — открытое ПО для синхронизации файлов и совместной работы, форк проекта ownCloud.

Основные варианты использования

  • Личный облачный хостинг для файлов, календарей и контактов.
  • Корпоративное решение для совместной работы на собственной инфраструктуре.
  • Тестовый стенд для изучения Nextcloud и интеграций.

Содержание

  • Предварительные требования
  • Шаги установки (1–8)
  • Настройка безопасности и SELinux
  • Альтернативные подходы и когда они подходят
  • Проверка работоспособности и критерии приёмки
  • Рекомендации по обслуживанию и резервному копированию
  • Краткий словарь и чек-листы ролей

Предварительные требования

  • Сервер с CentOS 7 (64‑bit). Рекомендуется чистая установка или тестовая среда.
  • Доступ root или пользователь с sudo-привилегиями.
  • Домен или DNS-имя (в примерах используется cloud.nextcloud.co).

Совет: для production используйте валидный сертификат от CA (Let’s Encrypt или платный), а в тестовой среде можно временно использовать самоподписанный.


Шаг 1 — Установка Nginx и PHP7-FPM

Перед установкой добавим репозиторий EPEL и репозиторий для PHP7.

Установите EPEL:

yum -y install epel-release

Установите Nginx:

yum -y install nginx

Добавьте репозиторий webtatic (в этом руководстве использован webtatic):

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

Установите PHP7-FPM и необходимые расширения (подходит для Nextcloud 10):

yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel

Проверка версии PHP:

php -v

Примечание: если вы используете другой репозиторий PHP (Remi, SCL), команды и имена пакетов будут отличаться.


Шаг 2 — Конфигурация PHP7-FPM

Настроим php-fpm для работы с Nginx. Процесс-фабрикат: php-fpm будет запущен от пользователя nginx и слушать порт 9000.

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

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

Измените пользователя и группу на nginx (строки user и group):

user = nginx
group = nginx

Убедитесь, что php-fpm слушает на 127.0.0.1:9000:

listen = 127.0.0.1:9000

Активируйте переменные окружения php-fpm (уберите комментирование):

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

Создайте директорию для PHP-сессий и назначьте владельца:

mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/

Запустите службы и включите автозапуск:

sudo systemctl start php-fpm
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl enable nginx

Важно: проверяйте системный журнал (journalctl) при ошибках: systemctl status php-fpm и systemctl status nginx.


Шаг 3 — Установка и настройка MariaDB

Установим MariaDB из репозиториев CentOS:

yum -y install mariadb mariadb-server

Запустите и включите MariaDB:

systemctl start mariadb
systemctl enable mariadb

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

mysql_secure_installation

Следуйте подсказкам: установите root‑пароль, удалите анонимных пользователей и тестовую базу, запретите удалённый вход для root (если это требуется).

Создайте базу и пользователя для Nextcloud (замените пароль на надёжный):

mysql -u root -p
# В консоли mysql:
create database nextcloud_db;
create user nextclouduser@localhost identified by 'nextclouduser@';
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'nextclouduser@';
flush privileges;
exit;

Создание базы данных Nextcloud и пользователя в MariaDB

Примечание: используйте сложный пароль вместо примера. Для production окружения рекомендуется выделенная база и отдельный пользователь с минимальными правами.


Шаг 4 — Самоподписанный SSL (или используйте Let’s Encrypt)

Для защиты данных используйте HTTPS. В тестовой среде можно создать самоподписанный сертификат, в production лучше получить сертификат от CA.

Создайте директорию для сертификатов:

mkdir -p /etc/nginx/cert/

Сгенерируйте сертификат OpenSSL:

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/nextcloud.crt -keyout /etc/nginx/cert/nextcloud.key

Ограничьте права доступа:

chmod 700 /etc/nginx/cert
chmod 600 /etc/nginx/cert/*

Генерация SSL сертификата для Nextcloud

Совет: для автоматического и бесплатного SSL используйте certbot и Let’s Encrypt.


Шаг 5 — Скачивание и установка Nextcloud

Установите wget и unzip, затем скачайте архив Nextcloud:

yum -y install wget unzip
cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip
unzip nextcloud-10.0.2.zip
mv nextcloud/ /usr/share/nginx/html/

Создайте папку для данных и назначьте владельца:

cd /usr/share/nginx/html/
mkdir -p nextcloud/data/
chown nginx:nginx -R nextcloud/

Шаг 6 — Виртуальный хост Nginx для Nextcloud

Создайте конфигурацию в /etc/nginx/conf.d/nextcloud.conf и вставьте следующий блок (проверьте server_name):

upstream php-handler {
    server 127.0.0.1:9000;
}

server {
    listen 80;
    server_name cloud.nextcloud.co;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name cloud.nextcloud.co;

    ssl_certificate /etc/nginx/cert/nextcloud.crt;
    ssl_certificate_key /etc/nginx/cert/nextcloud.key;

    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    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;

    root /usr/share/nginx/html/nextcloud/;

    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 off;

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

    location / {
        rewrite ^ /index.php$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/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        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|ocs-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }

    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options "SAMEORIGIN";
        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;
        access_log off;
    }

    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }
}

Проверьте конфигурацию и перезапустите Nginx:

nginx -t
systemctl restart nginx

Примечание: замените cloud.nextcloud.co на ваш домен. Если используете UNIX-сокет PHP-FPM, измените upstream на server unix:/var/run/php-fpm/www.sock;.


Шаг 7 — SELinux и firewalld

Для работы при включённом SELinux нужно пометить каталоги корректным типом:

Установите утилиты управления SELinux:

yum -y install policycoreutils-python-utils

Выполните команды (под root), замените путь при необходимости:

semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/.user.ini'

restorecon -Rv '/usr/share/nginx/html/nextcloud/'

Настройка firewall-cmd:

systemctl start firewalld
systemctl enable firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Важно: SELinux повышает безопасность, но требует корректной настройки контекстов. При проблемах временно переключите SELinux в режим permissive для диагностики: setenforce 0 (не рекомендуется для production).


Шаг 8 — Мастер установки Nextcloud (веб-интерфейс)

Откройте браузер и перейдите по доменному имени вашего сервера, например https://cloud.nextcloud.co. Если вы используете самоподписанный сертификат, браузер предупредит о ненадёжном сертификате.

Введите имя администратора и пароль. В разделе базы данных укажите параметры, созданные ранее (nextcloud_db, nextclouduser, пароль).

Нажмите “Finish Setup” (Завершить настройку). После успешной установки откроется панель администратора и файловый менеджер.

Мастер установки Nextcloud на CentOS 7

Панель администратора Nextcloud (Файловый менеджер)

Настройки администратора Nextcloud


Критерии приёмки

  • Веб-интерфейс Nextcloud доступен по https и отвечает 200.
  • Войдите под аккаунтом администратора и загрузите файл > 1 MB.
  • Проверьте календарь/контакты (если используете эти приложения).
  • В логах Nginx и PHP-FPM нет ошибок fatal при выполнении операций.
  • SELinux не блокирует доступ (ausearch/semodule при ошибках).

Полезные проверки и отладка

  • Просмотр логов Nginx: journalctl -u nginx или /var/log/nginx/error.log
  • Логи PHP-FPM: journalctl -u php-fpm или /var/log/php-fpm/www-error.log
  • Логи Nextcloud: /usr/share/nginx/html/nextcloud/data/nextcloud.log
  • Проверка прав файлов: ls -la и chown/chmod при необходимости

Альтернативные подходы

  • Использовать Apache вместо Nginx. Apache проще в настройке для некоторых модулей, но Nginx часто эффективнее по памяти.
  • Использовать UNIX-сокет для PHP-FPM (server unix:/var/run/php-fpm/www.sock) вместо TCP-порта — чуть быстрее на локальной машине.
  • Для SSL в production используйте Let’s Encrypt (certbot) для автоматического продления.
  • Рассмотрите контейнеризированную установку (Docker, Podman) для изоляции и упрощения обновлений.

Когда этот метод не подходит

  • Если у вас ограниченный тариф хостинга без root‑доступа — нельзя установить компоненты.
  • Если вам нужна высокая доступность и масштабирование — требуется кластеризация БД и файловой подсистемы, этот гайд для одиночного сервера.

Безопасность: дополнительные рекомендации

  • Отключите PHP-функции, которые не нужны (например, exec, shell_exec) в php.ini.
  • Настройте автоматическое обновление безопасности через тестовые политики и регулярное планирование обновлений.
  • Ограничьте доступ к административной панели по IP (если возможно).
  • Включите двухфакторную аутентификацию для админ-аккаунтов.
  • Регулярно проверяйте логи и настраивайте мониторинг (уместно Zabbix/Prometheus).

Резервное копирование и восстановление

Минимальный набор для бекапа:

  • Дамп базы данных: mysqldump nextcloud_db > nextcloud_db.sql
  • Резерв каталога данных (nextcloud/data)
  • Резерв каталога конфигурации (nextcloud/config/)

Пример простого плана:

  1. Остановите web-сервер или переведите систему в режим обслуживания.
  2. Выполните mysqldump.
  3. Создайте архив каталога data и config (tar + gz).
  4. Храните бэкапы вне сервера (в облаке/на NAS).

Чек-листы ролей

Системный администратор:

  • Установить ОС и обеспечить доступ.
  • Настроить репозитории и установить пакеты.
  • Настроить SELinux и firewall-cmd.
  • Настроить бэкапы и мониторинг.

DevOps-инженер:

  • Настроить CI для обновлений/патчей.
  • Подготовить контейнерную альтернативу.
  • Автоматизировать развёртывание и бекапы.

Администратор Nextcloud:

  • Настроить пользователей и группы.
  • Включить нужные приложения (Calendar, Contacts и т.д.).
  • Настроить политики паролей и 2FA.

Совместимость и миграция

  • При миграции с ownCloud проверяйте версию и совместимость приложений. Некоторые плагины могут требовать ручной миграции.
  • При обновлении Nextcloud делайте тестовое обновление на staging перед production.

Краткий словарь (1 строка)

  • Nextcloud — серверное ПО для синхронизации файлов и совместной работы.
  • Nginx — веб-сервер/обратный прокси, часто используется с PHP-FPM.
  • PHP-FPM — менеджер процессов PHP с поддержкой пуулов воркеров.
  • MariaDB — СУБД, fork MySQL.

Контрольные тесты (минимум)

  • Авторизация: вход по администраторскому аккаунту.
  • Загрузка файла 100 MB и скачивание обратно.
  • Создание календарного события и синхронизация с мобильного клиента.
  • Проверьте права и SELinux, выполнив операции записи в data.

Итог

Nextcloud 10 можно успешно запустить на CentOS 7 с Nginx, PHP7-FPM и MariaDB. Следуйте шагам: установка пакетов, настройка php-fpm, база данных, SSL, виртуальный хост, SELinux и firewall. После установки пройдите через веб-мастер и выполните проверочные тесты. Для production окружений замените самоподписанный сертификат на сертификат от доверенного CA и настройте регулярные бэкапы.


Ссылки и источники

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро