Site icon IT Draft

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

Перенос файлового хранилища Seafile со всеми данными на другой сервер

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

Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров

Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.


[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
Exit mobile version