В данном руководстве я расскажу о том, как установить и настроить собственный сервер Nextcloud на Arch Linux с использованием Nginx, MariaDB и PHP7. Nextcloud является открытым и самоуправляемым аналогом Dropbox. С помощью этой платформы вы сможете синхронизировать файлы между вашим компьютером, планшетом и мобильным устройством.
Содержание статьи
- 1 Предварительные требования
- 2 Установите сервер Nextcloud на операционной системе Arch Linux.
- 3 Настройте базу данных и аккаунт пользователя в MariaDB.
- 4 Активируйте бинарное логирование в MariaDB на третьем шаге.
- 5 Создание конфигурационного файла Nginx для Nextcloud
- 6 Установите и активируйте модули PHP.
- 7 Инсталлятор для веб-версии Nextcloud
- 8 Получите бесплатный сертификат SSL от Let’s Encrypt.
- 9 Автоматическое обновление TLS-сертификата.
- 10 Оптимизация OPcache для улучшения производительности.
- 11 Повышение предела памяти в PHP.
- 12 Конфигурация кэша Redis для NextCloud.
- 13 Заключение
Предварительные требования
В данном учебном материале предполагается, что у вас уже установлен стек LEMP (Linux, Nginx, MariaDB/MySQL, PHP) на Arch Linux. Если вы этого еще не сделали, пожалуйста, ознакомьтесь с простым руководством, приведенным ниже.
- Настройте окружение LEMP на Arch Linux, установив Nginx, MariaDB и PHP7.
После того как вы установите стек LEMP, вернитесь к этим инструкциям. Если у вас сервер на Arch Linux, подключитесь к нему с помощью ssh. Вы также можете использовать свой локальный компьютер с установленным Arch Linux.
Установите сервер Nextcloud на операционной системе Arch Linux.
Загрузите zip-архив NextCloud на свой сервер. Актуальная версия — NextCloud 16.0.1, однако вам может потребоваться обновить номер версии. Чтобы узнать последнюю доступную версию, посетите сайт https://nextcloud.com/install и кликните по кнопке загрузки. Также можно воспользоваться командой wget в терминале для загрузки zip-архива.
sudo pacman - S wget wget https://download.nextcloud.com/server/releases/nextcloud-16.0.1.zip
Установите программу unzip и распакуйте её в корневую директорию веб-сервера Nginx ( /usr/share/nginx/ ).
sudo pacman - S unzip sudo unzip nextcloud-16.0.1.zip - d /usr/share/nginx/
После этого установите пользователя Nginx (http) в качестве владельца каталога nextcloud.
sudo chown http:http /usr/share/nginx/nextcloud/ - R
Настройте базу данных и аккаунт пользователя в MariaDB.
Подключитесь к серверу баз данных MariaDB, используя следующую команду:
sudo mysql - u root
После этого создайте базу данных для Nextcloud. В данном руководстве база данных будет называться nextcloud, но вы можете выбрать любое другое название по своему усмотрению.
create database nextcloud;
Создайте нового пользователя в базе данных. Вы можете выбрать любое имя для него. Не забудьте заменить your-password на желаемый вами пароль.
create user nextclouduser@localhost аутентифицирован по паролю 'your-password';
Дайте этому пользователю полный доступ к базе данных nextcloud.
grant all privileges on nextcloudКонечно! Пожалуйста, предоставьте текст, который нужно перефразировать.nextclouduser@localhost аутентифицирован по паролю 'your-password';
Обновите права доступа в таблице и выйдите.
flush privileges; exit;
Активируйте бинарное логирование в MariaDB на третьем шаге.
Измените основной файл конфигурации сервера MariaDB.
sudo nano /etc/my. cnf. d/server. cnf
Вставьте две следующие строки под секцией [mysqld].
log-bin = mysql-bin binlog_format = mixed
Установите формат бинарного лога на mixed. Сохраните изменения и закройте файл, затем перезапустите службу MariaDB.
sudo systemctl restart mariadb
Создание конфигурационного файла Nginx для Nextcloud
Сначала создайте папку conf.d для размещения отдельных конфигурационных файлов Nginx.
sudo mkdir /etc/nginx/conf.d
После этого следует создать файл конфигурации для Nextcloud.
sudo nano /etc/nginx/conf.d/nextcloud.conf
Сохраните следующий текст в документ.
server < listen 80; server_name nextcloud. your-domain.comДобавьте заголовки для повышения уровня безопасности:
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
Укажите путь к корневой директории вашей установки
root/usr/share/nginx/nextcloud/; место = /robots. txt< allow all; log_not_found off; access_log off; >Данные два правила предназначены исключительно для приложения user_webfinger. # Удалите комментарий, если планируете использовать данное приложение. #rewrite ^/.well-known/host-meta /public.php? service=host-meta последний; #rewrite ^/.well-known/host-meta. json /public.php? service=host-meta-json # последний; location = /.well-known/carddav< return 301 $scheme://$host/remote.php/dav; >расположение = /.well-known/caldav< return 301 $scheme://$host/remote.php/dav; >location ~ /.well-known/acme-challenge < allow all; >Установите лимит на размер загружаемого файла client_max_body_size 512M; fastcgi_buffers 64 4K; # Отключите gzip для предотвращения удаления заголовка ETag gzip off; # Раскомментируйте, если ваш сервер собран с модулем ngx_pagespeed # Данный модуль в настоящее время не поддерживается. #pagespeed off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location /< rewrite ^ /index.php$uri; >location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ < deny all; >location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) < deny all; >location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) < include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; #Избегайте двойной отправки заголовков безопасности fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; >location ~ ^/(?:updater|ocs-provider)(?:$|/) < try_files $uri/ =404; index index.php; >Включение заголовка управления кэшированием для файлов js и css # Убедитесь, что он располагается НИЖЕ блока PHP location~
Вместо текста, выделенного красным, укажите свои актуальные данные. Если вы настраиваете Nextcloud на своем домашнем ПК, укажите свой локальный IP-адрес в качестве имени сервера, например:
server_name 192.168.1.105
После этого внесите изменения в файл /etc/nginx/nginx.conf.
sudo nano /etc/nginx/nginx.conf
Вставьте следующую строку в раздел http, чтобы подключить отдельные файлы конфигурации для Nginx.
include /etc/nginx/conf.d/*.conf;
http < включить /etc/nginx/conf.d/*.conf; include mime. types; default_type application/octet-stream; .
Сохраните файл и закройте его. После этого выполните проверку настроек Nginx.
sudo nginx - t
После успешного прохождения теста выполните перезагрузку Nginx, чтобы новые настройки начали действовать.
sudo systemctl reload nginx
Установите и активируйте модули PHP.
Для корректного функционирования Nextcloud необходимо, чтобы модули mysql, gd, zip, intl и curl были активированы. Модуль mysql был установлен в предыдущем уроке, посвященном LEMP. Теперь выполните установку модулей gd и intl, используя следующую команду:
sudo pacman - S php-gd php-intl
После этого внесите изменения в файл php. ini.
sudo nano /etc/php/php. ini
Ищите следующие шесть строк (они находятся примерно на девятистах строках). Уберите точки с запятой, чтобы активировать эти шесть модулей.
;extension=mysqli ;extension=pdo_mysql ;extension=gd ;extension=intl ;extension=zip ;extension=curl
Вы можете использовать следующие 6 команд для активации этих расширений на Arch Linux, избегая необходимости открывать файл и искать 6 строк. С помощью текстового редактора sed можно осуществить поиск и замену текста без необходимости открывать файл.
sudo sed - i 's/;extension=mysqli/extension=mysqli/g' /etc/php/php. ini sudo sed - i 's/;extension=pdo_mysql/extension=pdo_mysql/g' /etc/php/php. ini sudo sed - i 's/;extension=gd/extension=gd/g' /etc/php/php. ini sudo sed - i 's/;extension=zip/extension=zip/g' /etc/php/php. ini sudo sed - i 's/;extension=curl/extension=curl/g' /etc/php/php. ini sudo sed - i 's/;extension=intl/extension=intl/g' /etc/php/php. ini
Сохраните файл и закройте его. После этого перезапустите процесс php-fpm, чтобы изменения начали действовать.
sudo systemctl reload php-fpm
Инсталлятор для веб-версии Nextcloud
Теперь в строке адреса вашего браузера введите
nextcloud. your-domain.com
Чтобы открыть веб-инсталлятор Nextcloud, укажите свой частный IP-адрес, например, 192.168.1.105, если вы устанавливаете на локальном компьютере с Arch Linux. После этого вы увидите следующее.

Для начала вам потребуется создать административную учетную запись и установить связь сервиса NextCloud с базой данных MariaDB. Укажите имя пользователя базы данных, пароль и название базы данных, которые были созданы ранее. После выполнения этих шагов ваш сервер Nextcloud будет полностью готов к использованию.

Если вы работаете с удалённым сервером на базе Arch Linux, настоятельно советую установить сертификат SSL/TLS до завершения установки в веб-браузере, чтобы избежать рисков злонамеренного прослушивания.
Получите бесплатный сертификат SSL от Let’s Encrypt.
Этот шаг нужен на удалённом сервере, чтобы гарантировать безопасность ваших учетных данных Nextcloud и избежать их попадания в руки злоумышленников. Если вы устанавливаете Nextcloud на личном компьютере, этот шаг можно пропустить.
Для начала необходимо установить клиент certbot и плагин для Nginx, которые находятся в репозитории сообщества Arch Linux.
sudo pacman - S certbot certbot-nginx
Далее примените плагин Nginx для получения и установки сертификата на веб-сервер Nginx, как показано ниже.
sudo certbot --nginx --agree-tos --redirect --staple-ocsp --email ваш-адрес-электронной-почты - d nextcloud. ваш-домен.com
Предполагаю, что для доступа к веб-интерфейсу ownCloud вы используете доменное имя, например, nextcloud. ваш-домен.com. Перед выполнением указанной команды необходимо настроить DNS, чтобы ваше доменное имя указывало на IP-адрес вашего сервера.
После установки сертификата выполните перезагрузку Nginx.
sudo systemctl reload nginx
Автоматическое обновление TLS-сертификата.
Рекомендуется настроить автоматическое обновление TLS сертификата Let’s Encrypt. Это можно сделать через cron-задачу. Сначала необходимо установить cronie на Arch Linux.
sudo pacman - S cronie
Запустите службу cron.
sudo systemctl start cronie
Активируйте автоматический запуск при старте системы.
sudo systemctl enable cronie
Далее отредактируйте crontab для пользователя root.
sudo crontab - e
Включите в файл строку, которая будет пытаться обновить ваш сертификат ежедневно.
@daily certbot renew --quiet
Сохраните изменения и закройте документ.
Оптимизация OPcache для улучшения производительности.
OPcache способен повысить эффективность работы PHP-приложений, сохраняя предварительно скомпилированный байт-код в кэше. В Arch Linux OPcache не активирован по умолчанию. Для его включения необходимо отредактировать файл php. ini.
sudo
sudo systemctl restart php-fpm
Повышение предела памяти в PHP.
Стандартное ограничение памяти в PHP равно 128 МБ. Для оптимальной работы NextCloud рекомендуется установить этот лимит на уровне 512 МБ. Чтобы изменить лимит памяти PHP, нужно внести изменения в файл php. ini.
sudo nano /etc/php/php. ini
Установите следующую строку. (строка 404)
memory_limit = 128M
Поменяйте значение.
memory_limit = 512M
Сохраните файл и закройте его. Также у вас есть возможность воспользоваться следующей командой, чтобы изменить значение без необходимости вручную открывать файл.
sudo sed - i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/php. ini
После этого перезапустите службу PHP-FPM, чтобы изменения начали действовать.
sudo systemctl reload php-fpm
Конфигурация кэша Redis для NextCloud.
Если вы перейдете на страницу настройки ->В обзоре вашего NextCloud вы можете заметить следующее предупреждение:
Кеш памяти не настроен. Чтобы повысить вашу производительность, пожалуйста, настройте кеш памяти, если он доступен.
Мы активируем кэширование памяти для NextCloud с помощью Redis. Для этого выполните следующую команду для установки сервера Redis из репозитория Arch Linux.
sudo pacman - S redis
Версию можно узнать, используя:
redis-server - v
Сервер Redis v=5.0.6 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=862f233732e771fd
sudo systemctl start redis
Для активации автозапуска при загрузке воспользуйтесь следующей командой.
sudo systemctl enable redis
Чтобы настроить Redis в качестве кеша для NextCloud, нужно установить PHP-расширение, которое обеспечит взаимодействие с Redis.
sudo pacman - S php-redis
Теперь необходимо активировать расширения PHP igbinary и redis. Для этого перейдите в папку /etc/php/conf.d/, откройте файл igbinary. ini и уберите точку с запятой, чтобы включить расширение igbinary.
extension=igbinary. so
Откройте файл redis. ini и уберите точку с запятой, чтобы активировать расширение redis.
extension=redis
После этого выполните перезапуск PHP-FPM.
sudo systemctl restart php-fpm
Убедитесь, что расширение активировано.
php --ri redis
redis Redis Support => включено Redis Version => 5.0.2 Доступные сериализаторы => php, json, igbinary Доступная компрессия => lzf Директива => Локальное значение => Основное значение redis. arrays. algorithm => нет значения => нет значения redis. arrays. auth => нет значения => нет значения redis. arrays. autorehash => 0 => 0 redis. arrays. connecttimeout => 0 => 0 redis. arrays. distributor => нет значения => нет значения redis. arrays. functions => нет значения => нет значения redis. arrays. hosts => нет значения => нет значения redis. arrays. index => 0 => 0 redis. arrays. lazyconnect => 0 => 0 redis. arrays. names => нет значения => нет значения redis. arrays. pconnect => 0 => 0 redis. arrays. previous => нет значения => нет значения redis. arrays. readtimeout => 0 => 0 redis. arrays. retryinterval => 0 => 0 redis. arrays. consistent => 0 => 0 redis. clusters. cache_slots => 0 => 0 redis. clusters. auth => нет значения => нет значения redis. clusters. persistent => 0 => 0 redis. clusters. read_timeout => 0 => 0 redis. clusters. seeds => нет значения => нет значения redis. clusters. timeout => 0 => 0 redis. pconnect. pooling_enabled => 1 => 1 redis. pconnect. connection_limit => 0 => 0 redis. session. locking_enabled => 0 => 0 redis. session. lock_expire => 0 => 0 redis. session. lock_retries => 10 => 10 redis. session. lock_wait_time => 2000 => 2000
Расширение Redis активировано. Теперь необходимо внести изменения в файл конфигурации NextCloud.
sudo nano /usr/share/nginx/nextcloud/config/config.php
Вставьте указанные строки перед символом );.
'memcache. distributed' => '\OC\Memcache\Redis', 'memcache. local' => '\OC\Memcache\Redis', 'memcache. locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ),

Сохраните изменения в файле и закройте его. После этого перезапустите Nginx и PHP-FPM.
sudo systemctl restart nginx php-fpm
Теперь вернитесь на страницу администрирования NextCloud, и уведомление о кэшировании памяти должно пропасть.
Заключение
Поздравляем! Вы успешно установили персональное облачное хранилище NextCloud на Arch Linux с использованием Nginx, MariaDB и PHP7. Если вам понравилась эта статья, не забудьте подписаться на нашу бесплатную рассылку или следить за нами в Google+, Twitter, а также поставить лайк нашей странице в Facebook. Благодарим вас за посещение!

