Установка · 4 min read · Jan 23, 2026
Установка ownCloud с SSL и Nginx на CentOS 6.5
Установка ownCloud с SSL и Nginx на CentOS 6.5
Версия: 3.0
Автор: Аарон
CentOS обновил много пакетов, и пост, который я написал год назад, больше не работает в обновленной CentOS 6.5.
Я провел исследование, и похоже, что это будет первый учебник в 2014 году о том, как установить owncloud в centos с nginx, postgresql и ssl. Вы не найдете установку CentOS и owncloud с nginx в наши дни, потому что большинство людей не знают, как решить простые проблемы.
Мой сервер был затронут, и это причина, по которой я решил написать этот пост сегодня.
Пакеты в репозиториях EPEL и CentOS устарели, в то время как nginx, postgresql и owncloud требуют немного более новые пакеты. Вы просто останетесь на странице входа, не получая доступа к вашим файлам, и будете чесать затылок, спрашивая себя, что только что произошло. Логи не покажут вам, откуда возникает проблема, ни сам owncloud.
Требования к owncloud
PostgreSQL >= 9.0, но в EPEL 8.8, он требует php 5.3.3 как минимум, но с этой версией он не работает, также все эти новые пакеты будут требовать последнюю стабильную версию nginx.
Первое, что мы должны сделать, это удалить все библиотеки mysql.
yum remove mysql* mysql-server mysql-devel mysql-libsКак обычно, мы установим сторонние репозитории, такие как epel, remi и новый: последний postgresql
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpmrpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpmrpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpmОтредактируйте репозиторий epel и убедитесь, что вверху стоит enabled=1
vi /etc/yum.repos.d/epel.repoСделайте то же самое с репозиторием remi, но убедитесь, что включена версия php 5.6,
vi /etc/yum.repos.d/remi.repo

Создайте файл конфигурации репозитория nginx
vi /etc/yum.repos.d/nginx.repoи добавьте:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
Обновите ваш сервер CentOS, чтобы добавить эти сторонние репозитории
yum updateУстановите следующие пакеты, чтобы удовлетворить требования owncloud:
yum install nginx postgresql93 postgresql93-libs postgresql93-server wget php-fpm php-gd php-ldap php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-shout php-snmp php-soap php-tidy php-pgsql php-pdoЗапустите PostgreSQL, временно запустите nginx и добавьте его в службы автозагрузки с помощью chkconfig
service postgresql-9.3 initdb
service postgresql-9.3 start
chkconfig postgresql-9.3 on
service nginx start
chkconfig nginx on
service nginx stopСоздайте нового пользователя и базу данных PostgreSQL.
su - -c "psql" postgresCREATE USER cloud WITH PASSWORD 'userpass';
CREATE DATABASE cloudbase OWNER cloud ENCODING 'UTF8';
GRANT ALL PRIVILEGES ON DATABASE cloudbase TO cloud;
\qПроверьте и запомните ваш часовой пояс
cat /etc/sysconfig/clockОтредактируйте файл конфигурации php
vi /etc/php.inipost_max_size = 2Gcgi.fix_pathinfo = 0upload_max_filesize = 2Gdate.timezone = "your/timezone"Отредактируйте файл конфигурации php-fpm, чтобы использовать tcp вместо unix socket
vi /etc/php-fpm.d/www.confУбедитесь, что listen не указывает на /var/run/php-fpm/php-fpm.sock
listen = 127.0.0.1:9000Запустите службу php-fpm
chkconfig php-fpm on
service php-fpm startОтредактируйте файл конфигурации postgresql, чтобы разрешить вход по паролю:
vi /var/lib/pgsql/9.3/data/pg_hba.confи измените ident на password - обратите внимание на курсор на следующем изображении:

Перезапустите базу данных postgresql service postgresql-9.3 restart
Создайте пустую папку, где мы будем хранить наши SSL сертификаты
cd /etc/nginx
mkdir -p certЕсли вы знакомы с виртуальными хостами apache, то следующий файл, который вам нужно будет создать, это именно он.
cd conf.dvi cloud.confupstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name 10.10.10.110; # замените на ваше доменное имя или внутренний IP сервера
return 301 https://$server_name$request_uri; # принудить https
}
server {
listen 443 ssl;
server_name 10.10.10.110; # замените на ваше доменное имя или внутренний IP сервера
ssl_certificate /etc/nginx/cert/server.crt;
ssl_certificate_key /etc/nginx/cert/server.key;
# Путь к корню вашей установки
root /var/www/owncloud/;
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 / {
# Следующие 2 правила нужны только с webfinger
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 php-handler;
}
# Опционально: установить длинный заголовок EXPIRES для статических ресурсов
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Опционально: Не логировать доступ к ресурсам
access_log off;
}
}
Я загрузил этот файл конфигурации nginx на свой сайт, так что вместо того, чтобы писать его вручную, просто введите wget http://linux.sytes.net/img/nginx1-6.conf.txt и переименуйте его во что-то вроде cloud.conf
Как вы указали в “виртуальном хосте” nginx выше, наш сервер ownCloud будет использовать SSL, так что давайте создадим эти сертификаты, хорошо?
cd ..
cd cert
openssl req -x509 -nodes -sha384 -days 3650 -newkey rsa:4096 -keyout server.key -out server.crt
chmod 600 server.key
chmod 600 server.csrДалее, загрузите, извлеките архив owncloud и установите права для папки owncloud. Обратите внимание, что мы загрузим версию разработки owncloud.
cd /var/www
wget http://download.owncloud.org/community/daily/owncloud-daily-master.tar.bz2
tar xjf owncloud-daily-master.tar.bz2
mkdir -p owncloud/data
chmod 770 owncloud/data
chmod 777 owncloud/config/
chown -R root:apache owncloud
rm -rf owncloud-daily-master.tar.bz2Разрешите входящие tcp соединения на порты вашего сервера: 80 и 443. Если вы или кто-то другой вызовет внутренний IP вашего сервера, он будет перенаправлен на https://yourserverinternalip, потому что вы указали это в “виртуальном хосте” nginx ранее.
iptables -I INPUT 4 -p tcp -d 10.10.10.110 --dport 80 -j ACCEPT
iptables -I INPUT 4 -p tcp -d 10.10.10.110 --dport 443 -j ACCEPTservice iptables save
service iptables restartПерезапустите PostgreSQL в последний раз и запустите nginx с новой конфигурацией:
service postgresql-9.3 restart
service nginx startВот и все, откройте ваш браузер и укажите IP вашего сервера. Выберите любое имя пользователя и пароль, которые вам нравятся.

Get new posts in your inbox
No spam. Unsubscribe anytime.