Здравствуйте, уважаемые читатели. Сегодня статья на тему: "Установка Nextcloud на CentOS 7". В одной из предыдущих статей, мы рассматривали установку облачного хранилища ownCloud, в данной статье рассмотрим установку его аналога – продукта под названием Nextcloud.

Nextcloud – это бесплатное веб-приложение для хранения, обмена и удалённого доступа к файлам. Ссылка на официальный сайт продукта: https://nextcloud.com/

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

Установка Nextcloud практически ничем не отличается от установки другого облачного хранилища OwnCloud.

--- Для установки и использования Nextcloud, необходима установка дополнительных компонентов:

  1. Веб-сервер.
  2. Сервер баз данных.
  3. PHP.

Будем использовать nginx+php-fpm , и mariadb.

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

Для примера, в конфигурации я буду использовать домен oblako.ru, Вы измените на свой соответственно.

  • Подключаем репозиторий epel-release, если он ещё не подключён.
# yum install epel-release

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

  • Для установки веб-сервера NGINX, нужно подключить официальный репозиторий.
  • Создаём файл nginx.repo в директории /etc/yum.repos.d/ с таким содержанием:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
  • Теперь можно запустить установку веб-сервера.
# yum install nginx
  • После завершения установки, запускаем nginx, и добавляем его в автозагрузку.
# systemctl start nginx
# systemctl enable nginx

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

  • Подключаем родной репозиторий MariaDB, путём создания файла mariadb.repo, в директории /etc/yum.repos.d/, с таким содержанием:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
  • Запускаем установку сервера баз данных.
 # yum install MariaDB-server MariaDB-client  
  • По завершении установки, запускаем mariadb и добавляем в автозагрузку.
# systemctl start mariadb
# systemctl enable mariadb
  • Запускаем скрипт первоначальной настройки MariaDB, и производим настройку.
 # /usr/bin/mysql_secure_installation 
  • После настройки, можно создать базу данных для нашего хранилища.
  • Заходим под рутом, и выполняем нужные команды.
 # mysql -u root –p 

MariaDB [(none)]> create database oblako;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON oblako.* TO 'oblako'@'localhost' IDENTIFIED BY '123';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;

— Первой командой — мы создаём базу данных (в моём случае – oblako).

— Второй командой — мы создаём пользователя для базы oblako. (в моём случае – пользователь oblako с паролем 123).

— Третьей командой — мы перезагружаем привилегии.

— Четвёртой командой — выходим из конфигурирования сервера баз данных.

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

  • Для установки PHP-7.3, подключаем репозиторий Remi.
 # rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm 
  • Производим устновку дополнительных пакетов, для пакетного менеджера yum.
 # yum install yum-utils 
  • Производим активацию remi-php73.
 # yum-config-manager --enable remi-php73 
  • Теперь можно произвести установку необходимых пакетов.
 # yum install php php-fpm php-pdo php-zip php-dom php-mcrypt php-intl php-gd php-mysql php-mbstring 
  • По завершении установки, производим настройку php-fpm.
  • Открываем конфигурационный файл /etc/php-fpm.d/www.conf, и вносим в него изменения.
 Находим и закомментируем строчку:

;listen = 127.0.0.1:9000

Под этой строчкой добавляем:

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

Находим строчки:

user = apache
group = apache

apache меняем на nginx

Находим и раскомментируем строчки:

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
  • Меняем права для временной папки.
# chown root:nginx /var/lib/php/session/
# chown -R nginx:nginx /var/lib/php/session/ 
  • Запускаем, и добавляем в автозагрузку php-fpm.
# systemctl enable php-fpm
# systemctl start php-fpm

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

  • Для работы Nextcloud, необходимо открыть два порта 80 и 443, открываем их.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
  • После внесения изменений, перезапускаем iptables.
 # systemctl restart iptables 

Настройка веб-сервера

  • В директории /etc/nginx/conf.d, создаём конфигурационный файл, в моём случае это будет - oblako.ru.conf, и добавляем конфигурацию:

server {
        listen 80;
        server_name oblako.ru;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl;
        server_name oblako.ru;

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

        root /var/www/html/nextcloud;
		access_log  /var/log/nginx/oblako_access.log;
        error_log  /var/log/nginx/oblako_error.log;

        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:/var/run/php-fpm/php-fpm.sock;
        }

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

Создание самоподписанного сертификата

  • Так как мы будем использовать защищённое соединение, нам нужно создать удостоверяющие файлы.
# openssl req -new -x509 -days 1461 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key -subj "/C=RU/ST=Moscow/L=Moscow/O=Org/OU=OU/CN=oblako.ru"

Вы можете изменить регистрационные данные в команде, под свои.

  • Задаём нужные права для созданных файлов.
# chmod 600 /etc/nginx/cert.pem
# chmod 600 /etc/nginx/cert.key
  • Перезапускаем веб-сервер.
 # systemctl restart nginx 

Установка Nextcloud

  • Производим установку необходимых пакетов.
# yum install wget
# yum install unzip zip
  • Заходим в директорию /var/www/html.
 # cd /var/www/html 
  • На официальном сайте, узнаём ссылку на скачивание последней версии Nextcloud, в моём случае это версия 18.0.1, и скачиваем архив.
# wget https://download.nextcloud.com/server/releases/nextcloud-18.0.1.zip
  • Разархивируем архив с Nextcloud.
# unzip nextcloud-18.0.1.zip
  • Добавляем необходимые права на директорию с Nextcloud.
# chown nginx:nginx -R /var/www/html/nextcloud/
  • Создаём директорию для данных, вне директории nextcloud.
# mkdir -p /data
  • Задаём необходимые права.
# chown nginx:nginx /data
  • Теперь можно переходить к установке Nextcloud.
  • Открываем браузер, и вводим своё доменное имя.
  • Появится предупреждение о самоподписанном сертификате, так и должно быть, соглашаемся с предупреждением.
  • Открывается форма создания учётной записи администратора, и подключения к базе данных.
форма установки Nextcloud
  • Создаём администратора, заполняем нужные данные, и меняем указанный каталог с данными, на каталог /data, созданный нами для этих целей.
  • Жмём на «Завершить установку».
  • Через какое-то время, открывается панель управления Вашим облачным хранилищем.

На этом установка Nextcloud завершена. Обзор функционала хранилища, можно посмотреть в видео по теме.

Сегодня мы рассмотрели тему: "Установка Nextcloud на CentOS 7". Произвели установку облачного хранилища Nextcloud. Смотрите также видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Установка Nextcloud на CentOS 7":