ownCloud установка · 9 min read · Jan 22, 2026

Ваш облако, ваши данные, ваш способ! - ownCloud 4.0 на CentOS 6.2 + nginx + PostgreSQL

Ваш облако, ваши данные, ваш способ! - ownCloud 4.0 на CentOS 6.2 + nginx + PostgreSQL

Этот документ описывает, как установить и настроить ownCloud от “сообщества ownCloud” на веб-сервере на базе CentOS 6.2 из tar-пакета на nginx и php-fpm с базой данных PostgreSQL в качестве бэкенда. Для других дистрибутивов могут быть незначительные изменения в процедурах установки программного обеспечения. Этот гид поможет не только установить продукт, но и понять, почему определенные моменты выполняются именно так (это особенно полезно для пользователей с небольшими или отсутствующими знаниями, которые, как и я некоторое время назад, только начали использовать Linux).

Что такое ownCloud?

Это инструмент для совместного использования файлов / контактов / календарей группы или компании, который, с моей точки зрения, сочетает в себе лучшее из Dropbox и GroupOffice (за исключением интеграции электронной почты на данный момент) и не так загроможден или тяжел, как Alfresco или Sharepoint.

Ссылки на несколько разделов разработчика:

Я не гарантирую, что это сработает для вас, так как позже могут произойти изменения в программном обеспечении, как в предварительных, так и в основных, которые могут сломать или каким-либо образом запретить процедуры, упомянутые в этом руководстве, завершиться успешно.
P.S. Все добавленные ошибки — мои. Используйте комментарии или заходите в IRC.

Предварительная заметка

В этом руководстве мы используем:

  • Установочный носитель Centos 6.2
  • Имя хоста: owncloud.example.com
  • IP-адрес: 192.168.1.100
  • Адрес маршрутизатора: 192.168.1.1
  • Маска подсети: 255.255.255.0
  • Предположим (представим), что сервер подключен к общедоступному интернету
  • Мы используем наш компьютер для удаленного администрирования сервера через ssh (putty на windows), даже если сервер находится у вас под рукой или работает как виртуальная машина под вашей основной операционной системой
  • GNU vim в качестве нашего основного текстового редактора. Но не стесняйтесь использовать любой другой по вашему выбору

Требования

Нам потребуется рабочая чистая (минимальная) установка Centos 6.2 (x86 или x86_64 не имеет значения), я лично использую версию x86_64 и настоятельно рекомендую вам сделать то же самое.

Первые шаги

Войдите в консоль сервера как root. Вы будете на приглашении [root@owncloud ~]#.

Я предпочитаю определенные настройки, которые совершенно необязательны, но вы можете найти их полезными позже. Я настраиваю свой терминал, чтобы выводить информацию в цвете с датой, временем, именем сервера и текущей папкой в приглашении. Также показываю историю команд с датой/временем. Я также увеличиваю значения по умолчанию для размера истории.

Для этого выполните:

vi ~/.bash_profile

Добавьте упомянутые строки после директивы export PATH. В случае, если вы не знаете, нажав “i”, вы входите в режим вставки, “ESC” выходит из него. Vi — это vi :)

#Размер истории для хранения 50.000 команд и увеличение размера файла в десять раз
export HISTSIZE=50000
export HISTFILESIZE=500000
#Показать историю с датой, например: "24.05.2012 - 14:28:56"
export HISTTIMEFORMAT="%d.%m.%Y - %H:%M:%S "
#Автоцветной вывод команды "ls"
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
#Установить приглашение для отображения, например: "Чт 24 мая 2012  14:28:56 owncloud.example.com от root @ ~]"
#и раскрасить дату, время и местоположение по-разному. Установите все текстовые значения по умолчанию.
PS1="\e[1;37m\][\e[1;36m\] \d \D{%Y}  \e[1;31m\]\t \e[1;37m\] \H от \u @ \W] \033[00m\]"

Сохраните и выйдите из файла. Снова, если вы не знаете, вне режима вставки вы можете ввести “:wq” и нажать enter, чтобы сохранить и выйти, или просто нажать “ZZ”, чтобы сделать то же самое. Чтобы повторно войти в терминал и применить изменения, выполните:

exit

Сетевые настройки

Если вы не настроили статический IP-адрес во время установки, скажем, у вас маршрутизатор с поддержкой DHCP, вам нужно сделать это сейчас, в противном случае переходите к следующему шагу.

vi /etc/sysconfig/network-scripts/ifcfg-eth0

Измените или добавьте только упомянутые строки.

BOOTPROTO="none"
NETWORK="192.168.1.0"
NETMASK="255.255.255.0"
IPADDR="192.168.1.100"
GATEWAY="192.168.1.1"

Сохраните и выйдите. Затем перезапустите сеть:

service network restart

Проверьте, что сеть перенастроена, выполнив:

ifconfig

