Установка и запуск Seafile Server

Автор George, Янв. 26, 2023, 05:12

« назад - далее »

George

Seafile может быть развернут как Docker-контейнер или при помощи готового скрипта. Но в данной инструкции мы подробно рассмотрим процесс ручной установки и настройки Seafile на собственный серер. По большей части, мы будем опираться на официальную инструкцию.

В нашем примере будут использоваться:

Linux Ubuntu 20.04.
Seafile Server версии 9.
СУБД MariaDB.
Веб-сервер NGINX.
Пошагово, мы познакомимся с требованиями, опишем предварительную настройку системы и развертывание Seafile Server со всем необходимым прикладным софтом.

Требования к системе
Подготовка к установке Seafile
Установка дополнительных компонентов
Установка Seafile
Настройка автозапуска
Читайте также

Системные требования
Рассмотрим программно-аппаратные требования для развертывания Seafile Server:

Процессор: минимум 2 ядра.
Память ОЗУ: 2 Гб.
Операционная система: Linux Ubuntu (старые и новые версии), Linux CentOS (старые версии).
СУБД: MariaDB/MySQL, SQLite.
Веб-сервер: NGINX, Apache.
Также рекомендована установка memcached для работы 50 пользователей и более.

Предварительная настройка системы
Прежде чем перейти в процессу установки и настройки сервера Seafile, выполним предварительные действия.

1. Обновление пакетов
Обновляем список пакетов:

Код: bash
apt update

На свежей системе также рекомендуется выполнить обновление установленных в системе пакетов:

Код: bash
apt upgrade -y

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

Установим сервис синхронизации времени и разрешим его автозапуск:

Код: bash
apt install chrony -y

Код: bash
systemctl enable chrony

Настраиваем временную зону:

Код: bash
timedatectl set-timezone Europe/Moscow

* В данном примере мы задаем зону по московскому времени.

Список всех доступных зон можно посмотреть командой

Код: bash
timedatectl list-timezones

3. Настройка брандмауэра
По умолчанию, в Ubuntu брандмауэр пропускает все сетевые пакеты и не требует настройки. В этом случае, можно пропустить выполнение данного пункта.

Если же в вашем случае брандмауэр настроен на блокировку портов, выполняем нижеописанные действия.

Для нормальной работы системы нам нужно открыть 2 порта:

Код: bash
iptables -I INPUT -p tcp --dport 8000 -j ACCEPT

Код: bash
iptables -I INPUT -p tcp --dport 8082 -j ACCEPT

* на порту 8000 работает веб-сервер seahub; на 8002 будет слушать сервер seafile.

Для сохранения правила используем утилиту iptables-persistent:

Код: bash
apt install iptables-persistent -y

Код: bash
netfilter-persistent save

Установка программных компонентов
Установим программные продукты, которые необходимы для работы Seafile.

Memcache
Начать необходимо с Memcache, так как его библиотеки нужны для установки пакетов python. Для установки вводим:

Код: bash
apt install memcached libmemcached-dev -y

Внесем небольшую корректировку в работу сервиса:

Код: bash
vi /etc/memcached.conf

Добавим памяти, которую может использовать memcached для своей работы:

Цитировать-m 512

* до 512 Мб. Но можно и больше...

Перезапускаем сервис и разрешаем его автозапуск:

Код: bash
systemctl restart memcached

Код: bash
systemctl enable memcached

Python
Для запуска и работы нашей облачной системы необходим python версии 3. Выполним его установку с дополнительными компонентами:

Код: bash
apt install python3 python3-setuptools python3-pip libmysqlclient-dev -y

* где:

python3 — интерпретатор для языка программирования python.
python3-setuptools — дополнение для python-distutils, который в свою очередь, нужен для установки дополнительных модулей.
python3-pip — менеджер установки пакетов python.
libmysqlclient-dev — набор файлов для разработки под СУБД MySQL/MariaDB.
С помощью менеджера пакетов python также установим:

