Установка файлового хранилища 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 /var/www/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.digimap.ru

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

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

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