Теперь вы должны иметь возможность подключиться к серверу по ssh на 192.168.1.100 как root. Но не делайте этого пока, сначала завершите следующий шаг.

Защита сервера

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

  • Перенастроим ssh-сервер, чтобы он не разрешал вход root и изменим стандартный порт 22 на что-то другое, менее распространенное, т.е. 60606,
  • Настроим iptables для разрешения входящих соединений на новом порту,
  • Добавим нашего первого системного пользователя, чтобы войти с ним через ssh.
  1. Защита удаленного входа Если вы еще не вошли с консоли на сервер (я имею в виду локальную консоль, а не ssh), войдите как root, затем выполните:

    vi /etc/ssh/sshd_config

    На строке тринадцатой неизмененного файла по умолчанию (если вы снова интересуетесь, введите “:set number” и нажмите enter вне режима вставки, чтобы получить номера строк) есть директива Port 22. Дублируйте ее, измените номер порта на 60606 и раскомментируйте.
    Затем найдите (вне режима вставки нажмите “/“ и введите фразу, которую вы ищете) директиву PermitRootLogin yes, дублируйте ее снова и измените ее значение на no и раскомментируйте ее также, затем сохраните файл. О, и это “:noh”, чтобы выключить подсветку.
    Перезапустите sshd после этого:

    service sshd restart
  2. Настройка iptables Сначала проверьте уже существующий iptables:

    iptables -L -v --line-numbers

    В стандартной установке на позиции ‘4’ будет директива для принятия новых tcp-соединений на стандартном ssh-порту, нам нужно от нее избавиться, поэтому выполните:

    iptables -D INPUT 4

    Теперь нам нужно разрешить соединения на порт 60606 вместо этого. Выполните:

    iptables -I INPUT 4 -p tcp -d 192.168.1.100 --dport 60606 -j ACCEPT

    Наконец, чтобы сохранить текущее состояние iptables, выполните:

    service iptables save   
    service iptables restart
  3. Добавление первого пользователя Все сейчас хорошо, кроме одной вещи, мы заблокировали себе доступ по ssh, поскольку root не разрешен, и других системных пользователей еще нет. Время исправить это:

    useradd -c "пользователь системы ownCloud" -m -n cloudadmin

    Установите пароль для этого пользователя:

    passwd cloudadmin

    Готово. Вы могли бы установить пароль для пользователя в первой команде, но таким образом значение пароля будет видно во время ввода в терминальном окне и также будет сохранено в .bash_history пользователя root, что нежелательно.
    Теперь вы можете войти через ssh, выполнив следующую команду в вашем терминальном окне на локальном компьютере:

    ssh [email protected] -p60606

Предварительные шаги

Установка программного обеспечения в большинстве случаев довольно проста, и мы могли бы “проверить” большинство из этого при первоначальной установке, но я предпочитаю делать все вручную.
Я намеренно разделяю установку на разделы.

  1. Вход как суперпользователь В этот самый момент вы должны быть на приглашении консоли как пользователь cloudadmin. Чтобы получить права root, выполните:

    su -
  2. Репозитории программного обеспечения Для использования необходимого программного обеспечения требуются два репозитория.

    Сначала EPEL, выполните:

    rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-6.noarch.rpm

    И нет, i386 — это не ошибка, это одинаково для 32-битных и 64-битных систем.
    Затем Remi, выполните:

    rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi   
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

    Теперь проверьте оба репозитория epel и remi, и в случае, если их там нет, установите enabled=1, выполнив:

    vi /etc/yum.repos.d/epel.repo   
    vi /etc/yum.repos.d/remi.repo

    Наконец, обновите вашу систему. Даже свежая установка CentOS может потребовать обновления сначала. Выполните:

    yum update -y
  3. Точное время Хорошо быть синхронизированным с остальным миром, выполните:

    yum install ntp   
    service ntpd start   
    chkconfig ntpd on   
    ntpd
  4. Некоторые другие инструменты Чтобы облегчить себе жизнь, я использую vim вместо vi, htop вместо top, elinks для быстрого тестирования вещей из терминала и mc, как хороший и не только двухпанельный файловый менеджер, wget необходим для загрузки файлов, а man необходим, когда вы хотите прочитать что угодно. Выполните:

    yum install vim htop elinks mc wget man -y

