Свое облако ownCloud

Софт / 6 января 2016
/ 1000

Совершенно неожиданно для одного проекта назрела необходимость, можно даже сказать "аварийная необходимость", создать собственное хранилище. Возможностей FTP для них оказалось недостаточно, поэтому пришлось искать другие решения. Впрочем долго искать не пришлось, ownCloud находится сразу. Еще бы – возможности вполне и вполне, устанавливается без проблем и полюс ко всему бесплатен. Я не стал разворачивать его на своем сервере с остальными сайтами, т.к. ему требуется Apache а я использую Nginx.

О том как создать сервер на Onapp или на hoster.by я совсем недавно писал, можно сделать сервер на Digitalocean, на сегодняшний день это не проблема. Конфигурацию сервера я сделал такую:

Посмотрим, на сколько пользователей ее хватит. 

Устанавливаем Apache

Запускаем сервер, входим в консоль, обновляемся:

sudo apt-get update && sudo apt-get upgrade

Устанавливаем все необходимое:

sudo apt-get install apache2 php5 php5-common php5-gd php5-intl php5-mcrypt php5-cli php5-ldap php5-sqlite curl libcurl3 libcurl4-openssl-dev php5-curl php-apc php5-mysql ffmpeg

Устанавливаем MySQL

apt-get install mysql-client mysql-server

Настраиваем доступ. На все вопросы кроме «Change the root password» отвечаем Y.

mysql_secure_installation

Входим в MySQL

mysql -u root -p

Создаем базу

CREATE DATABASE ВАША_БАЗА;
CREATE USER ВАШ_USER@localhost;
SET PASSWORD FOR ВАШ_USER@localhost= PASSWORD("ПАРОЛЬ");
GRANT ALL PRIVILEGES ON ВАША_БАЗА.* TO ВАШ_USER@localhost IDENTIFIED BY 'ПАРОЛЬ';
FLUSH PRIVILEGES;

Выходим

exit

Редактируем etc/php5/apache2/php.ini
Меняем

mysql.default_socket =

на

mysql.default_socket=/var/run/mysqld/mysqld.sock

Устанавливаем

mysql.cache_size = 4000
memory_limit = 1024M
post_max_size = 1024M
upload_max_filesize = 1024M

Сохраняем и выходим.

Перезапускам apache:

service apache2 restart

SSL

ownCloud настоятельно требует https, поэтому сразу настраиваем SSL.

Идем в папку

cd /etc/ssl

Создаем ключ:

openssl req -new -x509 -days 30 -keyout server.key -out server.pem

На вопрос Enter PEM pass phrase придумываем пароль.
На все остальные вопросы кроме Common Name (eg, YOUR name) отвечаем как хотим. На вопрос Common Name (eg, YOUR name) отвечаем доменным именем сайта. Например cloud.by.

Чтобы пользоваться ключом нужно знать пароль который мы придумали. Чтобы нам постоянно на задавали этот вопрос выполним:

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

Назначим права:

sudo cp server.pem /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/server.key

Активируем mod_ssl

sudo a2enmod ssl

Включим по умолчанию:

sudo a2ensite default-ssl

Отредактируем /etc/apache2/sites-enabled/default-ssl. После SSLEngine on добавим

SSLProtocol all -SSLv2

настраиваем сертификаты:

SSLCertificateFile /etc/ssl/certs/server.pem
SSLCertificateKeyFile /etc/ssl/private/server.key

Сохраняем, перезагружаем

sudo service apache2 restart

Настраиваем домен

Копируем файл для домена cloud.by

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/cloud.by.conf

Откываем файл /etc/apache2/sites-available/cloud.by.conf

Удаляем 2 строки

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

И вмеесто них вставляем это:

ServerAdmin admin@cloud.by
ServerName cloud.by
DocumentRoot /var/www/cloud.by

Если у вас есть сертификаты для этого домена прописывайте из вместо наших.

SSLCertificateFile /etc/ssl/certs/2_cloud.obs.by.crt
SSLCertificateKeyFile /etc/ssl/private/cloud.obs.by.key

Сохраняем.

Установим ownCloud

cd /var/www/

На сегодня последняя версия 8.2.2. Уточнить текущую версию модно здесь https://owncloud.org/install/

wget https://download.owncloud.org/community/owncloud-8.2.2.tar.bz2
tar -xvf owncloud-8.2.2.tar.bz2

Переименовываем папку /var/www/owncloud в cloud.by. Устанавливаем права:

sudo chown -R www-data:www-data /var/www/cloud.by/

Еще пока не все. Включаем mod_headers

a2enmod headers

В файл хоста /etc/apache2/sites-available/cloud.by.conf после DocumentRoot /var/www/cloud.by вставляем

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>

Сохраняем и выполним

sudo a2ensite cloud.by.conf

Перезагружаем

service apache2 restart

Далее заходим уже наконец в наше облако https://ВАШ_cloud.by (по вашему адресу разумеется). Если вы сделали все верно, то увидите такую штуку:

Придумаем логин и пароль для админа.
Нажимаем "Хранилище и база данных", и выбираем MySQL/MariaDB, заполняем

Жмем "Завершить установку" и вот оно

Если надо, скачиваем себе клиентов для винды или андроида и т.д.

Осталось проверить наш сервер. Справа вверху клацаем по своему логину и заходим в Администрирование. Вверху получем сообщение

Устанавливаем Memcache

apt-get install memcached 
apt-get install php5-memcache
apt-get install php5-memcached

проверяем

ps ax | grep memcached

видим что-тот вроде 19563 ? Sl 0:02 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1

Открываем конфиг owncloud – /var/www/cloud.by/config/config.php
и перед

'datadirectory' => '/var/www/cloud.by/data',

вставляем это:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
 array('localhost', 11211),
 array('server1.example.com', 11211),
 array('server2.example.com', 11211),
 ),

Сохраняем и перезагружаем сервер полностью.

Идем опять на страницу https://cloud.by/index.php/settings/admin и видим

Все. Дальше играемся сами.

comments powered by HyperComments