Установка и начальная настройка собственного хранилища owncloud домашнем Linux в виртуальной среде.
На моем домашнем компе установлен Linux и развернут KVM, про установку KVM на сервере я оставлял заметку. У меня тоже самое, только на домашнем компе и управляется гуишным virt-manager.
В этой виртуальной среде я и развернул owncloud.
OwnCloud
Сам owncloud разворачивается довольно просто из пакетов, как об этом и говорит официальная документация
Я устанавливал на CentOS 6. Подключаю EPEL и OwnCloud репозитории:
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh epel-release-6-8.noarch.rpm
# cd /etc/yum.repos.d/
# wget http://download.opensuse.org/repositories/isv:ownCloud:community/CentOS_CentOS-6/isv:ownCloud:community.repo
# yum update
# yum install owncloud
По умолчнию OwnCloud хранит данные в SQLlite, но умеет и в MySQL. Ставлю.
# yum install mysql-server
# service mysqld start
# mysqladmin -u root password 'password'
Apache и MySQL запускать при старте
# chkconfig mysqld on
# chkconfig httpd on
В CentOS 6 по умолчанию firewall включен и открыт только 22 порт. В /etc/sysconfig/iptables
нужно открыть еще 80 порт.
Конфиг apache для owncloud — /etc/httpd/conf.d/owncloud.conf
:
<Directory /var/www/html/owncloud> Options Indexes FollowSymLinks MultiViews AllowOverride All Order deny,allow Allow from 192.168.122.1 Allow from 192.168.1.10 Deny from all </Directory> <Virtualhost *:80 default> ServerAdmin DocumentRoot /var/www/html/owncloud ServerName cloud.jnotes.ru ErrorLog /var/log/httpd/cloud-error_log CustomLog /var/log/httpd/cloud-access_log common </Virtualhost>
Запускаю apache, захожу на http://192.168.122.10 и заканчиваю установку — все просто несколько полей, несколько кликов.
Nginx
Для того, что бы можно было попасть на мой owncloud с внешки нужно:
- Пробросить 80 и 443 порт на роутере на мой комп
- Поставить Nginx и настроить на нем проксирование
- Сгенерировать для Nginx сертификат
С пробросом портов проблем нет. С установкой nginx в общем, тоже все понятно:
# apt-get update
# apt-get nginx install
Рихтую конфиг для nginx — /etc/nginx/nginx.conf:
user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { client_max_body_size 1024m; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*.conf; }
Проксирование на owncloud — /etc/nginx/sites-available/owncloud.conf
:
server { listen 80; server_name cloud.jnotes.ru; # https redirect rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; server_name cloud.jnotes.ru; location /owncloud { rewrite ^.* / permanent; } location / { proxy_pass http://192.168.122.10:80; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
Надо отметить, что у меня статический IP и в зоне jnotes.ru указано где искать cloud.jnotes.ru. Однако, думаю не сложно провернуть подобное и с no-ip.org, например.
Осталось сгенерировать ключи.
# mkdir /etc/nginx/ssl && cd /etc/nginx/ssl
Генерирую приватный ключ
# openssl genrsa -des3 -out server.key 2048
Создаю подписывающий сертификат
# openssl req -new -key server.key -out server.csr
В процессе отвечаю на вопросы. На вопрос «Common Name (eg, your name or your server’s hostname)» отвечаю jnotes.ru
Удаляю passphrase с ключа
# cd server.key server.key.orig
# openssl rsa -in server.orig -out server.key
И наконец создаю подисанный сертификат
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Лучше выдать этим файлам права только на чтение 400.
Стартую Nginx — все должно работать.
# service nginx start
Есть нюанс. Если зайти в настройки OwnCloud, то он ругается на то, что работает по http. Ну не знает он про nginx.
Кстати, для увеличения максимального размера загружаемого файла нужно править /etc/php.ini
на предмет post_max_size и upload_max_filesize. Кроме того, надо обратить внимание на директиву client_max_body_size — тоже надо увеличивать.