Pull to refresh

Опыт установки ownCloud 6 на Debian 7 wheezy

Reading time 8 min
Views 84K
image

Здравствуйте, хабравчане! Сегодня я хотел бы рассказать о персональном облачном хранилище ownCloud и его установке.

Для нас уже стало обыденным использование таких сервисов как Dropbox, Google Drive, SkyDrive или даже Облако Mail.Ru, мы пользуемся их услугами каждый день не обращая внимание на явные недостатки тех или иных серверов. На одном, сервисе мало места, на другом нет локализации, на третьем ненадежное хранилище, на четвертом кривой интерфейс и так далее, но у всех этих сервисов есть общий существенный недостаток — ваши данные всегда хранятся на неконтролируемых вами серверах. В случае когда необходимо использовать сервисы для размещения данных не имеющих для вас большой ценности — этих сервисов должно полностью хватить. В случае если, необходима защита контента, полная конфиденциальность, безопасность, неограниченное количество свободного места, возможность организовать многопользовательский доступ для работы в группах, контроль версий, синхронизация, возможность просматривать документы, таблицы, изображения, видеоматериалы, аудиозаписи, заметки из любой точки мира без необходимости их загрузки — ownCloud это то что вам нужно.

Давайте подробнее рассмотрим ownCloud и попробуем его установить

OwnCloud переводиться буквально как «собственное облако». Это CMS с открытым кодом, которое можно загрузить на свой компьютер и позднее установить его на хостинг или собственный сервер. По функциональности ownCloud не отстает от ведущих компаний в мире облачных хранилищ, а некоторых превосходит.

image

За простым лаконичным интерфейсом скрывается большой функционал расширяемый еще более с помощью предустановленных модулей и собственного App store представленного на официальном сайте.

Возможности ownCloud «из коробки»:



  • Многопоточная загрузка данных «перетягиванием» при помощи технологии Drag-and-drop
  • Редактирование прав на доступ к файлам для конкретных пользователей, групп или интернета
  • Подключение и просмотр новостных RSS лент
  • Просмотр изображений, видео, офисных документов
  • Синхронизируемый календарь, менеджер задач, менеджер контактов, менеджер веб закладок
  • Отслеживание активности пользователей
  • Защищенное соединение, шифрование данных, LDAP\WebDAV аутентификация
  • Поддержка внешних хранилищ: Google Drive, Dropbox, FTP, SMB, WebDAV, Amazon S3, IRODS, OpenStack Object Storage, а так же локальных
  • Клиентские приложения с полной синхронизацией для всех актуальных платформ


Это всего лишь краткий список возможностей ownCloud, но уже сейчас видны его преимущества. При желании можно добавить почтовый клиент, торрент клиент, чат с видео, полноценный офис, проверку фалов на VirusTotal и многое другое.

Перейдем от теории к практике.

Установка ownCloud на сервер под управлением Debian 7 wheezy


1.Установка базового ПО


Прежде чем начинать давайте убедимся что наша система в актуальном состоянии.
Открываем терминал и вводим:
sudo apt-get update && sudo apt-get upgrade

Эти две простые команды обновят все программы на нашем сервере, процесс может занять длительное время в зависимости от скорости интернета и нашего сервера.

Теперь, можно приступить к установке необходимого для работы ownCloud программного обеспечения:
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 

Теперь у нас есть все необходимое для быстрого развертывания ownCloud на нашем сервере и можно переходить к пункту 4 или продолжить полную установку вместе со мной.

2.Установка MySQL


Устанавливаем MySQL:
apt-get install mysql-client mysql-server

Создаем пароль для базы данных MySQL и идем дальше.

Важно: пароль не должен совпадать с паролем суперпользователя.

Теперь немножко позаботимся о нашей безопасности, вводим в консоль:
mysql_secure_installation 

На все вопросы кроме «Change the root password» (Если не хотите менять пароль MySQL) отвечаем положительно Y.

Входим в консоль управления MySQL и вводим пароль (его не видно):
 mysql -u root -p 

Создаем базу данных:
 create database Имя_БД; 

Создаем пользователя, желательно с именем как и у базы данных:
 create user 'Имя_пользователя'@'localhost' IDENTIFIED BY 'Новый_пароль'; 