Настройка ownCloud

  1. Программные требования Пакет php, выполните:

    yum install php-fpm php-gd php-ldap php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-shout php-snmp php-soap php-tidy php-pgsql

    Отредактируйте php.ini, выполните:

    vim /etc/php.ini

    Существует четыре директивы для изменения,
    первая должна быть на строке 736, директива post_max_size
    вторая на строке 848, директива cgi.fix_pathinfo
    третья на строке 885, директива upload_max_filesize
    последняя на строке 956, директива date.timezone, измените ее в соответствии с местоположением вашего сервера.

    [...]
    post_max_size = 64M
    [...]
    cgi.fix_pathinfo = 0
    [...]
    upload_max_filesize = 64M
    [...]
    date.timezone = "Europe/Prague"
    [...]

    В случае, если вы не знаете, как, вы можете найти имя вашего часового пояса, выполнив:

    cat /etc/sysconfig/clock

    Далее настройте php-fpm для использования unix-сокета вместо tcp-стека, выполните:

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

    С 12-й строки сделайте это:

    ;listen = 127.0.0.1:9000
    listen = /var/run/php-fpm/php-fpm.sock

    Запустите php-fpm:

    chkconfig php-fpm on   
    service php-fpm start
  2. Бэкенд - PostgreSQL Чтобы установить и настроить его, выполните:

    yum install postgresql postgresql-libs postgresql-server   
    service postgresql initdb   
    service postgresql start   
    chkconfig postgresql on

    Войдите в postgres как системный пользователь postgres, создайте пользователя базы данных, базу данных и предоставьте привилегии

    su - -c "psql" postgres   
    CREATE USER clouduser WITH PASSWORD 'userpass';   
    CREATE DATABASE clouddb OWNER clouduser ENCODING 'UTF8';   
    GRANT ALL PRIVILEGES ON DATABASE clouddb TO clouduser;   
    \q

    Измените файл конфигурации postgresql, чтобы разрешить вход с паролем:

    vim /var/lib/pgsql/data/pg_hba.conf
  • Найдите
    # IPv4 local connections:   
    host all all 127.0.0.1/32 ident
  • И измените его на
    # IPv4 local connections:   
    host all all 127.0.0.1/32 password
    Теперь перезапустите базу данных:
    service postgresql restart
  1. Веб-сервер nginx Установите, настройте на автоматический запуск и затем остановите его:

    yum install nginx   
    service nginx start   
    chkconfig nginx on   
    service nginx stop

    Подготовьте файл конфигурации для сайта owncloud:

    vim /etc/nginx/conf.d/owncloud.conf
    # перенаправить http на https.
    server {
    listen 80;
    server_name owncloud.example.com;
    rewrite ^ https://$server_name$request_uri? permanent;  # принудить https
    }
    # owncloud (ssl/tls)
    server {
    listen 443 ssl;
    ssl_certificate /etc/nginx/certs/server.crt;
    ssl_certificate_key /etc/nginx/certs/server.key;
    server_name owncloud.example.com;
    root /var/www/owncloud;
    index index.php;
    client_max_body_size 64M; # установить максимальный размер загрузки
    # запретить прямой доступ
    location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
     deny all;
    }
    # порядок попыток по умолчанию
    location / {
     try_files $uri $uri/ @webdav;
    }
    # owncloud WebDAV
    location @webdav {
     fastcgi_split_path_info ^(.+\.php)(/.*)$;
     fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param HTTPS on;
     include fastcgi_params;
    }
    # включить php
    location ~ \.php$ {
     fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param HTTPS on;
     include fastcgi_params;
    }
    }

    Теперь давайте создадим сертификаты для сервера, ответьте на вопросы в приглашении в соответствии с вашими настройками:

    mkdir -p /etc/nginx/certs/   
    cd /etc/nginx/certs/   
    openssl genrsa -des3 -out server.key 1024   
    openssl req -new -key server.key -out server.csr   
    cp server.key server.key.orig   
    openssl rsa -in server.key.orig -out server.key   
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

    Перезагрузите nginx, чтобы включить новую конфигурацию:

    service nginx reload
  2. Файлы и директории ownCloud Установка ownCloud состоит из загрузки и распаковки архива с некоторыми изменениями на стороне сервера, поэтому выполните:

    cd /tmp   
    wget http://download2.owncloud.org/releases/owncloud-4.0.0.tar.bz2   
    tar xjf owncloud-4.0.0.tar.bz2   
    mv owncloud /var/www/   
    mkdir -p /var/www/owncloud/data   
    chmod 770 /var/www/owncloud/data   
    chown -R root:apache /var/www/owncloud

    И снова, apache как группа в последней команде не является ошибкой. php-fpm по умолчанию запускается как пользователь apache

  3. Доступ к веб-сайту Откройте порт 443, чтобы иметь возможность получить доступ к веб-сайту, выполните:

    iptables -I INPUT 4 -p tcp -d 192.168.1.100 --dport 443 -j ACCEPT   
    service iptables save   
    service iptables restart

Тестовый запуск

Перейдите на https://owncloud.example.com через ваш любимый браузер и завершите процедуру установки.

Выберите имя пользователя администратора и пароль, выберите PostgreSQL в качестве бэкенда базы данных и введите соответствующие значения в настройках подключения к базе данных.

Наслаждайтесь.

Устранение неполадок

Файлы журналов расположены следующим образом:

/var/www/owncloud/data/owncloud.log
/var/log/php-fpm/www-error.log
/var/log/nginx/access.log
/var/log/nginx/error.log

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.