Установка и начальная настройка собственного хранилища 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 — тоже надо увеличивать.
