Поиск по сайту:

Как установить Seafile с Nginx на CentOS 7


На этой странице

  1. Предпосылки
  2. Шаг 1. Подготовка CentOS для Seafile
  3. Шаг 2. Установите зависимости Seafile
  4. Шаг 3. Настройка MariaDB
  5. Шаг 4. Установите Seafile
  6. Шаг 5. Настройка службы Seafile и Seahub
  7. Шаг 6. Создание файлов сертификатов SSL
  8. Шаг 7. Настройте Nginx в качестве обратного прокси-сервера
  9. Шаг 8. Настройка FirewallD
  10. Шаг 9. Тестирование Seafile
  11. Заключение

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:

    1. ccnet_db
    2. seafile_db
    3. 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 легко настроить и внедрить на вашем собственном сервере.