Доброго времени суток, уважаемые читатели. Сегодня тема статьи: "Установка OwnCloud на CentOS 7". Наверное нет человека, который бы не знал, и не пользовался облачными хранилищами Облако Mail.Ru, Яндекс.Диск, Google Диск, Dropbox, iCloud… В Linux есть возможность создать собственное хранилище, аналог вышеперечисленных, при помощи веб-приложения OwnCloud.

OwnCloud – это бесплатное веб-приложение, для удалённого доступа, хранения, и обмена файлами. Использовать OwnCloud можно, как через браузер, так и через приложения для любой платформы, ссылки на которые можно найти на официальном сайте: https://owncloud.org/

  • OwnCloud – это веб-приложение, поэтому для его работы необходимы такие же компоненты, как и для обычного веб-сайта.
  • Нужен веб-сервер, север баз данных, и php.
  • В статье будут использованы nginx+php-fpm , и mariadb.
  • Во внутреннем репозитории CentOS 7, находятся старые версии необходимых пакетов, поэтому будем подключать дополнительные репозитории.

Для примера, в конфигурации я буду использовать домен oblako.ru, Вы измените на свой соответственно.



Если в системе не подключен репозиторий epel-release, то подключаем его:

# yum install epel-release


Установка nginx

  • Для установки nginx, подключаем репозиторий nginx.
  • Создаём в директории /etc/yum.repos.d/ файл nginx.repo с таким содержанием:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
  • После создания файла, запускаем установку веб-сервера nginx.
# yum install nginx
  • Запускаем nginx, и добавляем его в автозагрузку.
# systemctl start nginx
# systemctl enable nginx

Установка и настройка mariadb

  • Для установки mariadb, подключаем репозиторий mariadb.
  • Переходим на официальный сайт, и делаем выбор конфига, под свою операционную систему: http://downloads.mariadb.org/mariadb/repositories/
подключение репозитория mariadb
  • Заходим в директорию /etc/yum.repos.d/, и создаём файл mariadb.repo, в который вносим конфиг взятый с сайта mariadb.
  • Теперь можно производить установку mariadb.
# yum install MariaDB-server MariaDB-client 
  • Запускаем mariadb, и добавляем в автозагрузку.
# systemctl start mariadb
# systemctl enable mariadb
  • Далее, запускаем скрипт первоначальной установки сервера баз данных.
# /usr/bin/mysql_secure_installation

--- При первом вопросе, жмём «Enter», так как пароля для root, ещё не создано.

--- На приглашение создать пароль для root, отвечаем Y.

--- После создания и подтверждения пароля, на все оставшиеся вопросы отвечаем Y.

  • Теперь можно создать базу данных для OwnCloud.
  • Заходим под рутом.
# mysql -u root –p
  • И выполняем нужные команды.
MariaDB [(none)]> create database oblako;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON oblako.* TO
'oblako'@'localhost' IDENTIFIED BY '123';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;

--- Первой командой - мы создаём базу данных oblako.

--- Второй командой - мы создаём пользователя для базы oblako. Пользователь oblako с паролем 123.

--- Третьей командой - мы перезагружаем привилегии.

Вы создаёте базу данных, и пользователя с паролем, на своё усмотрение.

  • На этом, с сервером баз данных мы закончили.

Установка и настройка PHP

  • Чтобы установить PHP-7.3, нам нужно подключить сторонний репозиторий Remi.
# rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • Далее, нам нужно установить дополнительные пакеты для пакетного менеджера yum.
# yum install yum-utils
  • Активируем remi-php73.
# yum-config-manager --enable remi-php73
  • Теперь можно устанавливать необходимые пакеты.
# yum install php php-fpm php-pdo php-zip php-dom php-mcrypt php-intl php-gd php-mysql php-mbstring
  • После установки, нужно произвести настройку php-fpm.
  • Нам нужен конфигурационный файл /etc/php-fpm.d/www.conf.
Находим и закомментируем строчку:

;listen = 127.0.0.1:9000

Под этой строчкой добавляем:

listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

