Установка ownCloud под CentOS 6.5

Рассмотрена установка ownCloud с SSL на CentOS 6.5. В качестве веб-сервера используем надёжный и высокоэффективный Nginx.

Пакеты в репозиториях EPEL и CentOS являются устаревшими, в то время как, nginx, postgresql и owncloud требуют установки новых пакетов.

Требования для работы owncloud

PostgreSQL >= 9.0, при том, что в EPEL версия 8.8, PHP минимальной версии 5.3.3 (можно установить более свежую версию PHP), также все новые пакеты требуют наличия последней стабильной версии nginx.

В начале нам понадобится удалить все библиотеки mysql, для этого запустим yum со следующими параметрами:

yum -y 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.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -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-y 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" postgres
CREATE 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.ini
# найдём строку post_max_size и просвоим следующее значение:
post_max_size = 2G
# в строке cgi.fix_pathinfo присвоим значение 0
cgi.fix_pathinfo = 0
# в строке upload_max_filesize присвоим значение 2G
upload_max_filesize = 2G
# в строке date.timezone зададим нам часовой пояс
date.timezone = "наш часовой пояс"

Отредактируем файл конфигурации php-fpm, для того чтобы использовать сокет tcp вместо unix

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 / необходимый пароль.

# TYPE DATABASE USER ADDRESS METHOD 
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
lost all all 127.0.0.1/32 password
# IPv6 local connections:
lost all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident 

Перезапустим базы данных postgresql

service postgresql-9.3 restart

Создадим пустую папку, где будут находится наши документы SSL

cd /etc/nginx
mkdir -p cert

Виртуальные хосты apache создаются следующим образом:

cd conf.d
vi cloud.conf
upstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name 10.4.0.10; # заменить на ваше имя домена или Ip адрес интернет сервера ip
return 301 https://$server_name$request_uri; # enforce https
}
server {
listen 443 ssl;
server_name 10.4.0.10; # replace with your domain name or internal server 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; # set max upload size
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 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://serverinternalip, потому что мы указали виртуальный хост nginx "virtual host" ранее.

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

Перезапустим PostgreSQL в последний раз и запустим nginx с новой конфигурацией:

service postgresql-9.3 restart
service nginx start

В конце откроем браузер и в адресной строке введём наш IP-адрес. Логин и пароль можно задать любыми, по вашему желанию.

1 Комментарий

  • Агу-агу

    написал Агу-агу

    Вторник, 19 Декабрь 2017 19:25

    Как мне кажется, сейчас уже есть более свежие решения.

Оставить комментарий

Ваше мнение очень важно для нас! Обязательно выскажите Ваши мысли, пожелания и критику! Не стесняйтесь задавать вопросы. Скорее всего, ответ появится уже через 2-3 дня. Спасибо заранее.

Другие материалы в этой категории:

Go to top