Код: bash
pip3 install --timeout=3600 django==3.2.* Pillow pylibmc captcha jinja2 sqlalchemy==1.4.3 django-pylibmc django-simple-captcha python3-ldap mysqlclient pycryptodome==3.12.0 cffi==1.14.0

MariaDB
Как говорилось выше, мы будем использовать в качестве сервера баз данных MariaDB. Она может быть установлена из репозитория командой:

Код: bash
apt install mariadb-server -y

* подробнее об установке MariaDB читайте инструкцию Установка MariaDB на CentOS или Ubuntu.

Установим пароль для основной учетной записи СУБД (root):

Код: bash
mysqladmin -u root password

* система запросит новый пароль. Его нужно ввести дважды.

Чтобы пароль применился, нужно сбросить привилегии в СУБД. Для этого заходим в оболочку sql:

Код: bash
mysql -uroot -p

И вводим:

> flush privileges;

После выходим обратно:

> quit

Разрешаем автозапуск демона:

Код: bash
systemctl enable mariadb

Мы готовы переходить к установке Seafile.

Установка Seafile
Создаем учетную запись seafile, от которой будет работать наш сервис:

Код: bash
useradd seafile -r

Создаем каталог, в который загрузим установочные файлы Seafile:

Код: bash
mkdir -p /opt/seafile/bin

На странице загрузки официального сайта копируем ссылку на архив с приложением:

Копируем ссылку на архив сервера seafile

С помощью скопированной ссылки загружаем архив:

Код: bash
wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_9.0.10_x86-64.tar.gz

И распаковываем его в каталог /opt/seafile/bin:

Код: bash
tar zxf seafile-server_*.tar.gz -C /opt/seafile/bin --strip-components 1

Назначим в качестве владельца каталога seafile и распакованных файлов ранее созданного пользователя:

Код: bash
chown -R seafile:seafile /opt/seafile

Заходим под пользователем seafile:

Код: bash
su seafile

Переходим в каталог с установочными файлами и запускаем скрипт:

Код: bash
cd /opt/seafile/bin

Код: bash
./setup-seafile-mysql.sh

Мы увидим приветствие мастера установки. Просто нажимаем ENTER:

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

        https://download.seafile.com/published/seafile-manual/home.md

Press ENTER to continue
-----------------------------------------------------------------

Вводим имя сервера, который будут видеть клиенты:

What is the name of the server? It will be displayed on the client.
3 - 15 letters or digits
[ server name ] dmosk_seafile

Вводим IP-адрес или имя сервера, по которому можно подключиться к серверу:

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] seafile.dmosk.ru

Вводим порт, на котором должен слушать сервис или оставляем 8082:

Which port do you want to use for the seafile fileserver?
[ default "8082" ]

Выбираем, использовать имеющуюся базу или создать новую. Мы создадим новую:

-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ] 1

Указываем настройки для подключения к СУБД — хост, порт, пароль для root:

What is the host of mysql server?
[ default "localhost" ]

What is the port of mysql server?
[ default "3306" ]

What is the password of the mysql root user?
[ root password ]

Задаем имя пользователя mysql, который будет создан для seafile (можно оставить предложенный вариант, нажав ENTER):

Enter the name for mysql user of seafile. It would be created if not exists.
[ default "seafile" ]

Задаем пароль для создаваемой учетной записи в mysql:

Enter the password for mysql user "seafile":
[ password for seafile ]

Вводим имя для базы данных для сервера ccnet:

Enter the database name for ccnet-server:
[ default "ccnet-db" ]

Вводим имя для базы данных для сервера seafile:

Enter the database name for seafile-server:
[ default "seafile-db" ]

Вводим имя для базы данных для сервера seahub:

Enter the database name for seahub:
[ default "seahub-db" ]

Смотрим на сводную информацию:

