Настройка Nextcloud на Arch Linux с использованием Nginx, MariaDB и PHP7 в 2019 году

В данном руководстве я расскажу о том, как установить и настроить собственный сервер Nextcloud на Arch Linux с использованием Nginx, MariaDB и PHP7. Nextcloud является открытым и самоуправляемым аналогом Dropbox. С помощью этой платформы вы сможете синхронизировать файлы между вашим компьютером, планшетом и мобильным устройством.

Предварительные требования

В данном учебном материале предполагается, что у вас уже установлен стек 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.

Читайте также:  Как в Linux терминале подключиться к сетевой папке?

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~

  • .(?< try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200"; # Добавьте заголовки для обеспечения безопасности (предназначено # иметь дубликаты заголовков выше) 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; # Опционально: Не регистрировать доступ к активам access_log off; >location ~
  • .(?< try_files $uri /index.php$uri$is_args$args; # Опционально: Не регистрировать доступ к другим активам access_log off; >>

    Вместо текста, выделенного красным, укажите свои актуальные данные. Если вы настраиваете 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. После этого вы увидите следующее.

    arch-linux-nextcloud

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

    nextcloud-server-on-arch-linux

    Если вы работаете с удалённым сервером на базе 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, ),

    Кэширование памяти Redis в Nextcloud на Arch Linux.

    Сохраните изменения в файле и закройте его. После этого перезапустите Nginx и PHP-FPM.

    sudo systemctl restart nginx php-fpm

    Теперь вернитесь на страницу администрирования NextCloud, и уведомление о кэшировании памяти должно пропасть.

    Заключение

    Поздравляем! Вы успешно установили персональное облачное хранилище NextCloud на Arch Linux с использованием Nginx, MariaDB и PHP7. Если вам понравилась эта статья, не забудьте подписаться на нашу бесплатную рассылку или следить за нами в Google+, Twitter, а также поставить лайк нашей странице в Facebook. Благодарим вас за посещение!