Установка и настройка OwnCloud на CentOS

Обновлено Обновлено: Опубликовано Опубликовано:

Данная инструкция протестирована для установки OwnCloud на CentOS версий 7 и 8.

Подготовка системы

Синхронизируем время.

Устанавливаем утилиту chrony:

yum install chrony

Запускаем ее службу:

systemctl enable chronyd --now

Выставляем нужный часовой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в данном примере московское время.

Настройка брандмауэра.

Выполняется следующими командами:

firewall-cmd --permanent --add-service=http

firewall-cmd --permanent --add-service=https

firewall-cmd --reload

Отключение SELinux.

Для отключения SELinux вводим две команды:

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

* первая команда отключает SELinux до перезагрузки, вторая — навсегда.
* подробнее об отключении SELinux. Подробнее о настройке SELinux.

Настройка сервера баз данных

В качестве СУБД используем MariaDB.

Устанавливаем:

yum install mariadb-server

Разрешаем автозапуск и стартуем сервис:

systemctl enable mariadb --now

Задаем пароль для суперпользователя mysql:

mysqladmin -u root password

Подключаемся к MariaDB, создаем базу данных и пользователя:

mysql -uroot -p

> CREATE DATABASE owncloud DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

> GRANT ALL PRIVILEGES ON owncloud.* TO owncloud@localhost IDENTIFIED BY 'owncloud';

> \q

* данными командами мы создали базу данных owncloud, затем с таким же названием мы создали пользователя и задали ему пароль owncloud.

Установка и настройка веб-сервера

PHP

Установка на CentOS 7 и 8 немного происходит по-разному. Рассмотрим оба варианта в отдельности.

а) На CentOS 7:

В репозитории CentOS 7 находится PHP версии 5.4. Для Owncloud требуется более новая версия php. Для этого установим репозиторий REMI.

Сначала устанавливаем репозиторий EPEL:

yum install epel-release

... и после — REMI:

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Устанавливаем PHP, PHP-FPM и необходимые для работы owncloud модули:

yum --enablerepo=remi-php72 install php php-fpm php-pdo php-zip php-dom php-intl php-gd php-mysqli php-mbstring php-json php-process

б) На CentOS 8:

В репозитории CentOS 8 есть требуемая версия пакета php. Просто вводим команду:

dnf install php php-fpm php-pdo php-zip php-dom php-intl php-gd php-mysqli php-mbstring php-json php-process

PHP-FPM

Сам пакет php-fpm мы установили на предыдущем шаге. Поэтому на данном этапе необходимо его настроить.

Открываем конфигурационный файл:

vi /etc/php-fpm.d/www.conf

Находим опции listen и listen.owner. Задаем им значения:

listen = /run/php-fpm/www.sock
...
listen.owner = nginx

Разрешаем автозапуск php-fpm и запускаем его:

systemctl enable php-fpm --now

NGINX

Owncloud можно развернуть на NGINX или Apache. В данной инструкции будем использовать первый.

Устанавливаем веб-сервер:

yum install nginx

* подробнее процесс установки описан в инструкции Установка NGINX на CentOS.

Новые версии owncloud работают по https — для правильной работы протокола создаем виртуальный домен и настраиваем его для работы с облачным сервисом в NGINX:

vi /etc/nginx/conf.d/owncloud.dmosk.ru.conf

server {
        listen 80;
        server_name owncloud.dmosk.ru;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl;
        server_name owncloud.dmosk.ru;

        ssl_certificate /etc/nginx/ssl/cert.pem;
        ssl_certificate_key /etc/nginx/ssl/cert.key;

        root /var/www/owncloud;

        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-fpm/www.sock;
        }

        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires modified +30d;
                access_log off;
        }
}

* где dmosk.ru — домен, на котором будет работать сервис; owncloud.dmosk.ru — имя сервера, на котором будет работать owncloud; /etc/nginx/ssl — каталог, в котором будут храниться сертификаты; /var/www/owncloud — каталог с порталом.

Создаем каталог для хранения сертификатов и переходим в него:

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=owncloud.dmosk.ru/CN=owncloud"

* данная команда создаст сертификат на 4 года для URL owncloud.dmosk.ru или owncloud.
* в данном примере мы, всего лишь, создали самоподписанный сертификат, который не будет приниматься браузером и нужно будет пропускать предупреждение. Данный метод подходит для тестирования, а для продуктивной среды стоит купить сертификат или получить его бесплатно от Let's Encrypt.

Проверяем конфигурацию nginx, разрешаем его автозапуск и перезапускаем сервис:

nginx -t

