linux:debian:nextcloud
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| linux:debian:nextcloud [2026/04/12 17:24] – создано Кирилл М | linux:debian:nextcloud [2026/04/20 06:20] (текущий) – Кирилл М | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Установка Nextcloud ====== | ||
| + | |||
| + | ===== Установка Веб-сервер Apache ===== | ||
| + | |||
| + | Устанавливаем Apache: | ||
| + | <code bash> | ||
| + | sudo apt install apache2 | ||
| + | </ | ||
| + | |||
| + | Добавляем Apache в автозагрузку: | ||
| + | <code bash> | ||
| + | sudo systemctl enable apache2 | ||
| + | </ | ||
| + | |||
| + | Запускаем Apache: | ||
| + | <code bash> | ||
| + | sudo systemctl start apache2 | ||
| + | </ | ||
| + | |||
| + | Смотрим статус: | ||
| + | <code bash> | ||
| + | sudo systemctl status apache2 | ||
| + | </ | ||
| + | |||
| + | ===== Установка PHP для Nextcloud | ||
| + | |||
| + | Добавляем ключ репозитория: | ||
| + | <code bash> | ||
| + | sudo apt install lsb-release ca-certificates curl apt-transport-https | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo curl -sSLo / | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo dpkg -i / | ||
| + | </ | ||
| + | |||
| + | Добавляем репозиторий: | ||
| + | <code bash> | ||
| + | sudo sh -c 'echo "deb [signed-by=/ | ||
| + | </ | ||
| + | |||
| + | Обновляем список пакетов в репозиториях: | ||
| + | <code bash> | ||
| + | sudo apt update | ||
| + | </ | ||
| + | |||
| + | Установка PHP 8.4 для NextCloud | ||
| + | <code bash> | ||
| + | sudo apt install php php-common php-bcmath php-curl php-gd php-gmp php-imap php-igbinary php-imagick php-intl php-json php-mbstring php-xml php-zip libapache2-mod-php php-mysql | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | sudo apt install php-apcu php-bz2 php-cli php-fpm php-memcached php-pear php-soap memcached | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | sudo apt install libmagickcore-dev librsvg2-bin ffmpeg | ||
| + | </ | ||
| + | |||
| + | ===== Настройка php.ini ===== | ||
| + | |||
| + | Проверяем текущие значения: | ||
| + | <code bash> | ||
| + | grep -E " | ||
| + | </ | ||
| + | |||
| + | Увеличиваем лимит: | ||
| + | <code bash> | ||
| + | sudo sed -i ' | ||
| + | </ | ||
| + | |||
| + | ===== Установка MariaDB для Nextcloud из Официального репозитория Debian ===== | ||
| + | |||
| + | Устанавливаем MariaDB: | ||
| + | <code bash> | ||
| + | sudo apt install mariadb-server mariadb-client | ||
| + | </ | ||
| + | |||
| + | ===== Установка MariaDB 11.4 из Официального репозитория MariaDB ===== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Добавляем ключ репозитория: | ||
| + | <code bash> | ||
| + | sudo apt-get install apt-transport-https curl | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo mkdir -p / | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo curl -o / | ||
| + | </ | ||
| + | |||
| + | Добавляем репозиторий: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | # MariaDB 11.4 repository list - created 2025-11-01 12:08 UTC | ||
| + | # https:// | ||
| + | X-Repolib-Name: | ||
| + | Types: deb | ||
| + | # deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https:// | ||
| + | # URIs: https:// | ||
| + | URIs: https:// | ||
| + | Suites: bookworm | ||
| + | Components: main | ||
| + | Signed-By: / | ||
| + | </ | ||
| + | |||
| + | Обновляем список пакетов в репозиториях: | ||
| + | <code bash> | ||
| + | sudo apt update | ||
| + | </ | ||
| + | |||
| + | Устанавливаем MariaDB | ||
| + | <code bash> | ||
| + | sudo apt install mariadb-server mariadb-client | ||
| + | </ | ||
| + | |||
| + | ===== Первоначальная настройка MariaDB ===== | ||
| + | |||
| + | Делаем первоначальную настройку базы данных MariaBD: | ||
| + | <code bash> | ||
| + | sudo mariadb-secure-installation | ||
| + | </ | ||
| + | |||
| + | Отвечаем yes / y на следующие вопросы безопасности: | ||
| + | |||
| + | ^ Вопрос | ||
| + | | Введите текущий пароль для пользователя root? | Ничего не вводим, | ||
| + | | Переключиться на аутентификацию unix_socket? | ||
| + | | Установить пароль root? | Y / n: y | | ||
| + | | Удалить анонимных пользователей? | ||
| + | | Запретить вход в систему удаленно? | ||
| + | | Удалить тестовую базу данных и получить доступ к ней? | ||
| + | | Обновить таблицы привилегий сейчас? | ||
| + | |||
| + | ===== Создаём базу для Nextcloud ===== | ||
| + | |||
| + | Подключаемся к Mysql: | ||
| + | <code bash> | ||
| + | sudo mariadb -u root -p | ||
| + | </ | ||
| + | |||
| + | Создаём новую базу: | ||
| + | <code mysql> | ||
| + | CREATE DATABASE nextcloud; | ||
| + | </ | ||
| + | |||
| + | Создаём пользователя базы данных, | ||
| + | <code mysql> | ||
| + | GRANT ALL ON nextcloud.* TO ' | ||
| + | </ | ||
| + | |||
| + | Сохраняем изменения: | ||
| + | <code mysql> | ||
| + | FLUSH PRIVILEGES; | ||
| + | </ | ||
| + | |||
| + | Выходим из базы данных: | ||
| + | <code mysql> | ||
| + | EXIT; | ||
| + | </ | ||
| + | |||
| + | ===== Настраиваем Apache ===== | ||
| + | |||
| + | Установите права доступа на директорию **www**: | ||
| + | <code bash> | ||
| + | sudo chmod -R 775 /var/www | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | sudo chown -R $USER:$USER /var/www | ||
| + | </ | ||
| + | |||
| + | Добавляем нашего пользователя в группу **www-data**: | ||
| + | <code bash> | ||
| + | sudo usermod -aG www-data $USER | ||
| + | </ | ||
| + | |||
| + | Добавляем пользователя www-data в группу нашего пользователя: | ||
| + | <code bash> | ||
| + | sudo usermod -aG $USER www-data | ||
| + | </ | ||
| + | |||
| + | ===== Создаём новый виртуальный хост ===== | ||
| + | |||
| + | Сначала отключим хост по умолчанию: | ||
| + | <code bash> | ||
| + | sudo a2dissite 000-default | ||
| + | </ | ||
| + | |||
| + | Переходим в директорию **/ | ||
| + | <code bash> | ||
| + | cd /var/www | ||
| + | </ | ||
| + | |||
| + | Создаём новый каталог: | ||
| + | <code bash> | ||
| + | mkdir nextcloud | ||
| + | </ | ||
| + | |||
| + | Переходи в созданный каталог: | ||
| + | <code bash> | ||
| + | cd nextcloud | ||
| + | </ | ||
| + | |||
| + | Скачиваем Nextcloud: | ||
| + | <code bash> | ||
| + | wget https:// | ||
| + | </ | ||
| + | |||
| + | Распаковываем архив с Nextcloud: | ||
| + | <code bash> | ||
| + | unzip nextcloud-31.0.12.zip | ||
| + | </ | ||
| + | |||
| + | Удаляем скаченный архив latest.zip, он нам больше не понадобиться: | ||
| + | <code bash> | ||
| + | rm nextcloud-31.0.12.zip | ||
| + | </ | ||
| + | |||
| + | Переименовываем директорию nextcloud в public_html: | ||
| + | mv nextcloud public_html | ||
| + | |||
| + | Меняем владельца на www-data: | ||
| + | sudo chown -R www-data: | ||
| + | |||
| + | Создаём конфигурационный файл нового хоста: | ||
| + | sudo nano / | ||
| + | |||
| + | Приводим конфиг к следующему виду: | ||
| + | |||
| + | <code apache> | ||
| + | < | ||
| + | ServerName cloud.kirmolpc.ru | ||
| + | ServerAlias www.cloud.kirmolpc.ru | ||
| + | ServerAdmin admin@localhost | ||
| + | |||
| + | DocumentRoot / | ||
| + | < | ||
| + | AllowOverride All | ||
| + | Require all granted | ||
| + | Redirect permanent / https:// | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Header always set Strict-Transport-Security " | ||
| + | </ | ||
| + | |||
| + | ErrorLog ${APACHE_LOG_DIR}/ | ||
| + | CustomLog ${APACHE_LOG_DIR}/ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Включаем хост следующей командой: | ||
| + | <code bash> | ||
| + | sudo a2ensite nextcloud | ||
| + | </ | ||
| + | |||
| + | Активируем дополнительные модули Apache: | ||
| + | <code bash> | ||
| + | sudo a2enmod rewrite headers env dir mime | ||
| + | </ | ||
| + | |||
| + | Перезапускаем Apache: | ||
| + | <code bash> | ||
| + | sudo systemctl restart apache2 | ||
| + | </ | ||
| + | |||
| + | Проверяем загрузку модулей Apache: | ||
| + | <code bash> | ||
| + | sudo apache2ctl -M | ||
| + | </ | ||
| + | |||
| + | ===== Установка Certbot SSL-сертификата ===== | ||
| + | |||
| + | Устанавливаем Certbot: | ||
| + | <code bash> | ||
| + | sudo apt install certbot python3-certbot-apache | ||
| + | </ | ||
| + | |||
| + | Устанавливаем SSL-на наш домен: | ||
| + | <code bash> | ||
| + | sudo certbot --apache | ||
| + | </ | ||
| + | |||
| + | Отредактируем файл конфигурации ssl: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | Закомментируем или удаляем строчку, | ||
| + | |||
| + | <code apache> | ||
| + | #Redirect permanent / https:// | ||
| + | </ | ||
| + | |||
| + | Перезапускаем Apache: | ||
| + | <code bash> | ||
| + | sudo systemctl restart apache2 | ||
| + | </ | ||
| + | |||
| + | Переходим по нашему домену, | ||
| + | https:// | ||
| + | |||
| + | Редактируем файл **/ | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | Добавляем ваш регион и время обслуживания: | ||
| + | |||
| + | <code php> | ||
| + | 0 => ' | ||
| + | ' | ||
| + | ' | ||
| + | </ | ||
| + | |||
| + | Пример: | ||
| + | <code php> | ||
| + | <?php | ||
| + | $CONFIG = array ( | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | array ( | ||
| + | 0 => ' | ||
| + | 1 => ' | ||
| + | ), | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ); | ||
| + | </ | ||
| + | |||
| + | ===== Настройка Memcache ===== | ||
| + | |||
| + | Устанавливаем Memcache и Модуль PHP Memcache: | ||
| + | <code bash> | ||
| + | sudo apt install memcached php8.4-memcached | ||
| + | </ | ||
| + | |||
| + | Добавляем в файл / | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | <code php> | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | [ ' | ||
| + | ], | ||
| + | </ | ||
| + | |||
| + | ===== Настройка PHP-FPM в связке с Apache ===== | ||
| + | |||
| + | Устанавливаем, | ||
| + | <code bash> | ||
| + | sudo apt install php8.4-fpm | ||
| + | </ | ||
| + | |||
| + | Проверяем, | ||
| + | <code bash> | ||
| + | sudo service php8.4-fpm status php-fpm8.4 -v ls -la / | ||
| + | </ | ||
| + | |||
| + | Запускаем PHP-FPM: | ||
| + | <code bash> | ||
| + | sudo a2enmod mpm_event proxy_fcgi setenvif | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | sudo a2enconf php8.4-fpm | ||
| + | </ | ||
| + | |||
| + | Перезапускаем Apache, чтобы перезапустить все модули и применить новую конфигурацию: | ||
| + | <code bash> | ||
| + | sudo systemctl restart apache2 | ||
| + | </ | ||
| + | |||
| + | Проверяем нашу конфигурацию: | ||
| + | <code bash> | ||
| + | grep -E " | ||
| + | </ | ||
| + | |||
| + | Задаём лимиты: | ||
| + | <code bash> | ||
| + | sudo sed -i ' | ||
| + | </ | ||
| + | |||
| + | Обновляем конфигурацию PHP-FPM: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | С этих: | ||
| + | |||
| + | < | ||
| + | pm.max_children = 5 | ||
| + | pm.start_servers = 2 | ||
| + | pm.min_spare_servers = 1 | ||
| + | pm.max_spare_servers = 3 | ||
| + | </ | ||
| + | |||
| + | На эти: | ||
| + | |||
| + | < | ||
| + | pm.max_children = 64 | ||
| + | pm.start_servers = 16 | ||
| + | pm.min_spare_servers = 16 | ||
| + | pm.max_spare_servers = 32 | ||
| + | </ | ||
| + | |||
| + | Проверяем текущие значения: | ||
| + | <code bash> | ||
| + | grep -E " | ||
| + | </ | ||
| + | |||
| + | Поменяем текущие значения на нужные нам: | ||
| + | <code bash> | ||
| + | sudo sed -i ' | ||
| + | </ | ||
| + | |||
| + | или | ||
| + | |||
| + | <code bash> | ||
| + | sudo sed -i ' | ||
| + | </ | ||
| + | |||
| + | Перезапускаем PHP-FPM, чтобы применились новые значения: | ||
| + | <code bash> | ||
| + | sudo service php8.4-fpm restart | ||
| + | </ | ||
| + | |||
| + | Указываем Apache использования PHP-FPM: | ||
| + | |||
| + | Для HTTP: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | Для HTTPS: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | <code apache> | ||
| + | < | ||
| + | SetHandler " | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Перезапускаем Apache: | ||
| + | <code bash> | ||
| + | sudo systemctl restart apache2 | ||
| + | </ | ||
| + | |||
| + | ===== Активируем OPCache в PHP ===== | ||
| + | |||
| + | Редактируем файл 10-opcache.ini: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | Добавляем следующие параметры: | ||
| + | < | ||
| + | zend_extension=opcache.so | ||
| + | opcache.enable=1 | ||
| + | opcache.enable_cli=1 | ||
| + | opcache.interned_strings_buffer=64 | ||
| + | opcache.max_accelerated_files=12000 | ||
| + | opcache.memory_consumption=512 | ||
| + | opcache.save_comments=1 | ||
| + | opcache.revalidate_freq=60 | ||
| + | opcache.jit=on | ||
| + | opcache.jit = 1255 | ||
| + | opcache.jit_buffer_size = 256M | ||
| + | </ | ||
| + | |||
| + | Перезапускаем PHP-FPM для применения изменений: | ||
| + | <code bash> | ||
| + | sudo service php8.4-fpm restart | ||
| + | </ | ||
| + | |||
| + | ===== Включаем APCu в PHP ===== | ||
| + | |||
| + | Устанавливаем пакет PHP APCu: | ||
| + | <code bash> | ||
| + | sudo apt install php8.4-apcu | ||
| + | </ | ||
| + | |||
| + | Редактируем ini файл | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | Вносим соответствующие значения: | ||
| + | < | ||
| + | extension=apcu.so | ||
| + | apc.enable_cli=1 | ||
| + | </ | ||
| + | |||
| + | Перезапускаем PHP-FPM и Apache: | ||
| + | <code bash> | ||
| + | sudo systemctl restart php8.4-fpm | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | sudo systemctl restart apache2 | ||
| + | </ | ||
| + | |||
| + | Настраиваем Nextcloud на использование APCu для кэширования: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | <code php> | ||
| + | ' | ||
| + | </ | ||
| + | |||
| + | ===== Установка и настройка Redis Cache ===== | ||
| + | |||
| + | Установим Redis Server и расширение Redis php: | ||
| + | <code bash> | ||
| + | sudo apt install redis-server php8.4-redis | ||
| + | </ | ||
| + | |||
| + | Запускаем и активируем Redis service: | ||
| + | <code bash> | ||
| + | sudo systemctl start redis-server | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo systemctl enable redis-server | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo systemctl status redis-server | ||
| + | </ | ||
| + | |||
| + | Сконфигурируем Redis на использование Unix Socket, редактируем файл redis.conf: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | port 0 | ||
| + | unixsocket / | ||
| + | unixsocketperm 770 | ||
| + | </ | ||
| + | |||
| + | Добавляем пользователя **www-data** в группу **redis**: | ||
| + | <code bash> | ||
| + | sudo usermod -aG redis www-data | ||
| + | </ | ||
| + | |||
| + | Настроим Nextcloud для использования Redis для блокировки файлов, | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | <code php> | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ], | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | [ ' | ||
| + | ], | ||
| + | </ | ||
| + | |||
| + | Пример: | ||
| + | <code php> | ||
| + | <?php | ||
| + | $CONFIG = array ( | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | array ( | ||
| + | 0 => ' | ||
| + | 1 => ' | ||
| + | ), | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ], | ||
| + | |||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | [ ' | ||
| + | ], | ||
| + | |||
| + | ); | ||
| + | </ | ||
| + | |||
| + | Активируем Redis сессию для блокировки в PHP, в файле **php.ini**: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | Находим раздел **[Session]** и добавляем следующие строки: | ||
| + | < | ||
| + | redis.session.locking_enabled=1 | ||
| + | redis.session.lock_retries=-1 | ||
| + | redis.session.lock_wait_time=10000 | ||
| + | </ | ||
| + | |||
| + | Пример: | ||
| + | < | ||
| + | [Session] | ||
| + | ; Handler used to store/ | ||
| + | ; https:// | ||
| + | session.save_handler = files | ||
| + | redis.session.locking_enabled=1 | ||
| + | redis.session.lock_retries=-1 | ||
| + | redis.session.lock_wait_time=10000 | ||
| + | </ | ||
| + | |||
| + | Перезапускаем Redis, PHP-FPM и Apache: | ||
| + | <code bash> | ||
| + | sudo systemctl restart redis-server | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo systemctl restart php8.4-fpm | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo systemctl restart apache2 | ||
| + | </ | ||
| + | |||
| + | ===== Включение функции красивых ссылок Pretty URL’s ===== | ||
| + | |||
| + | Редактируем файл **/ | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | Добавляем следующию строчку: | ||
| + | < | ||
| + | ' | ||
| + | </ | ||
| + | |||
| + | Обновляем файл .htaccess для правильной переадресации ссылок: | ||
| + | <code bash> | ||
| + | sudo -u www-data php --define apc.enable_cli=1 / | ||
| + | </ | ||
| + | |||
| + | ===== Парочка команд ===== | ||
| + | <code bash> | ||
| + | sudo -u www-data php / | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo -u www-data php / | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo -u www-data php / | ||
| + | </ | ||
| + | |||
| + | ===== Настройка Cron ===== | ||
| + | |||
| + | Устанавливаем Cron: | ||
| + | <code bash> | ||
| + | sudo apt install cron | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | sudo crontab -u www-data -e | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | */5 * * * * php -f / | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo -u www-data php / | ||
| + | </ | ||
| + | <code bash> | ||
| + | sudo -u www-data php / | ||
| + | </ | ||
