Установка файлового хранилища Seafile на Centos 7

Seafile — файловое хранилище, система с открытым исходным кодом. Аналог Dropbox. На официальном сайте можно скачать клиенты для синхронизации файлов как для десктопных операционных систем (Windows, Linux, Mac), так и для мобильных устройств (Android, iOS)

Установка Seafile

Добавляем репозиторий EPEL и обновляемся

[root@localhost]# yum install epel-release
[root@localhost]# yum update

Устанавливаем необходимый набор софта

[root@localhost]# yum install nano python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server

Отключаем Selinux

[root@localhost]# setenforce 0
[root@localhost]# nano /etc/sysconfig/selinux
SELINUX=disabled

Установка Web-сервера Apache, добавляем его в автозагрузку и запускаем

Добавляем поддержку ssl в Apache и перезапускаем службу

[root@localhost]# yum install mod_ssl
[root@localhost]# systemctl restart httpd.service

Устанавливаем MySQL-сервер (MariaDB) добавляем его в автозагрузку и запускаем

Подключаемся к базе данных под root-пользователем

[root@localhost]# mysql -u root -p

Создаем 3 базы, пользователя, задаем пароль для пользователя и назначаем ему привилегии

mysql> create database ccnet_db character set = 'utf8';
mysql> create database seafile_db character set = 'utf8';
mysql> create database seahub_db character set = 'utf8';
mysql> create user 'seafile'@'localhost' identified by 'password';
mysql> GRANT ALL PRIVILEGES ON `ccnet_db`.* to `seafile`@`localhost`;
mysql> GRANT ALL PRIVILEGES ON `seafile_db`.* to `seafile`@`localhost`;
mysql> GRANT ALL PRIVILEGES ON `seahub_db`.* to `seafile`@`localhost`;
mysql> FLUSH PRIVILEGES;
mysql> exit;

Создаем каталог, куда будем ставить Seafile, переходим в него и скачиваем дистрибутив с официального сайта

[root@localhost]# mkdir -p /home/seafile
[root@localhost]# cd /home/seafile
[root@localhost]# wget https://download.seadrive.org/seafile-server_6.0.9_x86-64.tar.gz

Разархивируем дистрибутив, переименовываем и запускаем процесс установки

[root@localhost]# tar -xzvf seafile-server_6.0.9_x86-64.tar.gz
[root@localhost]# mv seafile-server-6.0.9 seafile-server
[root@localhost]# cd seafile-server/
[root@localhost]# ./setup-seafile-mysql.sh

В процессе установке система спросит некоторые вопросы, на которые надо будет ответить

server name - seafile
server's ip or domain - 192.168.1.45
default data dirctory - just press Enter
default port - press Enter
Now for the database configuration, choose number 2
For the MySQL configuration:
use deafult host - localhost
default port - 3306
the mysql user - 'seafile'
and the password is 'password'
ccnet database is 'ccnet_db'
seafile database is 'seafile_db'
seahub database is 'seahub_db'

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

Меняем владельца и группу каталога, куда установлен Seafile и каталога с временными файлами Seafile

[root@localhost]# chown -R apache:apache /home/seafile
[root@localhost]# chown -R apache:apache /tmp/seahub_cache

Создаем скрипт запуска службы seafile.service

[root@localhost]# nano /etc/systemd/system/seafile.service
[Unit]
Description=Seafile Server
Before=seahub.service
After=network.target mariadb.service

[Service]
Type=oneshot
ExecStart=/home/seafile/seafile-server-6.0.9/seafile.sh start
ExecStop=/home/seafile/seafile-server-6.0.9/seafile.sh stop
RemainAfterExit=yes
User=apache
Group=apache

[Install] WantedBy=multi-user.target

Создаем скрипт запуска службы seahub.service

[root@localhost]# nano /etc/systemd/system/seahub.service
[Unit]
Description=Seafile Hub
After=network.target seafile.target mariadb.service

[Service]
Type=oneshot
ExecStart=/home/seafile/seafile-server-6.0.9/seahub.sh start
ExecStop=/home/seafile/seafile-server-6.0.9/seahub.sh stop
RemainAfterExit=yes
User=apache
Group=apache

[Install] WantedBy=multi-user.target

Перезагружаем демон systemd и запускаем созданные сервисы

[root@localhost]# systemctl daemon-reload
[root@localhost]# systemctl start seafile
[root@localhost]# systemctl start seahub

Настройка Apache

Добавляем vhosts — несколько сайтов на одном ip-адресе

