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

в 16:11, , рубрики: Apache, cms, debian 7, mysql, owncloud, phpmyadmin, облако, облачный диск, облачный сервис, Серверное администрирование, установка, хранилище данных, метки: , , , , , , , , , ,

image

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

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

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

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

image

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

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

  • Многопоточная загрузка данных «перетягиванием» при помощи технологии Drag-and-drop
  • Редактирование прав на доступ к файлам для конкретных пользователей, групп или интернета
  • Подключение и просмотр новостных RSS лент
  • Просмотр изображений, видео, офисных документов
  • Синхронизируемый календарь, менеджер задач, менеджер контактов, менеджер веб закладок
  • Отслеживание активности пользователей
  • Защищенное соединение, шифрование данных, LDAPWebDAV аутентификация
  • Поддержка внешних хранилищ: 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 ffmpeg php-imagick 

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

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

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

apt-get install mysql-client mysql-server

Во время установки нам предложат автоматически сконфигурировать сервер, соглашаемся и выбираем Apache2, нажимаем «Да» далее нас попросят придумать пароль для нашей базы данных MySQL, придумываем пароль и идем дальше.

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

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

mysql_secure_installation 

и на все вопросы отвечаем положительно 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.pool.ntp.org iburst dynamic
server 1.pool.ntp.org iburst dynamic
server 2.pool.ntp.org iburst dynamic
server 3.pool.ntp.org iburst dynamic

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

Чтобы проверить правильность времени достаточно ввести в терминале:

 ntpdate pool.ntp.org 

Если время на нашем сервере не соответствует времени полученному с ntp сервера вводим:

 ntpdate -bs 0.pool.ntp.org 
4.Настройка

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

 sudo gedit /etc/apache2/sites-enabled/000-default 

Находим строчку:

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

Находим строчки:

extension=pdo_mysql.so
extension=mysql.so 

Убираем знаки комментариев перед ними "#" или "//" ( если строчек нет, добавляем их после "[MySQL]" )
Сохраняем файл и выходим.

Перезапускам 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
Опыт установки ownCloud 6 на Debian 7 wheezy

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

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

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

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

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

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

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

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

Меню переадресации портов

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

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

Выбор подготовленных профилей

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

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

Выбор внутреннего IP сервера

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

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

Список портов для ownCloud

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

Заметки

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

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

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

rm -f varwwwowncloudconfigconfig.php  

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

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;
		//}
		OC_App::loadApps(array('authentication'));
		//if (OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) {
                if (OC_User::login(Gman, noclip)) {
			//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, именно его статья вдохновила меня на написание более расширенной и актуализированной статьи.

Автор: BlackIce13

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js