Рассмотренные примеры подойдут для Linux Ubuntu версий 16, 18 и 20.
Подготовка системы
Синхронизируем время.
Устанавливаем утилиту chrony:
apt-get install chrony
Выставляем нужный часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Разрешаем запуск демона chrony:
systemctl enable chrony
Настройка сервера баз данных
В качестве СУБД используем 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 nextcloud@localhost IDENTIFIED BY 'nextcloud';
> q
Установка и настройка веб-сервера
PHP
Устанавливаем PHP, PHP-FPM и необходимые для работы nextcloud модули:
apt-get install php php-fpm php-common php-zip php-xml php-intl php-gd php-mysql php-mbstring php-curl php-imagick
Настраиваем php-fpm:
vi /etc/php/7.4/fpm/pool.d/www.conf
* путь к данной папке зависит от установленной версии php. В данном примере это 7.4.
Снимаем комментарии со следующей строки:
env[PATH] = /usr/local/bin:/usr/bin:/bin
Настраиваем php.ini:
vi /etc/php/7.4/fpm/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
Разрешаем автозапуск php-fpm и перезапускаем его:
systemctl enable php7.4-fpm
systemctl restart php7.4-fpm
* php7.4-fpm зависит от версии установленного php.
NGINX
Nextcloud можно развернуть на NGINX или Apache. В данной инструкции будем использовать первый.
Устанавливаем веб-сервер:
apt-get install nginx
Создаем виртуальный домен и настраиваем его для работы с облачным сервисом:
vi /etc/nginx/conf.d/nextcloud.conf
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;
root /var/www/nextcloud;
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/php7.4-fpm.sock;
}
location ~* ^.+.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires modified +30d;
access_log off;
}
}
* где nextcloud.dmosk.ru — домен, на котором будет работать сервис; /etc/nginx/ssl — каталог, в котором будут храниться сертификаты; /var/www/nextcloud — каталог с порталом.
Создаем каталог для хранения сертификатов и переходим в него:
mkdir /etc/nginx/ssl
cd /etc/nginx/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.dmosk.ru/CN=nextcloud"
* данная команда создаст сертификат на 4 года для URL nextcloud.dmosk.ru или nextcloud.
После установки php мог установиться и запуститься apache. Отключаем его:
systemctl stop apache2
systemctl disable apache2
Проверяем конфигурацию nginx, завершаем его автозапуск и перезапускаем сервис:
nginx -t
systemctl enable nginx
systemctl restart nginx
Установка Nextcloud
Устанавливаем пакет unzip:
apt-get install unzip
Заходим на страницу nextcloud и копируем ссылку на скачивание последней версии программы:
Переходим во временную папку и скачиваем исходник для установки, воспользовавшись скопированной ссылкой:
cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-19.0.3.zip
Распаковываем скачанный архив:
unzip nextcloud-*.zip
И переносим содержимое архива в каталог /var/www:
mv nextcloud /var/www
Задаем права доступа:
chown -R www-data:www-data /var/www/nextcloud
Открываем браузер и переходим по адресу https://nextcloud.dmosk.ru, где nextcloud.dmosk.ru — адрес облачного сервиса.
Задаем логин и пароль для администратора. В качестве базы данных выбираем MySQL/MariaDB (если предлагается выбор) и вводим в качестве логина, пароля и базы nextcloud.
Завершаем установку.
Оптимизируем работу базы данных:
sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Тюнинг после установки
Для корректной работы системы выполним дополнительную настройку. После входа в nextcloud под администратором, переходим в настройки для пользователя:
В разделе «Параметры сервера» переходим в Основные сведения:
В разделе «Проверка безопасности и параметров» мы можем увидеть список проблем:
Рассмотрим процесс решения некоторых из них.
1. Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ
Открываем на редактирование файл:
vi /etc/php/7.4/fpm/php.ini
Меняем настройку для memory_limit:
memory_limit = 512M
Перезапускаем php-fpm:
systemctl restart php7.4-fpm
2. В системе не установлены рекомендуемые модули PHP
Данная ошибка устраняется в зависимости от списка модулей, которых не хватает системе. Чаще всего, подходит команда:
dnf install php-<название модуля>
Например:
apt-get install php-gmp php-bcmath
После перезапускаем php-fpm:
systemctl restart php7.4-fpm
3. Не настроена система кеширования
Для решения проблемы мы должны установить и настроить одно из средств кэширования:
- APCu
- Redis
- Memcached
Мы рассмотрим последний вариант. Для этого выполняем установку модуля для php и сам сервис memcached:
apt-get install memcached php-memcached
После разрешаем его автозапуск:
systemctl enable memcached
Перезапускаем php-fpm:
systemctl restart php7.4-fpm
После этого открываем конфигурационный файл для nextcloud:
vi /var/www/nextcloud/config/config.php
И добавим:
...
'memcache.local' => '\OC\Memcache\Memcached',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' =>
array (
0 =>
array (
0 => 'localhost',
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 — учетная запись пользователя, чей пароль хотим сбросить.
Подключение папки nextcloud по webdav
Мы можем подключить пользовательские данные nextcloud в качестве сетевого диска или раздела. Рассмотрим процесс для Windows и Linux.
Windows
Для начала необходимо включить службу «Веб-клиент». Для этого открываем от администратора командную строку и вводим команды:
sc config webclient start= auto
net start webclient
* первая команда включит автозапуск службы; вторая — запустит ее.
После открываем командную строку от пользователя и создаем сетевой диск командой:
net use <Буква диска>: https://<путь до nextcloud>/remote.php/webdav /user:user password
Например, для нашей настройки:
net use N: https://nextcloud.dmosk.ru/remote.php/webdav /user:admin password
* где N — буква сетевого диска; nextcloud.dmosk.ru — адрес нашего сервера; admin — учетная запись, которая была создана при установке системы; password — пароль от пользователя admin.
Ограничение на копирование файла с webdav
В Windows при попытке скопировать большой файл с папки webdav, мы можем получить ошибку «Ошибка 0x800700DF: Размер файла превышает установленное ограничение, сохранение файла невозможно.»:
Для решения проблемы необходимо на клиенте разрешить больший объем для загрузки файлов. Это делается в реестре — ветка HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWebClientParameters, параметр FileSizeLimitInBytes. Для примера, если задать значение 4294967295 (максимально возможное), то мы получим ограничение в 4 Гб.
Также можно воспользоваться командой:
reg add "HKLMSYSTEMCurrentControlSetServicesWebClientParameters" /v FileSizeLimitInBytes /t REG_DWORD /d 4294967295 /f
* команду нужно запускать в консоли, запущенной от администратора. В данном примере мы задаем также ограничение в 4 Гб.
Linux
Установим клиент davfs2. Действия будут немного различаться в зависимости от дистрибутива Linux.
а) Ubuntu / Debian:
apt-get install davfs2
б) CentOS / Red Hat:
yum install davfs2
Теперь мы можем примонтировать
mount -t davfs -o noexec https://nextcloud.dmosk.ru/remote.php/webdav /mnt
* в данном примере мы запустим команду на монтирование раздела по webdav в каталог /mnt. Обращение выполняется на наш сервер nextcloud.dmosk.ru.
После ввода команды, система попросит нас ввести логин и пароль от учетной записи Nextcloud:
Username: user
...
Password:
После каталог будет примонтирован.
Для постоянного монтирования серез fstab, открываем файл:
vi /etc/fstab
Добавляем строчку:
https://nextcloud.dmosk.ru/remote.php/webdav/ /mnt davfs user,rw,_netdev 0 0
После открываем файл:
vi /etc/davfs2/secrets
И добавляем строку:
/mnt user password
* где /mnt — предполагаемый каталог, куда мы будем монтировать данные; user и password — логин и пароль от учетной записи в Nextcloud.
Монтируем каталог командой:
mount -a
Источник: https://www.dmosk.ru/miniinstruktions.php?mini=nextcloud-ubuntu