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.
Ссылки на несколько разделов разработчика:
- Домашняя страница продукта: http://owncloud.org/
- IRC: http://webchat.freenode.net/?channels=owncloud
- Поддержка: http://owncloud.org/support/
Я не гарантирую, что это сработает для вас, так как позже могут произойти изменения в программном обеспечении, как в предварительных, так и в основных, которые могут сломать или каким-либо образом запретить процедуры, упомянутые в этом руководстве, завершиться успешно.
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.
Защита удаленного входа Если вы еще не вошли с консоли на сервер (я имею в виду локальную консоль, а не ssh), войдите как root, затем выполните:
vi /etc/ssh/sshd_configНа строке тринадцатой неизмененного файла по умолчанию (если вы снова интересуетесь, введите “:set number” и нажмите enter вне режима вставки, чтобы получить номера строк) есть директива Port 22. Дублируйте ее, измените номер порта на 60606 и раскомментируйте.
Затем найдите (вне режима вставки нажмите “/“ и введите фразу, которую вы ищете) директиву PermitRootLogin yes, дублируйте ее снова и измените ее значение на no и раскомментируйте ее также, затем сохраните файл. О, и это “:noh”, чтобы выключить подсветку.
Перезапустите sshd после этого:service sshd restartНастройка 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Добавление первого пользователя Все сейчас хорошо, кроме одной вещи, мы заблокировали себе доступ по ssh, поскольку root не разрешен, и других системных пользователей еще нет. Время исправить это:
useradd -c "пользователь системы ownCloud" -m -n cloudadminУстановите пароль для этого пользователя:
passwd cloudadminГотово. Вы могли бы установить пароль для пользователя в первой команде, но таким образом значение пароля будет видно во время ввода в терминальном окне и также будет сохранено в .bash_history пользователя root, что нежелательно.
Теперь вы можете войти через ssh, выполнив следующую команду в вашем терминальном окне на локальном компьютере:ssh [email protected] -p60606
Предварительные шаги
Установка программного обеспечения в большинстве случаев довольно проста, и мы могли бы “проверить” большинство из этого при первоначальной установке, но я предпочитаю делать все вручную.
Я намеренно разделяю установку на разделы.
Вход как суперпользователь В этот самый момент вы должны быть на приглашении консоли как пользователь cloudadmin. Чтобы получить права root, выполните:
su -Репозитории программного обеспечения Для использования необходимого программного обеспечения требуются два репозитория.
Сначала 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Точное время Хорошо быть синхронизированным с остальным миром, выполните:
yum install ntp service ntpd start chkconfig ntpd on ntpdНекоторые другие инструменты Чтобы облегчить себе жизнь, я использую vim вместо vi, htop вместо top, elinks для быстрого тестирования вещей из терминала и mc, как хороший и не только двухпанельный файловый менеджер, wget необходим для загрузки файлов, а man необходим, когда вы хотите прочитать что угодно. Выполните:
yum install vim htop elinks mc wget man -y
Настройка ownCloud
Программные требования Пакет 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Бэкенд - 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 passwordservice postgresql restart
Веб-сервер 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Файлы и директории 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
Доступ к веб-сайту Откройте порт 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
Get new posts in your inbox
No spam. Unsubscribe anytime.