Как установить Seafile с Nginx на CentOS 7
На этой странице
- Предпосылки
- Шаг 1. Подготовка CentOS для Seafile
- Шаг 2. Установите зависимости Seafile
- Шаг 3. Настройка MariaDB
- Шаг 4. Установите Seafile
- Шаг 5. Настройка службы Seafile и Seahub
- Шаг 6. Создание файлов сертификатов SSL
- Шаг 7. Настройте Nginx в качестве обратного прокси-сервера
- Шаг 8. Настройка FirewallD
- Шаг 9. Тестирование Seafile
- Заключение
Seafile — это программное обеспечение для частного облака, которое предоставляет такие же функции, как Dropbox, mega.co.nz и другие, только размещенные на вашем собственном сервере. Seafile основан на языке программирования Python и выпущен под лицензией с открытым исходным кодом, так что вы можете создать свое собственное частное облако, и оно будет намного более безопасным.
Seafile поддерживает шифрование для безопасного хранения ваших данных. Для шифрования файлов в библиотеке хранения необходимо установить пароль при создании библиотеки. Пароль не будет храниться в облаке Seafile. Таким образом, даже администратор серверов не может просматривать ваши зашифрованные данные без пароля.
В этом руководстве я установлю Seafile на CentOS 7 с веб-сервером Nginx и MariaDB в качестве сервера базы данных.
Предпосылки
- Сервер CentOS 7
- Привилегии root
Шаг 1. Подготовьте CentOS для Seafile
Войдите на сервер CentOS, используя свой пароль root ssh.
ssh
TYPE YOUR PASSWORD
Отредактируйте файл конфигурации SELinux с помощью vim.
vim /etc/sysconfig/selinux
Замените принудительное применение значения отключенным.
SELINUX=disabled
Сохраните файл и выйдите из редактора.
Перезагрузите сервер, чтобы применить изменение политики SELinux.
reboot
Дождитесь перезагрузки сервера, затем снова войдите на сервер как пользователь root.
Проверьте selinux командой ниже:
getenforce
В результате вы должны увидеть Disabled.
Шаг 2 — Установите зависимости Seafile
Seafile основан на python, поэтому сначала нам нужно установить python для установки. Seafile поддерживает базы данных SQLite и MySQL/MariaDB. Здесь я буду использовать MariaDB в качестве базы данных для Seafile, поскольку она обеспечивает лучшую производительность, чем SQLite. Nginx используется в качестве обратного прокси-сервера для Seafile и Seahub.
На этом этапе мы установим несколько пакетов Python, MariaDB и Nginx. Начнем с установки репозитория EPEL на наш сервер CentOS.
yum -y install epel-release
Затем установите пакеты python, MariaDB и Nginx.
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx
Подождите, пока все пакеты не будут установлены.
Шаг 3 — Настройте MariaDB
На шаге 2 мы уже установили сервер MariaDB, теперь нам просто нужно запустить службу и настроить пароль root.
Запустите MariaDB и настройте пароль root с помощью следующих команд:
systemctl start mariadb
mysql_secure_installation
Введите пароль root.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Корневой пароль MariaDB настроен, и теперь мы можем войти в оболочку mysql.
Примечание. Оболочка командной строки MariaDB называется mysql.
Мы создадим 3 базы данных для seafile:
- ccnet_db
- seafile_db
- seahub_db
И создадим нового пользователя seacloud с паролем yourpassword. Замените свой пароль безопасным паролем!
Войдите в оболочку mysql с помощью клиента mysql.
mysql -u root -p
TYPE YOUR PASSWORD
Запустите запросы mysql ниже, чтобы создать базы данных и пользователя для установки Seafile.
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
create user identified by 'yourpassword';
flush privileges;
exit
Замените свой пароль в приведенных выше командах своим паролем.
Шаг 4 — Установите Seafile
На этом этапе мы установим Seafile. Seafile будет выполняться под пользователем nginx, поэтому мы можем использовать nginx в качестве обратного прокси-сервера для сервисов seafile и seahub.
Мы установим seafile под пользователем nginx в каталог /var/www/seafile, создадим этот каталог и войдем в него с помощью cd.
mkdir -p /var/www/seafile
cd /var/www/seafile
Загрузите Seafile с помощью команды wget и распакуйте загруженный архив.
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
tar -xzvf seafile-server_6.0.5_x86-64.tar.gz
Переименуйте каталог в seafile-server и перейдите в этот каталог.
mv seafile-server-6.0.5 seafile-server
cd seafile-server/
Запустите файл setup-seafile-mysql.sh, чтобы настроить базу данных.
./setup-seafile-mysql.sh
Нажмите Enter, и вам будет предложено ввести следующую информацию:
- имя сервера — я буду использовать имя хоста сервера natsume
- servers ip or domain - ip адрес сервера, в моем случае 192.168.1.115
- каталог данных по умолчанию — просто нажмите Enter
- порт по умолчанию – нажмите Enter
- Теперь для конфигурации базы данных выберите номер 2.
Для конфигурации MySQL:
- использовать хост по умолчанию — localhost
- порт по умолчанию – 3306.
- пользователь mysql – seacloud
- и пароль — это ваш пароль
- база данных ccnet — ccnet_db.
- база данных Seafile: seafile_db
- база данных Seahub: seahub_db.
Нажмите Enter, и скрипт создаст таблицы базы данных для файла seafile.
Теперь мы можем запустить службы seafile и seahub.
./seafile.sh start
./seahub.sh start
Когда файл seahub.sh будет выполнен, нас попросят указать конфигурацию администратора.
Введите адрес электронной почты и пароль администратора, после чего запустится служба seahub.
Теперь Seafile установлен и запущен, мы можем получить доступ к Seafile из веб-браузера с IP-адресом сервера на порту 8000 (в моем случае — 192.168.1.115:8000), но мы не будем этого делать сейчас, потому что мы будем использовать обратный прокси-сервер для seafile server, и мы запустим seafile с служебным файлом systemd.
Поэтому нам нужно пока остановить службы Seafile и Seahub.
./seafile.sh stop
./seahub.sh stop
Шаг 5. Настройте службы Seafile и Seahub.
Мы будем запускать seafile от имени пользователя nginx, поэтому нам нужно изменить владельца каталога установки seafile и каталога seahub_cache на пользователя nginx:
cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache
Затем перейдите в каталог systemd и создайте файл seafile.service с помощью vim:
cd /etc/systemd/system/
vim seafile.service
Вставьте конфигурацию службы Seafile ниже:
[Unit]
Description=Seafile Server
Before=seahub.service
After=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seafile.sh start
ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Сохранить и выйти.
Теперь создайте новый файл seahub.service.
vim seahub.service
И вставьте конфигурацию ниже.
[Unit]
Description=Seafile Hub
After=network.target seafile.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Сохранить и выйти.
Перезагрузите службу systemd и запустите seafile и seahub с помощью systemctl.
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
Убедитесь, что ошибки нет, и убедитесь, что службы Seafile и Seahub работают на портах 8082 и 8000.
netstat -plntu
Шаг 6. Сгенерируйте файлы SSL-сертификата
В этом руководстве мы запустим seafile через прокси-сервер Nginx, а Nginx обеспечит безопасные (HTTPS) соединения для безопасности данных. Мы можем использовать бесплатный файл сертификата SSL или платный сертификат SSL, это не имеет значения для конфигурации. На этом этапе я создам файл самозаверяющего SSL-сертификата с OpenSSL в каталоге /etc/nginx/ssl.
Создайте каталог ssl.
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
Создайте файлы самоподписанных сертификатов и файл dhparam с помощью команды ниже:
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt
Ответьте на данные сертификата в соответствии с запросом OpenSSL, такие как ваше имя, состояние, адрес электронной почты, доменное имя и т. д. Затем измените права доступа к каталогу и файлам сертификата.
chmod -R 700 /etc/nginx/ssl
chmod 400 server.*
chmod 400 dhparam.pem
Файлы сертификата SSL созданы.
Шаг 7. Настройте Nginx в качестве обратного прокси
На этом этапе мы настроим Nginx в качестве обратного прокси-сервера для сервера Seafile на портах 8000 и 8002.
Перейдите в каталог конфигурации nginx и создайте новый файл виртуального хоста для seafile.
cd /etc/nginx/
vim conf.d/seafile.conf
Вставьте конфигурацию виртуального хоста ниже:
server {
listen 80;
server_name cloud.natsume.co;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.natsume.co;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REMOTE_ADDR $remote_addr;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
# Reverse Proxy for seahub
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
#CHANGE THIS PATH WITH YOUR OWN DIRECTORY
location /media {
root /var/www/seafile/seafile-server/seahub;
}
}
Сохранить и выйти.
Я буду использовать cloud.natsume.co в качестве доменного имени. Пожалуйста, замените его своим собственным доменным именем в конфигурации выше.
Теперь протестируйте конфигурацию Nginx и убедитесь в отсутствии ошибок.
nginx -t
Запустите Nginx с помощью команды systemctl:
systemctl start nginx
Убедитесь, что порты 80 и 443 доступны в списке, который предоставляет netstat:
netstat -plntu
Далее нам нужно добавить доменное имя в конфигурацию seafile. Перейдите в каталог seafile и отредактируйте файл конфигурации.
cd /var/www/seafile/
vim conf/ccnet.conf
Измените URL службы на свое доменное имя.
SERVICE_URL = https://cloud.natsume.co
Сохранить и выйти.
Отредактируйте файл конфигурации Seahub.
vim conf/seahub_settings.py
Во второй строке добавьте конфигурацию ниже:
HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'
Снова замените доменное имя на свой домен. Сохранить и выйти.
Перезапустите seafile и добавьте все службы для запуска во время загрузки:
systemctl restart seafile
systemctl restart seahub
systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable seahub
Шаг 8 — Настройте FirewallD
На шаге 7 мы настроили Nginx для использования портов HTTP и HTTPS. Теперь нам нужно открыть эти порты в брандмауэре, добавив их в firewalld.
Запустите брандмауэр.
systemctl start firewalld
systemctl enable firewalld
Добавьте порт HTTP и HTTPS в конфигурацию брандмауэра с помощью команды firewall-cmd ниже:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
Перезагрузите конфигурацию брандмауэра и проверьте список портов.
firewall-cmd --reload
firewall-cmd --list-all
Шаг 9 — Тестирование Seafile
Откройте браузер, введите доменное имя морского файла, в моем случае cloud.natsume.co, и вы будете перенаправлены на https-соединение.
Введите адрес электронной почты и пароль администратора и нажмите «Войти».
Панель администратора Seafile:
Просмотр файла Seafile.
Seafile с Nginx в качестве обратного прокси и SSL успешно установлен на сервере CentOS 7.
Заключение
Благодаря большому разнообразию облачных приложений сегодня Seafile — это частное облачное решение, которое хорошо подходит для использования в наши дни. Благодаря функции шифрования на уровне библиотеки/папки вы можете безопасно хранить свои данные на сервере Seacloud. Кроме того, Seafile легко настроить и внедрить на вашем собственном сервере.