---------------------------------
This is your configuration
---------------------------------

    server name:            dmosk_seafile
    server ip/domain:      seafile.dmosk.ru

    seafile data dir:      /opt/seafile/seafile-data
    fileserver port:        8082

    database:              create new
    ccnet database:        ccnet-db
    seafile database:      seafile-db
    seahub database:        seahub-db
    database user:          seafile

---------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

Если ошибок нет, вводим ENTER — начнется установке и конфигурирование.

Мы должны увидеть сообщение:

-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------

run seafile server:    ./seafile.sh { start | stop | restart }
run seahub  server:    ./seahub.sh  { start <port> | stop | restart <port> }

-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------

port of seafile fileserver:  8082
port of seahub:              8000

When problems occur, Refer to

        https://download.seafile.com/published/seafile-manual/home.md

for information.

Установка завершена.

Внесем изменения в конфигурационный файл:

Код: bash
vi /opt/seafile/conf/gunicorn.conf.py

Отредактируем строку

Цитироватьbind = "0.0.0.0:8000"

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

Открываем другой конфигурационный файл:

Код: bash
vi /opt/seafile/conf/seahub_settings.py

Добавим строки:

Код: bash
CACHES = {
    'default': {
        'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
        'LOCATION': '127.0.0.1:11211',
    },
}
* в данном примере мы говорим серверу использовать memcached.

Теперь нам нужно запустить 2 сервиса:

seafile fileserver — сервер, принимающий запросы от клиентов.
seahub — веб-сервер на python.
Стартуем первый:

Код: bash
 /opt/seafile/bin/seafile.sh start

Мы должны увидеть:

Starting seafile server, please wait ...
** Message: 16:02:58.146: seafile-controller.c(621): No seafevents.

Seafile server started

Done.

Запускаем второй сервис:

Код: bash
 /opt/seafile/bin/seahub.sh start

Система задаст несколько вопросов.

Адрес электронной почты администратора (это же будет логин администратора):

What is the email for the admin account?
[ admin email ] postmaster@dmosk.ru

Пароль, который будет использоваться для администратора (вводим дважды):

What is the password for the admin account?
[ admin password ]

Enter the password again:
[ admin password again ]

Мы должны увидеть:

ЦитироватьSeahub is started

Done.

Сервер запущен.

Попробуем открыть браузер и перейти по адресу http://<IP-адрес сервера>:8000 — должна открыться страница авторизации. Вводим логин и пароль, который создали при старте seahub (в нашем примере для пользователя postmaster@dmosk.ru). Мы должны попасть в систему с правами администратора. Теперь у нас есть возможность управлять сервисом из графического интерфейса.

Настройка автозапуска
В нашем примере были разово запущены сервисы, которые перестанут работать после перезагрузки сервера. Для решения задачи автозапуска мы создадим два юнита в systemd.

С предыдущей настройки мы вошли в консоль под пользователем seafile. Оставаясь в нем, остановим ранее запущенные сервисы:


Код: bash
/opt/seafile/bin/seahub.sh stop


Код: bash
/opt/seafile/bin/seafile.sh stop

Выходим из консоли пользователя seafile:


Код: bash
exit

Вводим команду для создания первого юнита:

Код: bash
systemctl edit --full --force seafile

Код: bash
[Unit]
Description=Seafile Service
After=network.target

[Service]
User=seafile
Group=seafile
Type=forking
ExecStart=/opt/seafile/bin/seafile.sh start
ExecStop=/opt/seafile/bin/seafile.sh stop
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target

Создаем второй юнит:

Код: bash
systemctl edit --full --force seahub

Код: bash
[Unit]
Description=Seahub Service
After=network.target

[Service]
User=seafile
Group=seafile
Type=forking
ExecStart=/opt/seafile/bin/seahub.sh start
ExecStop=/opt/seafile/bin/seahub.sh stop
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Разрешаем запуск созданных сервисов:

Код: bash
systemctl enable seafile seahub

Стартуем их:

Код: bash
systemctl start seafile seahub

Проверяем состоянию запущенных служб:

Код: bash
systemctl status seafile seahub
  •  

🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.