Thank you for reading this post, don't forget to subscribe!
Оригинал статьи:
Seafile — файловое хранилище, система с открытым исходным кодом. Аналог Dropbox. На официальном сайте можно скачать клиенты для синхронизации файлов как для десктопных операционных систем (Windows, Linux, Mac), так и для мобильных устройств (Android, iOS)
Установка Seafile
Добавляем репозиторий EPEL и обновляемся
1 2 |
[root@localhost]# yum install epel-release [root@localhost]# yum update |
Устанавливаем необходимый набор софта
1 |
[root@localhost]# yum install nano python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server |
Отключаем Selinux
1 2 3 |
[root@localhost]# setenforce 0 [root@localhost]# nano /etc/sysconfig/selinux SELINUX=disabled |
Ставим Apache
1 |
[root@localhost]# yum install httpd |
Добавляем сервер в автозагрузку и запускаем его
1 2 |
[root@localhost]# systemctl enable httpd.service [root@localhost]# systemctl start httpd.service |
Добавляем поддержку ssl в Apache и перезапускаем службу
1 2 |
[root@localhost]# yum install mod_ssl [root@localhost]# systemctl restart httpd.service |
Ставим MariaDB
1 |
[root@localhost]# yum install mariadb-server mariadb |
Добавляем сервер в автозагрузку и запускаем его
1 2 |
[root@localhost]# systemctl enable mariadb.service [root@localhost]# systemctl start mariadb.service |
Запускаем встроенный сценарий безопастности
[codesyntax lang="php"]
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
[root@localhost]# mysql_secure_installation Вначале будет запрошен root-пароль, но т.к. в новой установке его нет, просто жмем Enter После этого сценарий предложит создать root-пароль и задаст ряд вопросов. NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on… Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] n … skipping. By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y … Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y … Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database… … Success! - Removing privileges on test database… … Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y … Success! Cleaning up… All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! Пробуем подключиться к БД [root@localhost]# mysql -u root -p |
[/codesyntax]
Подключаемся к базе данных под root-пользователем
1 |
[root@localhost]# mysql -u root -p |
Создаем 3 базы, пользователя, задаем пароль для пользователя и назначаем ему привилегии
1 2 3 4 5 6 7 8 9 |
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, переходим в него и скачиваем дистрибутив с официального сайта
1 2 3 |
[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 |
Разархивируем дистрибутив, переименовываем и запускаем процесс установки
1 2 3 4 |
[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 |
В процессе установке система спросит некоторые вопросы, на которые надо будет ответить
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 |
[root@localhost]# chown -R apache:apache /home/seafile [root@localhost]# chown -R apache:apache /tmp/seahub_cache |
Создаем скрипт запуска службы seafile.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[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 и запускаем созданные сервисы
1 2 3 |
[root@localhost]# systemctl daemon-reload [root@localhost]# systemctl start seafile [root@localhost]# systemctl start seahub |
Настройка Apache
Добавляем vhosts — несколько сайтов на одном ip-адресе
1 2 3 |
[root@localhost]# nano /etc/httpd/conf.d/vhosts.conf # Загрузка моих vhosts IncludeOptional vhosts.d/*.conf |
Создаем каталог, где будут лежать конфигурации vhosts
1 |
[root@localhost]# mkdir /etc/httpd/vhosts.d |
Создаем конфигурационный файл для Seafile
cat /etc/httpd/vhosts.d/seafile.example.ru.conf
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 |
<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 |
[root@localhost]# systemctl restart httpd [root@localhost]# systemctl restart seafile [root@localhost]# systemctl restart seahub |
Добавляем их в автозагрузку
1 2 3 4 |
[root@localhost]# systemctl enable httpd [root@localhost]# systemctl enable mariadb [root@localhost]# systemctl enable seafile [root@localhost]# systemctl enable seahub |
Настройка Firewall
Открываем необходимые порты для Seafile и перезапускаем службу firewall
1 2 3 4 5 |
[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
1 2 3 4 5 |
[root@localhost]# nano /home/seafile/conf/ccnet.conf SERVICE_URL = https://share.example.ru [root@localhost]# systemctl restart seafile [root@localhost]# systemctl restart seahub |