Находим строчки:

user = apache
group = apache

apache меняем на nginx

Находим и раскомментируем строчки:

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
  • Меняем права для временной папки
# chown root:nginx /var/lib/php/session
# chown -R nginx:nginx /var/lib/php/session/
  • Запускаем php-fpm, и добавляем в автозагрузку.
# systemctl enable php-fpm
# systemctl start php-fpm

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

  • Теперь переходим к настройке брандмауэра.
  • Находим конфигурационный файл /etc/sysconfig/iptables, и открываем порты 80 и 443.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
  • Перезапускаем iptables.
# systemctl restart iptables

Настройка nginx

  • Пришло время настройки веб-сервера.
  • Идём в директорию /etc/nginx/conf.d, и создаём файл oblako.ru.conf.
  • В Вашем случае название может быть другим. Если у Вас есть доменное имя, то используйте его.
  • При использовании облака в локальной сети, в принципе разницы нет.
  • Добавляем конфигурацию в созданный файл.

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

server {
        listen 443 ssl;
        server_name oblako.ru;

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

        root /var/www/html/owncloud;
		access_log  /var/log/nginx/oblako_access.log;
        error_log  /var/log/nginx/oblako_error.log;

        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:/var/run/php-fpm/php-fpm.sock;
        }

        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires modified +30d;
                access_log off;
        }
		
		error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root           html;
  }
}

Создание самоподписанного сертификата

  • Далее нам нужно создать удостоверяющие файлы, так как мы будем использовать защищённое подключение.
# openssl req -new -x509 -days 1461 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key -subj "/C=RU/ST=Moscow/L=Moscow/O=Org/OU=OU/CN=oblako.ru"

Вы можете внести изменения в команду, указав свои регистрационные данные.

  • Задаём нужные права для созданных файлов.
# chmod 600 /etc/nginx/cert.pem
# chmod 600 /etc/nginx/cert.key
  • Перезапускаем веб-сервер.
# systemctl restart nginx

Установка OwnCloud

  • Осталось только скачать и установить само облако.
  • Для этого понадобятся дополнительные утилиты.
  • Если они не установлены, то устанавливаем.
# yum install wget
# yum install unzip zip
  • Заходим в директорию /var/www/html.
# cd /var/www/html
  • Идём на официальный сайт, и выбираем подходящий тип для скачивания: https://download.owncloud.org/download/community/
  • Скачиваем последнюю версию owncloud.
# wget https://download.owncloud.org/download/community/owncloud-latest.zip
  • Разархивируем архив.
# unzip owncloud-10.3.0.zip
  • После этого, сам архив можно удалить.
  • Настраиваем необходимые права.
# chown nginx:nginx -R /var/www/html/owncloud
  • Создаём директорию для данных, вне директории owncloud.
# mkdir -p /data
  • Задаём нужные права.
# chown nginx:nginx /data
  • Настройки на стороне операционной системы закончены. Осталось произвести установку owncloud.
  • Открываем браузер, и переходим по адресу:
https://ip-адрес или доменое имя
  • Выйдет сообщение о самоподписанном сертификате.
  • Так и должно быть, потому что мы используем самоподписанный сертификат.
предупреждение о самоподписанном сертификате
  • Соглашаемся с предупреждением.
  • Открывается веб-интерфейс owncloud.
веб интерфейс owncloud
  • Создаём учётную запись администратора, меняем расположение каталога с данными на /data, и заполняем настройки подключения к базе данных.
  • После всего перечисленного жмём на «Завершить установку».
внесение данных для установки owncloud
  • Начинается установка owncloud.
  • По завершении, появляется форма входа.
форма входа owncloud
  • Введя данные учётной записи администратора, созданной на предыдущем этапе, можно войти в аккаунт администратора.
  • На этом установка собственного облака owncloud завершена. Веб-приложение установлено и готово к работе.

Сегодня мы рассмотрели тему: "Установка OwnCloud на CentOS 7". Подготовили сервер и произвели установку облака. Смотрите также видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Установка OwnCloud на CentOS 7":