Установка Nextcloud
apt update && apt upgrade -y
# ставим PHP 8.2
# для работы Nextcloud также нужно доустановить модули
apt install php php-fpm php-common php-zip php-xml php-intl php-gd php-mysql php-mbstring php-curl php-imagick libapache2-mod-fcgid php-gmp php-bcmath libmagickcore-6.q16-6-extra -y
# включаем PHP
a2enmod php8.2
# проверяем установленную версию PHP
php -v
# проверяем работоспособность
systemctl status apache2
# перезагрузим apache
systemctl restart apache2
разрешаем в Apache модули для fcgi и php-fpm
/usr/sbin/a2enconf php8.2-fpm
и /usr/sbin/a2enmod proxy_fcgi setenvif
редактируем nano /etc/php/8.2/fpm/php.ini
memory_limit = 512M
opcache.enable_cli=1
opcache.interned_strings_buffer=32
opcache.revalidate_freq=1
перезапускаем Apache и php-fpm
systemctl restart apache2 php8.2-fpm
# ставим MySQL
apt install mariadb-server -y
# выполним скрипт для повышения безопасности только что установленной MySQL:
mysql_secure_installation
Рекомендуется ответить следующим образом:
- Enter current password for root (впервые пустой, жмём Enter)
- Set root password? [Y/n] — Нажмите Y и задайте сложный пароль
- Remove anonymous users? [Y/n] — Y
- Disallow root login remotely? [Y/n] — Y (запретить удалённый вход под root)
- Remove test database and access to it? [Y/n] — Y
- Reload privilege tables now? [Y/n] — Y
# подключаемся к MySQL:
mysql -u root -p
# создаем базу данных для NextCloud
CREATE DATABASE nextcloud;
# создаем нового пользователя для только что созданной БД
CREATE USER nextcloud_user1@localhost IDENTIFIED BY 'password';
# предоставляем привилегии созданному пользователю для доступа к БД:
GRANT ALL ON nextcloud.* TO nextcloud_user1@localhost;
# перезагружаем таблицы с привилегиями и применяем внесенные изменения, а затем выходим
FLUSH PRIVILEGES;
EXIT;
# скачиваем NextCloud на сервер
cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-31.0.6.zip
# распаковываем архив:
unzip nextcloud-31.0.6.zip
# установим разрешения на папку Nextcloud:
chown -R www-data:www-data /srv/www/nextcloud
chmod -R 755 /srv/www/nextcloud
# настройка веб-сервера Apache
# создаём новый файл конфигурации виртуального хоста для Nextcloud
nano /etc/apache2/sites-available/nextcloud.conf
# Внутри созданного файла размещаем следующий конфиг:
<VirtualHost *:80>
DocumentRoot /var/www/nextcloud/
ServerName your-domain.com
<Directory /var/www/nextcloud/>
Options FollowSymLinks MultiViews
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
#После чего деактивируйте конфигурацию дефолтного сайта Apache:
a2dissite 000-default.conf
# активируем только что созданный виртуальный хост с помощью следующей команды:
a2ensite nextcloud.conf
# включаем модуль mod_rewrite:
a2enmod rewrite
3 последние команды выполнил через webmin - командная оболочка (shell)
systemctl restart apache2
# увеличиваем значение параметра memory_limit в файле php.ini - (на 7 страниц вниз)
nano /etc/php/8.2/apache2/php.ini
# параметр memory_limit меняем на 512M.
# перезапускаем веб-сервер Apache, чтобы все изменения вступили в силу:
systemctl restart apache2
Для входа из интернета прописываем в файле /srv/www/nextcloud/config/config.php
0 => '192.168.0.2',
1 => 'I6.54.326.426:8080',
# входим - настраиваем - пользуемся.
Завершение настройки в веб-интерфейсе
- Откройте в браузере:http://your_domain_or_IP
- Должна отобразиться страница начальной настройки Nextcloud:
- Укажите имя администратора (логин), пароль (придумайте надёжный).
- Укажите каталог данных (по умолчанию /srv/www/nextcloud/data).
- Нажмите Установить (или Finish Setup). Nextcloud автоматически настроит базу и файлы для начала работы.
Настройка Nextcloud:
Оптимизируем работу базы данных
sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Редактируем конфигурационный файл nextcloud
nano /srv/www/nextcloud/config/config.php
в самый конец файла, перед «);», добавляем
'default_phone_region' => 'RU',
Настройка кэширования
Устанавливаем memcached и php-apcu
apt install memcached php-memcached php-apcu
разрешаем автозапуск
systemctl enable memcached
запускаем сервис кэширования
systemctl start memcached
перезапускаем Apache
systemctl restart apache2
Редактируем конфигурационный файл nextcloud
nano /srv/www/nextcloud/config/config.php
в самый конец файла, перед «);», добавляем
'filelocking.enabled' => true,
'memcache.locking' => '\\OC\\Memcache\\Memcached',
'memcache.local' => '\OC\Memcache\Memcached',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => [
[ '127.0.0.1', 11211 ],
],
Настраиваем выполнение фоновых заданий
Открываем в браузере Nextcloud, справа вверху жмём на круглую иконку пользователя, в открывшемся меню жмём на «Настройки», далее - «Основные параметры», в разделе «Фоновые задания» выбираем Cron.
Если Cron не установлен, устанавливаем его
apt install cron
Создаем новое задание от пользователя www-data
crontab -e -u www-data
В открывшемся редакторе текста, внизу добавляем
* * * * * /usr/bin/php /var/www/nextcloud/cron.php
Настраиваем загрузку файлов большого объёма
Открываем конфигурационный файл PHP
nano /etc/php/8.2/fpm/php.ini
находим эти опции и изменяем их значения
output_buffering = 0
max_execution_time = 3600
max_input_time = 3600
post_max_size = 256G
upload_max_filesize = 256G
перезапускаем Apache
systemctl restart apache2
задаем новое значение фрагментации загружаемых файлов
sudo -u www-data php /var/www/nextcloud/occ config:app:set files max_chunk_size --value 536870912
Перезагружаем сервер:
systemctl reboot
Устранение некоторых ошибок в Nextcloud:
1. «PHP OPcache не настроен правильно» Для обеспечения лучшей производительности рекомендуется задать в файле php.ini следующие параметры настроек:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=256
opcache.save_comments=1
opcache.revalidate_freq=1
2. Убираем предупреждение о кешировании.
Не настроен механизм кэширования. Для повышения производительности рекомендуется настроить memcache. За дополнительными сведениями обратитесь к документации.
Поэтому прикручиваем систему кэширования, состоящую из локальной системы кэширования на основе APCu и системы распределённого кеширования Redis.
Ставим APCu
sudo apt install php-apcu -y
В файле php.ini включаем apcu
sudo nano /etc/php/8.2/cli/php.ini
вставив в начало
apc.enable_cli=1
Редактируем файл config/config.php в директории установки Nextсloud
sudo nano /srv/www/nextcloud/config/config.php
и вставляем следующую строку перед закрывающем скобкой «);»
'memcache.local' => '\OC\Memcache\APCu',
Ставим Redis.
sudo apt install redis-server php-redis -y
Проверяем, что он запустился
ps ax | grep redis
root@srvi:/srv/www/nextcloud/config# ps ax | grep redis
729768 ? Ssl 0:00 /usr/bin/redis-server 127.0.0.1:6379
730216 pts/1 S+ 0:00 grep redis
В тот же файл config/config.php
sudo nano /usr/share/nginx/nextcloud/config/config.php
вставьте следующее опять перед закрывающей скобкой « ); »
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' =>
array (
'host' => '127.0.0.1',
'port' => 6379,
),
'memcache.locking' => '\OC\Memcache\Redis',
Сохраняем файл. Перезапускаем apache2.