Важно: пароль не должен совпадать с паролем суперпользователя.

Передаем созданному пользователю полные права на созданную базу данных:
 GRANT ALL ON Имя_БД.* to 'Имя_пользователя'@'localhost' ; 

Выходим:
 quit 


3.Установка ntp для синхронизации времени на сервере


Устанавливаем ntp клиент:
 apt-get install ntp ntpdate 

Теперь меняем сервер синхронизации времени на ближайший:
 sudo gedit /etc/ntp.conf 

В открывшемся фале находим:
server 0.debian.pool.ntp.org iburst dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic

Меняем на адреса ближайших к нам npt серверов, например на:
server 0.ru.pool.ntp.org iburst dynamic
server 1.ru.pool.ntp.org iburst dynamic
server 2.ru.pool.ntp.org iburst dynamic
server 3.ru.pool.ntp.org iburst dynamic

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

Чтобы проверить правильность времени достаточно ввести в терминале:
 ntpdate 0.ru.pool.ntp.org 

Если время на нашем сервере не соответствует времени полученному с ntp сервера вводим:
 ntpdate -bs 0.ru.pool.ntp.org 


4.Настройка


Редактируем файл /etc/apache2/sites-enabled/000-default:
 sudo gedit /etc/apache2/sites-enabled/000-default 

Находим строчку в разделе "<Directory /var/www/>":
AllowOverride None

Меняем на:
AllowOverride All

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

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

Редактируем php.ini:
 sudo gedit /etc/php5/apache2/php.ini 

Находим строчки:
mysql.default_socket =
mysql.cache_size =
memory_limit = 
post_max_size =  
upload_max_filesize =

Меняем на:
mysql.default_socket=/var/run/mysqld/mysqld.sock
mysql.cache_size = 4000
upload_max_filesize = 1024M       //максимальный размер файла который мы можем загрузить на наш сайт
post_max_size = 1024M                //Должен быть больше или равен upload_max_filesize 
memory_limit = 1024M                  //Должен быть больше или равен post_max_size

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

Перезапускам apache еще раз:
 service apache2 restart 


5.Установка ownCloud


Загружаем последнюю версию ownCloud, на момент написания ownCloud 6:
 cd /var/www/ 

 wget http://download.owncloud.org/community/owncloud-6.0.0a.tar.bz2 


Также, можно просто скачать последнюю версию с официального сайта ownCloud в папку /var/www/

Распаковываем:
 tar -xvf owncloud-6.0.0a.tar.bz2 


Выставляем права:
 sudo chown -R www-data:www-data /var/www/owncloud/ 


Теперь наш сайт готов, остался только маленький штрих, открываем в браузере localhost/owncloud


А) Для тех кто сразу перешел на пункт 4: Придумываем login и пароль для администратора — входим
B) Для тех кто установил MySQL: Придумываем login и пароль для администратора, выбираем «advanced» затем «MySQL» и вводим имя ранее созданного пользователя базы данных, его пароль, имя самой базы данных, в поле Database host пишем localhost.

Готово! Теперь вы счастливый обладатель персонального облака owncloud с синхронизацией на всех устройствах в вашей домашней сети, для этого достаточно набрать в браузере ваш_внутренний_IP/ownCloud или если вы подключены к интернету напрямую можно получить доступ к owncloud набрав внешний_IP/ownCloud.

Настройка доступа к ownCloud из интернета через рутер



Рассмотрим пример на основе роутера asus rt-n16:

Из браузера заходим на адрес 192.168.1.1, вводим логин и пароль и входим в веб интерфейс роутера:

веб интерфейс

1. Переходим во вкладку «интернет» 2. Переходим во вкладку «переадресация портов» (Virtual Server / Port Forwarding) 3. Включаем переадресацию.
Меню переадресации портов

4. Выбираем уже заботливо подготовленные для нас профили: FTP и HTTP.
Выбор подготовленных профилей

5. Выбираем внутренний IP адрес нашего сервера («ip a» в терминале, адрес вида 192.168.1.X или 192.168.0.X) и нажимаем "+" что бы добавить в список
Выбор внутреннего IP сервера

