Инструкция по развертыванию Nextcloud с Apache на Ubuntu

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

Nextcloud — облачный сервис для организации доступа к данным. Это веб-приложение и для своей работы требует настроенного веб-сервера. В данной инструкции мы рассмотрим процесс настройки сервиса в связке в Apache. Если кому-то понадобиться NGINX, переходим на страницу Установка и настройка Nextcloud + NGINX на Ubuntu.

Настройка времени

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

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

apt-get install chrony

… и запускаем ее:

systemctl enable chrony

systemctl start chrony

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

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в данном примере московское время.

Сервер баз данных

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

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

apt-get install mariadb-server

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

systemctl enable mariadb

systemctl start mariadb

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

mysqladmin -u root password

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

mysql -uroot -p

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

> GRANT ALL PRIVILEGES ON nextcloud.* TO [email protected] IDENTIFIED BY ‘nextcloud’ WITH GRANT OPTION;

Веб-сервер + PHP

Как было сказано выше, для Nextcloud необходим веб-сервер. Само приложение написано на языке PHP и также требуется одноименный интерпретатор.

Apache

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

Устанавливаем веб-сервер:

apt-get install apache2

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

vi /etc/apache2/sites-enabled/nextcloud.conf

<VirtualHost *:80>
    Define root_domain nextcloud.admins24.com
    ServerName ${root_domain}
    Redirect / https://${root_domain}
</VirtualHost>

<VirtualHost *:443>
    Define root_domain nextcloud.admins24.com
    Define root_path /var/www/nextcloud

    ServerName ${root_domain}
    DocumentRoot ${root_path}

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

    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security «max-age=15552000; includeSubDomains; preload»
    </IfModule>
    <Directory ${root_path}>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

* где nextcloud.admins24.com — домен, на котором будет работать сервис; ssl/cert.pem — открытый сертификат; ssl/cert.key — путь до ключа закрытого сертификата; /var/www/nextcloud — каталог с порталом.

Разрешаем модули ssl, rewrite и headers:

a2enmod ssl

a2enmod rewrite

a2enmod headers

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

mkdir /etc/apache2/ssl

cd /etc/apache2/ssl

Генерируем сертификат:

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.admins24.com/CN=nextcloud»

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

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

apachectl configtest

… если видим:

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

systemctl enable apache2

systemctl start apache2

PHP

Устанавливаем PHP и необходимые для работы nextcloud модули:

apt-get install php php-common php-zip php-xml php-intl php-gd php-mysql php-mbstring php-curl php-imagick libapache2-mod-php

Настраиваем php.ini:

vi /etc/php/7.2/apache2/php.ini

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Перезапускаем Apache:

systemctl restart apache2

Установка Nextcloud

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

Ссылка для скачивания nextcloud

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

wget https://download.nextcloud.com/server/releases/nextcloud-15.0.4.zip

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

unzip nextcloud-*.zip

И переносим содержимое архива в каталог /var/www:

mv nextcloud /var/www

Задаем права доступа:

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

Открываем браузер и переходим по адресу https://nextcloud.admins24.com, где nextcloud.admins24.com — адрес облачного сервиса.

Задаем логин и пароль для администратора. В качестве базы данных выбираем MySQL/MariaDB (если предлагается выбор) и вводим в качестве логина, пароля и базы nextcloud.

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

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

Оптимизируем работу базы данных:

sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint

Настройка кэширования

В общих сведениях настроек nextcloud мы получим предупреждение, если не настроим кэширование.

Сначала устанавливаем memcached и php-apcu:

apt-get install memcached php-memcached php-apcu

После разрешаем автозапуск и запускаем сервис кэширования:

systemctl enable memcached

systemctl start memcached

Перезапускаем apache:

systemctl restart apache2

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

vi /var/www/nextcloud/config/config.php

Добавляем:


  ‘memcache.local’ => ‘\OC\Memcache\APCu’,
  ‘memcache.distributed’ => ‘\OC\Memcache\Memcached’,
  ‘memcached_servers’ => [
     [ ‘127.0.0.1’, 11211 ],
  ],

Работа с пользователями из UNIX-Shell

В состав nextcloud входит php-скрипт occ, с помощью которого можно управлять сервисом из командной строки Linux.

Добавление пользователя

Создать нового пользователя можно командой:

sudo -u www-data php /var/www/nextcloud/occ user:add admin

* где admin — имя учетной записи.

Сброс пароля

При необходимости сбросить пароль пользователя, можно воспользоваться командой:

sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin

* где admin — учетная запись пользователя, чей пароль хотим сбросить.