книги хакеры / журнал хакер / 189_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
|
|
|||
|
F |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
||
P |
D |
|
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
NOW! |
r |
|
|
|
|
|||||||
|
|
|
|
|
BUY |
|
|
Unixoid |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
to 118 |
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
w Click |
|
|
|
|
|
|
|
o |
|
|
|
|
||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
.c |
|
|
|
|
|
||
|
|
p |
df |
|
|
|
|
|
e |
|
|
|
|
|
||
|
|
|
|
|
|
g |
|
|
|
|
|
|
|
|||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
Личное облачное хранилище данных |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
уже давно стало такой же привычной |
|
|
|
||||||||
|
|
|
|
|
вещью, как email, Twitter и социальные |
|
|
|
||||||||
|
|
|
|
|
сети. Благодаря Dropbox, Google Drive |
|
|
|
||||||||
|
|
|
|
|
и Яндекс.Диску каждый может полу- |
|
|
|
||||||||
|
|
|
|
|
чить в личное пользование «малень- |
|
|
|
||||||||
|
|
|
|
|
кий сетевой диск», который обойдется |
|
|
|
||||||||
|
|
|
|
|
ровно в 0 |
$ на практически бесконеч- |
|
|
|
|||||||
|
|
|
|
|
ный срок. Однако публичные облака |
|
|
|
||||||||
|
|
|
|
|
имеют недостатки: мнимая конфи- |
|
|
|
||||||||
|
|
|
|
|
денциальность, ограничения на объ- |
|
|
|
||||||||
|
|
|
|
|
ем данных, зависимость от ширины |
|
|
|
||||||||
|
|
|
|
|
интернет-канала. Решить все эти про- |
|
|
|
||||||||
|
|
|
|
|
блемы можно, создав свой собствен- |
|
|
|
||||||||
|
|
|
|
|
ный облачный диск. |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Библиотека Seafile |
||
|
|
|
|
|
ПОСТАНОВКАЗАДАЧИ |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
Итак, нам нужен собственный сервис хранения данных в сти- |
Настройки хранения |
||||||||||
|
|
|
|
|
ле Dropbox. Он должен работать под управлением Linux, |
истории |
||||||||||
|
|
|
|
|
иметь клиенты для всех популярных ОС, включая мобильные, |
|
|
|
||||||||
|
|
|
|
|
обладать веб-интерфейсом, поддерживать версионность |
|
|
|
||||||||
|
|
|
|
|
файлов и шифрование на стороне клиента. Также неплохо |
|
|
|
||||||||
|
|
|
|
|
бы иметь поддержку многих юзеров/групп и возможность |
|
|
|
||||||||
|
|
|
|
|
коллективной работы над файлами на тот случай, если мы за- |
|
|
|
||||||||
|
|
|
|
|
хотим использовать его в корпоративной среде (а об этом мы |
|
|
|
||||||||
|
|
|
|
|
тоже поговорим). |
|
|
|
||||||||
|
|
|
|
|
|
|
Порывшись в интернете и поинтересовавшись вопросом |
|
|
|
||||||
|
|
|
|
|
на форумах, мы заметим, что существует как минимум два |
|
|
|
||||||||
|
|
|
|
|
проверенных временем продукта, полностью соответствую- |
|
|
|
||||||||
|
|
|
|
|
щих данным требованиям. Это OwnCloud и Seafile. Оба откры- |
|
|
|
||||||||
|
|
|
|
|
ты, оба построены на идеях Dropbox, оба поддерживают мно- |
|
|
|
||||||||
|
|
|
|
|
гих юзеров. Казалось бы, берем любой и не паримся. Однако |
|
|
|
||||||||
|
|
|
|
|
не все так просто — между двумя проектами существенные |
|
|
|
||||||||
|
|
|
|
|
архитектурные различия, которые делают OwnCloud далеко |
|
|
|
||||||||
|
|
|
|
|
не лучшим выбором. |
|
|
|
||||||||
|
|
|
|
|
|
|
Главная проблема OwnCloud — это его требовательность |
|
|
|
||||||
|
|
|
|
|
к ресурсам. Сервер целиком написан на языке PHP, что дела- |
|
|
|
||||||||
|
|
|
|
|
ет его довольно громоздким, медлительным и жадным до ре- |
|
|
|
||||||||
|
|
|
|
|
сурсов, особенно если говорить о потреблении оперативки. |
|
|
|
||||||||
|
|
|
|
|
Seafile, в свою очередь, построен по модульному принципу, |
|
|
|
||||||||
|
|
|
|
|
где написанное на Python веб-приложение используется |
|
|
|
||||||||
|
|
|
|
|
исключительно для формирования веб-интерфейса и об- |
|
|
INFO |
||||||||
|
|
|
|
|
работки запросов от клиентов, а за хранение и обмен фай- |
|
|
|||||||||
|
|
|
|
|
лами отвечают демоны, реализованные на языке си. Даже |
|
|
|
||||||||
|
|
|
|
|
на RasPi эти компоненты создают настолько низкую нагрузку |
|
|
Установка Seafile |
||||||||
|
|
|
|
|
на систему, что о ней можно не задумываться (100 Мб памяти |
|
на RasPi выполняется |
|||||||||
|
|
|
|
|
и ~5% процессора в домашней конфигурации с несколькими |
|
по аналогии с десктоп- |
|||||||||
|
|
|
|
|
клиентами). |
|
ной версией. Единствен- |
|||||||||
|
|
|
|
|
|
|
Вторая проблема — стабильность. Среди давних пользо- |
|
ное различие — другой |
|||||||
|
|
|
|
|
вателей OwnCloud почти нет людей, кто не имел бы проблем |
архив с системой, найти |
||||||||||
|
|
|
|
|
с хранилищем. Проблемы начинаются с установки и продол- |
который можно на стра- |
||||||||||
|
|
|
|
|
жаются во время использования, а их диапазон простирается |
|
нице загрузок Seafile |
|||||||||
|
|
|
|
|
от несовместимости с базами данных до проблем с синхрони- |
|
|
(goo.gl/a6hCjK). |
||||||||
|
|
|
|
|
зацией больших файлов. И хотя в последнее время ситуация |
|
|
|
||||||||
|
|
|
|
|
существенно улучшилась, OwnCloud до сих пор нельзя на- |
|
|
|
SEAFILE ОБЛАДАЕТ РЯДОМ ЧЕРТ, КОТОРЫХ НЕТ У ДРУГИХ ПОДОБНЫХ РЕШЕНИЙ. ПО СУТИ SEAFILE
НЕ ЧТО ИНОЕ, КАК СИСТЕМА КОНТРОЛЯ ВЕРСИЙ GIT, ОПТИМИЗИРОВАННАЯ ДЛЯ РАБОТЫ С БОЛЬШИМИ БИНАРНЫМИ ФАЙЛАМИ
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
ХАКЕР 10 /189/ 2014 |
|
|
|
|
|
|||||
w Click |
to |
|
|
|
|
|
m |
|||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
звать стабильным и безбажным продуктом. В противовес ему Seafile просто эталон надежности, развернуть который в целях домашнего использования может даже маленький ребенок, не поимев никаких проблем.
Кроме этого, Seafile обладает рядом черт, которых нет ни у OwnCloud, ни у других подобных решений. По своей сути Seafile не что иное, как система контроля версий Git (известна любому вменяемому программисту), оптимизированная для работы с большими бинарными файлами. Поэтому ему свойственна грамотно реализованная система версионности, которая допускает совместную работу над файлами с возможностью отследить, кто, что и когда исправил, а также возможность создания нескольких библиотек (репозиториев, в терминологии Git) с заданными настройками хранения версий. При этом каждая из библиотек может быть привязана к собственному каталогу на клиентской машине и синхронизирована независимо.
Все эти качества делают Seafile лучшим решением в области открытых Dropbox-подобных хранилищ, и именно о нем пойдет речь в следующих разделах статьи. Сразу оговорюсь, что я в курсе возможностей OwnCloud насчет совместного редактирования документов, онлайн-просмотра видео, интеграции с KDE и вкусностей веб-интерфейса, но эта статья посвящена хранению файлов, для коллективной работы есть множество других открытых и не очень инструментов помимо OwnCloud.
ВОЗМОЖНОСТИ
Итак, что может дать нам Seafile? Ну, во-первых, это, конечно же, синхронизация. Принцип здесь все тот же, что у Dropbox: клиент на компе отслеживает изменения в указанном каталоге (у виндузятников — в папке) и отправляет их серверу, который сохраняет данные в облаке. Сам клиент очень легкий,
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|
|
w Click |
to |
ХАКЕР 10 /189/ 2014 |
||||||||
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Неприкосновенный запас
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
|
|
|
|
|
||
w Click |
to |
|
|
|
|
|
m |
|||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
минималистичный и легко справляется со своей работой, без всяких намеков на торможение системы. Версии есть как для Windows, так и для Linux и OS X. Все они написаны на плюсах с использованием библиотеки Qt и открыты, так что собрать можно и для FreeBSD. Также есть весьма вменяемые клиенты для Android (Seadroid и Seafile для iOS, оба в официальных магазинах).
Кроме собственно синхронизации, Seafile ведет уже упомянутую историю изменений файлов с возможностью моментального отката. Настройки истории нефиксированные и могут быть изменены для отдельно взятых библиотек файлов. Как вариант, можно отключить историю для архивов фотографий и музыки и сделать ее максимальной для разного рода рабочих файлов.
Доступны развитые средства коллективной работы с возможностью обмена сообщениями, расшариваемыми «рабочими областями», коллективным редактированием файлов (обычный текст или Markdown), комментариями, встроенной Wiki и возможностью расшаривания как отдельных документов, так и каталогов целиком. Средств для онлайн-редакти- рования документов Word, календарей и планировщиков, как в OwnCloud, тут нет, но зато есть ряд встроенных просмотр щиков документов. В частности, изображения, doc- и PDFдокументы открываются прямо внутри веб-интерфейса.
Все это, кстати, можно оценить, вообще не разворачивая сервер. Разработчики дают 2 Гб пространства в собственном облаке всем желающим, достаточно зарегистрироваться на cloud.seafile.com, и можно начинать работу. Интерфейс будет в точности таким же, как в случае с приватной версией облака.
Что касается администрирования и масштабируемости, то здесь все также очень неплохо. Хотя в целом Seafile заточен скорее на использование дома или внутри небольших компаний, его архитектура никак не ограничивает установку системы в кластерных конфигурациях с несколькими серверами,
|
|
балансировщиком нагрузки, memcached и распределенным |
|
|
|
Клиент Seafile |
хранилищем данных на базе Ceph или Amazon S3. Какую про- |
|
для Android |
изводительность в этом случае покажет система, непонятно, |
|
|
|
в обычной конфигурации скорость загрузки файлов на сервер |
|
|
достигает 10 Мб/с (согласно замерам разработчиков). |
|
|
Seafile поддерживает шифрование. И не только на уровне |
|
|
канала передачи файлов, но и на уровне хранилища. Шифро- |
|
|
вание файлов производится на стороне клиента с использова- |
|
|
нием ключа, зашифрованного паролем пользователя. На сер- |
|
|
вер передается только ключ, но никогда не отправляется сам |
|
|
пароль. В последующем этот ключ используется для получе- |
|
|
ния доступа к файлам через веб-интерфейс (достаточно знать |
КАК РАБОТАЕТ SEAFILE
|
Seafile базируется на технологиях системы контроля |
|
|
версий Git, но имеет ряд существенных отличий, таких |
|
|
как полное отсутствие возможностей по разделению |
|
|
репозиториев (библиотек, в терминологии Seafile) |
|
|
на ветки (branch), оптимизация для работы с боль- |
|
|
шими бинарными файлами, поддержка шифрования, |
|
|
автоматическая синхронизация и возможность при- |
|
|
остановки и возобновления синхронизации. |
|
|
|
Seafile всегда оперирует только двумя ветками |
|
каждого репозитория/библиотеки: local и master. Пер- |
|
|
вая — это файлы на локальной (клиентской) машине, |
|
INFO |
вторая — на сервере, причем, в отличие от Git, полная |
|
история версий хранится только на сервере, а сама |
||
|
синхронизация (слияние веток) выполняется в полно- |
|
Чтобы корректно устано- |
стью автоматическом режиме: |
|
вить Seafile в ArchLinux, |
1. |
Клиент Seafile обнаруживает изменения в закре- |
необходимо инсталли- |
|
пленном за библиотекой каталоге локальной ма- |
ровать libselinux из AUR: |
|
шины (worktree) с помощью встроенных в ОС ме- |
"yaourt -S libselinux". |
|
ханизмов уведомления об изменениях в ФС (inotify |
|
|
в Linux, fsnotify в OS X). |
|
2. |
Далее клиент выполняет коммит изменений в ло- |
|
|
кальную ветку репозитория. |
|
3. После этого опрашивает сервер на предмет изме- |
|
|
|
нений в ветке master. |
|
4. Если таковые есть, скачивает изменения и сливает |
|
|
|
их с локальной веткой. |
|
5. Сливает локальную ветку репозитория с удаленной |
|
|
|
(master). |
INFO |
|
Этот алгоритм работы очень похож на тот, что ис- |
|
пользуют программисты при работе с Git, с той лишь |
|
Для отключения синхро- |
разницей, что Git требует ручного ввода команд |
|
низации определенных |
для выполнения каждого из этапов (сначала git pull, |
|
типов файлов создай |
затем git add, git commit и так далее). Seafile делает |
|
в нужном каталоге |
всю эту работу автоматически в фоновом режиме, |
|
файл seafile-ignore.txt |
но именно поэтому он подвержен проблемам, кото- |
|
и добавь в него маски |
рые могут возникнуть, если одна из этих операций |
|
файлов (например, *.avi, |
даст сбой или пользователь просто отключит комп во |
|
*.mkv, *.mp3). |
время синхронизации. |
|
|
|
Для решения этих проблем Seafile использует не- |
|
сколько подходов. Во-первых, это индексный файл |
|
|
репозитория, который хранит все даты изменений |
|
|
файлов, так что, если операция синхронизации пре- |
|
|
рвется, позже клиент сможет определить, какие фай- |
|
|
лы еще требуют синхронизации. Во-вторых, Seafile |
|
|
не имеет системы разрешения конфликтов, когда |
|
|
два измененных файла сливаются с разных машин |
|
|
на сервер одновременно. Вместо этого сервер про- |
|
INFO |
сто отшибает один из них, и тот повторяет попытку |
|
позже (версия, загруженная первым клиентом, оста- |
||
|
ется в истории). |
|
Для Seafile есть кон- |
|
Кроме того, Seafile использует отличающийся |
сольный клиент под на- |
от Git алгоритм слияния веток репозитория (синхро- |
|
званием seaf-cli. Скачать |
низации) — он умеет автоматически возобновлять |
|
можно с официального |
прерванную синхронизацию и устранять конфликты |
|
сайта. |
версий, что в Git требует ручного вмешательства. |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
E |
|
|
|
|
|
|
|
|
|
|
C |
E |
|
|
|
|||||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|||||||
|
- |
|
|
|
|
|
d |
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
NOW! |
r |
|
|
|
|
|
|
|
NOW! |
r |
|||||||||||||
|
|
|
|
BUY |
|
|
Unixoid |
|
|
|
|
|
|
|
BUY |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
to 120 |
|
|
|
|
|
ХАКЕР 10 /189/ 2014to |
|
|
|
|
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
m |
|
|
|
w |
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
o |
|
|
|
w Click |
|
|
|
|
|
o |
|||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
|
|
|
p |
df |
|
|
|
e |
|
|||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
g |
|
|
|
|||||||
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||
|
|
|
|
только пароль). В случае веб-версии для расшифровки ключа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
используется код на JavaScript, исполняемый на клиентской |
Устанавливаем Seafile |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
стороне. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
Для синхронизации файлов используется другой ключ, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
генерируемый клиентом. При установке соединения клиент |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
и сервер обмениваются открытыми ключами, которые ис- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
пользуются для расшифровки передаваемых данных обеими |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
сторонами. В качестве алгоритма шифрования используется |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
AES-256 в режиме CBC, он же для шифрования файлов в хра- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
нилище и шифрования ключа для доступа к данным (после |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
прогонки через алгоритм PBKDF2). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
ПРОБУЕМ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
Самый простой способ попробовать Seafile — это установить |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
его на свой домашний сервер или RasPi. В этом случае мож- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
но не заморачиваться с установкой баз данных, веб-сервера |
Интерфейс только |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
и какой-либо настройкой. Достаточно просто скачать пакет |
что установленного |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
и активировать службу. В Ubuntu все это делается так: |
сервера |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
$ cd ~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
$ mkdir seaile && cd seaile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
$ sudo apt-get install python2.7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
python-setuptools python-simplejson |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
python-imaging sqlite3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
$ wget https://bitbucket.org/haiwen/seaile/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
downloads/seaile-server_3.1.5_x86-64.tar.gz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
$ cd seaile-server* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
$ ./setup-seaile.sh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
Последняя команда запускает настроечный скрипт, отве- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
тив на вопросы которого ты произведешь первичную настрой- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
ку сервера: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
1. Server Name — произвольное имя сервера. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
2. This server’s IP or domain — домен или IP-адрес сервера. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
3. Порт ccnet — оставляем по умолчанию (10001). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
4. |
|
Каталог хранилища — указываем каталог с данными (по |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
умолчанию ~/seafile-data). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
5. Порт seafile server — по умолчанию (12001). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
6. Порт seafile fileserver — по умолчанию (8082). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
7. |
|
<Enter>, <Enter>. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
Это все. Теперь можно запустить Seafile: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
$ ./seaile.sh start |
|
|
гурации работает под управлением встроенного легкого |
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
веб-сервера Gunicorn, также написанного на Python. |
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
$ ./seahub.sh start |
|
|
• FileServer (HttpServer) — сервер, предназначенный для пе- |
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
редачи файлов по HTTP. Нужен для того, чтобы избежать бу- |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
Второй скрипт запустит веб-интерфейс и при первом стар- |
|
тылочного горлышка, которое может возникнуть по причине |
|
|
|
|
|
|
||||||||||||
|
|
|
|
те попросит указать email и пароль админа. После этого мож- |
|
не самой высокой производительности Gunicorn. Написан |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
но перейти по адресу localhost:8000, чтобы получить доступ |
|
на языке си. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
к веб-версии интерфейса. Обрати внимание, что, в отличие |
|
• Seafile Server — демон, ответственный за хранение дан- |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
от публичного интерфейса на сайте Seafile, здесь есть кнопка |
|
ных. Сердце Seafile. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
настроек в правом верхнем углу. Используя ее, можно добав- |
|
• Ccnet — сервер, осуществляющий передачу данных между |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
лять новых юзеров, перемещать между ними библиотеки или |
|
компонентами Seafile и клиентом. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
изменять их настройки. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
Все это — простейшая конфигурация Seafile, которая, |
|
Для хранения метаданных и другой внутренней информа- |
|
|
|
|
|
|
||||||||||||
|
|
|
|
как уже ты заметил, не требует для установки и запуска даже |
|
ции сервер использует SQLite, однако в более сложных конфи- |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
прав root. Общая схема работы такого конфига показана |
|
гурациях его можно заменить на MySQL или PostgreSQL. |
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
на рисунке «Seafile на домашнем сервере». В целом сервер |
|
КОРПОРАТИВНЫЙВАРИАНТ |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
использует три основных компонента для выполнения своей |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
работы: |
|
|
Само собой разумеется, описанная выше конфигурация го- |
|
|
|
|
|
|
|||||||||||||
|
|
|
|
• Seahub — веб-интерфейс Seafile, написанный на Python |
Seafile на домашнем |
дится только для домашнего использования и совсем неболь- |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
с использованием фреймворка Django. В данной конфи- |
сервере |
ших компаний. Но когда речь заходит об организации общего |
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
Seaile Server |
|
|
|
Desktop Client |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
Seaile HttpServer |
Seahub |
Port 8000 |
Applet |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Run behind gunicorn |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Seaile Daemon |
Ccnet |
Port 100001 |
Ccnet |
Seaile Daemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Port 12001 for ile transfer |
|
|
|
|
|
|
|
|
|
|
|
|
|