systemctl enable nginx --now

Установка Owncloud

Для загрузки и распаковки архива на нужны следующие пакеты:

yum install wget bzip2

Заходим на страницу owncloud и копируем ссылку на скачивание последней версии программы:

Ссылка для скачивания owncloud

Переходим во временную папку и скачиваем исходник для установки:

cd /tmp

wget https://download.owncloud.org/community/owncloud-10.4.1.tar.bz2

Распаковываем скачанный архив:

tar -xvjf owncloud-*.tar.bz2 -C /var/www/

Задаем права доступа:

chown -R apache:apache /var/www/owncloud

Открываем браузер и переходим по адресу https://owncloud.dmosk.ru, где owncloud.dmosk.ru — адрес облачного сервиса. Так как мы используем самоподписанный сертификат, браузер выдаст предупреждение безопасности — игнорируем его и переходим на страницу.

* так как мы настроили виртуальный домен, важно обратиться к серверу, именно, по имени. Таким образом, настроенный узел (в моем случае, owncloud.dmosk.ru) должен разрешаться в DNS или внесен в локальный файл hosts.

Заполняем поля с пользователем и паролем для создания учетной записи администратора. Кликаем по Хранилище и база данных - переключаемся на MySQL/MariaDB:

Ссылка для скачивания owncloud

В качестве базы данных выбираем MySQL/MariaDB и вводим в качестве логина, пароля и базы owncloud.

Завершаем установку. После входим в панель программы под созданным пользователем.

Предупреждения безопасности и установки

После входа в owncloud под администратором, переходим в настройки для пользователя:

Переходим в настройки

В разделе «Администрирование» переходим в Основные:

Переходим в основные настройки

В разделе «Предупреждения безопасности и установки» мы можем увидеть список проблем:

Список предупреждений

Рассмотрим процесс решения некоторых из них.

1. PHP был установлен неверно. Запрос getenv("PATH") возвращает пустые результаты

Открываем файл php.ini. При нашей установке, это:

vi /etc/php-fpm.d/www.conf

Снимаем комментарий с параметра PATH:

env[PATH] = /usr/local/bin:/usr/bin:/bin

Перезапускаем php-fpm:

systemctl restart php-fpm

2. Мы рекомендуем включить системный cron, так как любой другой планировщик может иметь недоработки в производительности и надёжности

Необходимо убедиться, что в системе установлен пакет php-process (мы его устанавливали ранее).

Создаем задание в cron от пользователя apache:

crontab -e -u apache

*/15 * * * * php -f /var/www/owncloud/cron.php

* где /var/www/owncloud — путь, по которому находится owncloud.

Переходим в каталог с порталом и запускаем команду от пользователя apache:

cd /var/www/owncloud

sudo -u www-data php occ background:cron

Мы должны увидеть:

Set mode for background jobs to 'cron'

Работа с пользователями из UNIX-Shell

В состав owncloud входит php-скрипт occ, с помощью которого можно управлять сервисом из командной строки Linux.

Добавление пользователя

Создать нового пользователя можно командой:

sudo -u apache php /var/www/owncloud/occ user:add admin

* где admin — имя учетной записи.

Сброс пароля

При необходимости сбросить пароль пользователя, можно воспользоваться командой:

sudo -u apache php /var/www/owncloud/occ user:resetpassword admin

* где admin — учетная запись пользователя, чей пароль хотим сбросить.

Автоматическая чистка удаленных файлов

При удалении файлов, они не удаляются из системы, а перемещаются в корзину — каталог files_trashbin соответственного пользователя. Со временем, это приведет к израсходованию дискового пространства на сервере.

Чтобы выполнить чистку всех каталогов пользователей, необходимо выполнить команду:

sudo -u apache php /var/www/owncloud/occ trashbin:cleanup

В результате будут удалены все файлы из каталогов files_trashbin всех пользователей.

Также мы можем указать период, за который можно считать удаленные файлы устаревшими и удалить только их. Для этого открываем конфигурационный файл owncloud:

vi /var/www/owncloud/config/config.php

* где /var/www/owncloud — каталог, в который мы развернули наш портал.

Добавляем опцию:

  ...
  'trashbin_retention_obligation' => '25,31',
  ...

* данной настройкой мы указываем, что owncloud должен хранить файлы и каталоги в корзине не менее 25 дней. Удалять можно по прошествии 30 дней.

Теперь мы можем выполнить команду:

sudo -u apache php /var/www/owncloud/occ trashbin:expire

Она удалит только файлы, которые являются устаревшими в соответствии с нашей настройкой.

# CentOS # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет