Установка файлового хранилища SeaFile в Centos 7
SeaFile - файловое хранилище, система с открытым исходным кодом. Аналог Dropbox. На официальном сайте можно скачать клиенты для синхронизации файлов как для десктопных операционных систем (Windows, Linux, Mac), так и для мобильных устройств (Android, iOS)
Установка Seafile
Добавляем репозиторий EPEL и обновляемся
1
2
$ sudo yum install epel-release
$ sudo yum update
Устанавливаем необходимый набор софта
1
$ sudo yum install nano python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server
Отключаем Selinux
1
2
3
$ sudo setenforce 0
$ sudo nano /etc/sysconfig/selinux
SELINUX=disabled
Устанавливаем Web-сервер Apache, добавляем его в автозагрузку и запускаем
Добавляем поддержку ssl в Apache и перезапускаем службу
1
2
$ sudo yum install mod_ssl
$ sudo systemctl restart httpd.service
Устанавливаем MySQL-сервер (MariaDB), добавляем его в автозагрузку и запускаем
Подключаемся к базе данных под root-пользователем
1
$ sudo mysql -u root -p
Создаем 3 базы, пользователя, задаем пароль для пользователя и назначаем ему привилегии
1
2
3
4
5
6
7
8
9
> create database ccnet_db character set = 'utf8';
> create database seafile_db character set = 'utf8';
> create database seahub_db character set = 'utf8';
> create user 'seafile'@'localhost' identified by 'password';
> GRANT ALL PRIVILEGES ON `ccnet_db`.* to `seafile`@`localhost`;
> GRANT ALL PRIVILEGES ON `seafile_db`.* to `seafile`@`localhost`;
> GRANT ALL PRIVILEGES ON `seahub_db`.* to `seafile`@`localhost`;
> FLUSH PRIVILEGES;
> exit;
Создаем каталог, куда будем ставить SeaFile, переходим в него и скачиваем дистрибутив с официального сайта
1
2
3
$ sudo mkdir -p /home/seafile
$ cd /home/seafile
$ sudo wget https://download.seadrive.org/seafile-server_6.0.9_x86-64.tar.gz
Разархивируем дистрибутив, переименовываем и запускаем процесс установки
1
2
3
4
$ sudo tar -xzvf seafile-server_6.0.9_x86-64.tar.gz
$ sudo mv seafile-server-6.0.9 seafile-server
$ sudo cd seafile-server/
$ sudo ./setup-seafile-mysql.sh
В процессе установке система спросит некоторые вопросы, на которые надо будет ответить
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
1
2
$ sudo chown -R apache:apache /home/seafile
$ sudo chown -R apache:apache /tmp/seahub_cache
Создаем системный юнит seafile.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ sudo 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ sudo 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
Перечитываем изменения в системных юнитах и запускаем созданные сервисы
1
2
3
$ sudo systemctl daemon-reload
$ sudo systemctl start seafile
$ sudo systemctl start seahub
Настройка Apache
Добавляем vhosts
- несколько сайтов на одном ip-адресе
1
2
3
$ sudo nano /etc/httpd/conf.d/vhosts.conf
# Загрузка моих vhosts
IncludeOptional vhosts.d/*.conf
Создаем каталог, где будут лежать конфигурации vhosts
1
$ sudo mkdir /etc/httpd/vhosts.d
Создаем конфигурационный файл для SeaFile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$ sudo 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>
Перезапускаем наши сервисы
1
2
3
$ sudo systemctl restart httpd
$ sudo systemctl restart seafile
$ sudo systemctl restart seahub
Добавляем их в автозагрузку
1
2
3
4
$ sudo systemctl enable httpd
$ sudo systemctl enable mariadb
$ sudo systemctl enable seafile
$ sudo systemctl enable seahub
Настройка Firewall
Открываем необходимые порты для SeaFile и перезапускаем службу firewall
1
2
3
4
5
$ sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=8082/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=10001/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=12001/tcp --permanent
$ sudo firewall-cmd --reload
Дополнительная информация
Если нужно исправить URL, по которому загружается SeaFile, правим один из конфигурационных файлов и перзапускаем SeaFile
1
2
3
4
5
$ sudo nano /home/seafile/conf/ccnet.conf
SERVICE_URL = https://share.example.ru
$ sudo systemctl restart seafile
$ sudo systemctl restart seahub