[root@localhost]# nano /etc/httpd/conf.d/vhosts.conf
# Загрузка моих vhosts
IncludeOptional vhosts.d/*.conf

Создаем каталог, где будут лежать конфигурации vhosts

[root@localhost]# mkdir /etc/httpd/vhosts.d

Создаем конфигурационный файл для Seafile

[root@localhost]# nano /etc/httpd/vhosts.d/seafile.example.ru.conf
<VirtualHost *:80>
 ServerName seafile.example.ru
 ServerSignature Off
 
 Redirect / https://seafile.example.ru/

</VirtualHost>

<VirtualHost *:443>
 ServerName seafile.example.ru
 ServerSignature Off

 Alias /media  /home/seafile/seafile-server-latest/seahub/media

# Каталог, где лежать ssl-сертификаты надо создать заранее
 SSLEngine on
 SSLCertificateFile /etc/httpd/ssl/example.ru/certificate.crt
 SSLCertificateKeyFile /etc/httpd/ssl/example.ru/private.key

 SSLProxyEngine on
 SSLProxyCheckPeerCN on
 SSLProxyCheckPeerExpire on

# seafile httpserver
 ProxyPass /seafhttp http://127.0.0.1:8082
 ProxyPassReverse /seafhttp http://127.0.0.1:8082
 RewriteRule ^/seafhttp - [QSA,L]

# seahub
 ProxyPass / http://127.0.0.1:8000/
 ProxyPassReverse / http://127.0.0.1:8000/
 RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

 Timeout 2400
 ProxyTimeout 2400
 ProxyBadHeader Ignore

    ErrorLog /home/seafile/error_ssl.log
    CustomLog /home/seafile/access_ssl.log combined
</VirtualHost>

Перезапускаем наши сервисы

[root@localhost]# systemctl restart httpd
[root@localhost]# systemctl restart seafile
[root@localhost]# systemctl restart seahub

Добавляем их в автозагрузку

[root@localhost]# systemctl enable httpd
[root@localhost]# systemctl enable mariadb
[root@localhost]# systemctl enable seafile
[root@localhost]# systemctl enable seahub

Настройка Firewall

Открываем необходимые порты для Seafile и перезапускаем службу firewall

[root@localhost]# firewall-cmd --zone=public --add-port=8000/tcp --permanent
[root@localhost]# firewall-cmd --zone=public --add-port=8082/tcp --permanent
[root@localhost]# firewall-cmd --zone=public --add-port=10001/tcp --permanent
[root@localhost]# firewall-cmd --zone=public --add-port=12001/tcp --permanent
[root@localhost]# firewall-cmd --reload

Дополнительная информация

Если нужно исправить URL, по которому загружается Seafile, правим один из конфигурационных файлов и перзапускаем Seafile

[root@localhost]# nano /home/seafile/conf/ccnet.conf
SERVICE_URL = https://share.example.ru

[root@localhost]# systemctl restart seafile
[root@localhost]# systemctl restart seahub

Максим Макаров

У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.

Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Дмитрий

    [root@localhost]# ./setup-seafile-mysql.sh

    Ругается на pyton

    Не рабочая инструкция куча ошибок

    chown -R apache:apache /var/www/seafile
    chown: невозможно получить доступ к «/var/www/seafile»: Нет такого файла или каталога

    Прошелся не увидел где это создавалось. Бросил установку жаль.

    Ответить
    1. Максим Макаров автор

      Благодарю за отзыв.
      Момент с назначением владельца на каталог поправил, каталог /home/seafile
      С python — надо смотреть что за ошибка выскакивает, возможно какой-то компонент не установлен

      Ответить
      1. Дмитрий

        ./setup-seafile-mysql.sh

        на выходе

        Can’t find a python executable of version 2.7 or above in PATH
        Install python 2.7+ before continue.
        Or if you installed it in a non-standard PATH, set the PYTHON enviroment varirable to it

        Ответить
        1. Максим Макаров автор

          Вот нашел на форуме Seafile: https://forum.seafile.com/t/seafile-server-installer-centos-python-path-enviroment-error/5475/12
          и еще на одном ресурсе:
          https://mengniuge.com/centos-install-seafile-pro.html

          Решение:
          $ sudo yum install which

          Ответить
          1. Дмитрий

            да помогло, но теперь вот это при перезагрузке сервера.

            seahub.sh[441]: Unknown command: ‘runfcgi’
            seahub.sh[441]: Type ‘manage.py help’ for usage.
            seahub.sh[441]: Error:Seahub failed to start.
            systemd[1]: seahub.service: Main process exited, code=exited, status=1/FAILURE
            systemd[1]: Failed to start Seafile Hub.

          2. Максим Макаров автор
        2. Дмитрий

          Ура запустил, но мне помог вот этот мануал. да и версию я новее ставил seafile, если будет возможность обновите статью спасиьо за помощь.

          https://forum.seafile.com/t/so-fast-cgi-has-been-dropped-is-there-a-chapter-in-the-manual-how-to-migrate/7561/2

          Ответить
          1. Максим Макаров автор

            В ближайшее время постараюсь написать статью по свежему Seafile + nginx