6. По аналогии заполняем и добавляем нужные нам порты, затем нажимаем кнопку «Применить»
Список портов для ownCloud


Заметки



1. Некорректная установка приложения в разделе Apps


В случае если после включения приложения веб сайт начал некорректно работать я нашел 3 решения:
1.Полная переустановка.
2.Очистить базу данных созданную для owncloud в phpmyadmin и удалить файл:
rm -f \var\www\owncloud\config\config.php  

3.Наверное самый приятный вариант, переместить папку с приложением после которого начались проблемы из папки \var\www\owncloud\apps в любую другую, проверить что сайт работает, вернуть папку на место и не трогать до фикса.


2. Авто login пользователя как только он заходит на сайт
1. Создаем в админ панели пользователя, к примеру Gman с паролем noclip.
2. Открываем файл base.php:
 Sudo gedit /var/www/owncloud/lib/base.php 

3. В самом конце находим строчи:
	protected static function tryBasicAuthLogin() {
		if (!isset($_SERVER["PHP_AUTH_USER"])
			|| !isset($_SERVER["PHP_AUTH_PW"])
		) {
			return false;
		}
		OC_App::loadApps(array('authentication'));
		if (OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) {
			//OC_Log::write('core',"Logged in with HTTP Authentication", OC_Log::DEBUG);


Заменяем на

	protected static function tryBasicAuthLogin() {
		//if (!isset($_SERVER["PHP_AUTH_USER"])
		//	|| !isset($_SERVER["PHP_AUTH_PW"])
		//) {
		//	return false;
		//}
                if (OC_User::login(Gman, noclip)) {
		OC_App::loadApps(array('authentication'));
		//if (OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) {
			//OC_Log::write('core',"Logged in with HTTP Authentication", OC_Log::DEBUG);


3. Запрет на удаление файлов
1. Открываем fileactions.js
 Sudo gedit /var/www/owncloud/apps/files/js/fileactions.js 

2. Ищем следующие строки:
	remove the existing delete action
		parent.parent().children().last().find('.action.delete').remove();
		if (actions['Delete']) {
			var img = FileActions.icons['Delete'];
			if (img.call) {
				img = img(file);
			}
			if (typeof trashBinApp !== 'undefined' && trashBinApp) {
				var html = '<a href="#" original-title="' + t('files', 'Delete permanently') + '" class="action delete delete-icon" />';
			} else {
				var html = '<a href="#" class="action delete delete-icon" />';
			}
			var element = $(html);
			element.data('action', actions['Delete']);
			element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler);
			parent.parent().children().last().append(element);
		} 

3. Комментируем их:
	// remove the existing delete action
	//	parent.parent().children().last().find('.action.delete').remove();
	//	if (actions['Delete']) {
	//		var img = FileActions.icons['Delete'];
	//		if (img.call) {
	//			img = img(file);
	//		}
	//		if (typeof trashBinApp !== 'undefined' && trashBinApp) {
	//			var html = '<a href="#" original-title="' + t('files', 'Delete permanently') + '" class="action delete delete-icon" />';
	//		} else {
	//			var html = '<a href="#" class="action delete delete-icon" />';
	//		}
	//		var element = $(html);
	//		element.data('action', actions['Delete']);
	//		element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler);
	//		parent.parent().children().last().append(element);
	//	} 


4. Открываем:
 Sudo gedit /var/www/owncloud/apps/files/js/files.js 


5. Находим следующие строчки:

 $('.delete-selected').click(function(event) {
		var files=getSelectedFilesTrash('name');
		event.preventDefault();
		FileList.do_delete(files);
		return false;
	}); 


6. Комментируем их:
 //$('.delete-selected').click(function(event) {
	//	var files=getSelectedFilesTrash('name');
	//	event.preventDefault();
	//	FileList.do_delete(files);
	//	return false;
//	}); 


P.S. Хочу поблагодарить пользователя paullarionov за его великолепную статью о файловых хранилищах, а так же KuniLinux за статью про установку ownCloud 4 на Ubuntu 12.04, именно его статья вдохновила меня на написание более расширенной и актуализированной статьи.
Tags:
Hubs:
+6
Comments 28
Comments Comments 28

Articles