如何在 CentOS 7 上使用 Nginx 安装 Seafile如何在 CentOS 7 上使用 Nginx 安装 Seafile如何在 CentOS 7 上使用 Nginx 安装 Seafile如何在 CentOS 7 上使用 Nginx 安装 Seafile
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 CentOS 7 上使用 Nginx 安装 Seafile

在此页

  1. 先决条件
  2. 第 1 步 - 为 Seafile 准备 CentOS
  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 云中。因此,即使是服务器管理员也无法在没有密码的情况下查看您的加密数据。

在本教程中,我将在 CentOS 7 上安装 Seafile,使用 Nginx Web 服务器和 MariaDB 作为数据库服务器。

先决条件

  • CentOS 7 服务器
  • 根权限

第 1 步 - 为 Seafile 准备 CentOS

使用您的 ssh root 密码登录到 centOS 服务器。

ssh 
TYPE YOUR PASSWORD

    使用 vim 编辑 SELinux 配置文件。

    vim /etc/sysconfig/selinux

    用 disabled 替换 value enforcing。

    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。我们首先在我们的 CentOS 服务器上安装 EPEL 存储库。

    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

    输入您的根密码。

    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 root 密码已配置,我们现在可以登录 mysql shell。
    注意:MariaDB 命令行 shell 名为 mysql。

    我们将为 seafile 创建 3 个数据库:

    1. ccnet_db
    2. seafile_db
    3. seahub_db

    我们将使用密码 yourpassword 创建一个新用户 seacloud。用安全密码替换您的密码!

    使用 mysql 客户端登录到 mysql shell。

    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

    将上述命令中的 yourpassword 替换为您自己的密码。

    第 4 步 - 安装 Seafile

    在这一步中,我们将安装 Seafile。 Seafile 将在 nginx 用户下执行,因此我们可以使用 nginx 作为 seafile 和 seahub 服务的反向代理。

    我们将在 /var/www/seafile 目录下以 nginx 用户安装 seafile,创建该目录并使用 cd 进入。

    mkdir -p /var/www/seafile
    cd /var/www/seafile

    使用 wget 命令下载 Seafile,并解压缩下载的存档。

    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
    • 服务器 ip 或域 - 服务器的 ip 地址,在我的例子中是 192.168.1.115
    • 默认数据目录 - 只需按 Enter
    • 默认端口 - 按 Enter
    • 现在进行数据库配置,选择数字 2

    对于 MySQL 配置:

    • 使用默认主机 - localhost
    • 默认端口 - 3306
    • mysql 用户 - seacloud
    • 密码是 yourpassword
    • ccnet 数据库是 ccnet_db
    • seafile 数据库是 seafile_db
    • seahub 数据库是seahub_db

    按回车键,脚本将为 seafile 创建数据库表。

    现在我们可以启动 seafile 和 seahub 服务了。

    ./seafile.sh start
    ./seahub.sh start

    当执行 seahub.sh 文件时,我们将被要求提供管理配置。

    输入你的管理员邮箱和密码,seahub 服务就会运行。

    Seafile 现在已安装并运行,我们可以使用端口 8000 上的服务器 IP(在我的例子中是 192.168.1.115:8000)从 Web 浏览器访问 Seafile,但我们现在不会这样做,因为我们将使用反向代理seafile 服务器,我们将使用 systemd 服务文件运行 seafile。

    所以我们需要暂时停止 seafile 和 seahub 服务。

    ./seafile.sh stop
    ./seahub.sh stop

    第 5 步 - 配置 Seafile 和 Seahub 服务

    我们将以 nginx 用户运行 seafile,因此我们需要将 seafile 安装目录和 seahub_cache 目录的所有者更改为 nginx 用户:

    cd /var/www/
    chown -R nginx:nginx *
    chown -R nginx:nginx /tmp/seahub_cache

    接下来,转到 systemd 目录并使用 vim 创建一个 seafile.service 文件:

    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 服务并使用 systemctl 启动 seafile 和 seahub。

    systemctl daemon-reload
    systemctl start seafile
    systemctl start seahub

    确保没有错误并检查 seafile 和 seahub 服务是否在端口 8082 和 8000 上运行。

    netstat -plntu

    第 6 步 - 生成 SSL 证书文件

    对于本教程,我们将通过 Nginx 代理运行 seafile,Nginx 将提供安全 (HTTPS) 连接以确保数据安全。我们可以使用免费的 SSL 证书文件或付费的 SSL 证书,这与配置无关。在此步骤中,我将在 /etc/nginx/ssl 目录中生成一个带有 OpenSSL 的自签名 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-server 在端口 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

    使用 systemctl 命令启动 Nginx:

    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

    使用以下 firewall-cmd 命令将 HTTP 和 HTTPS 端口添加到防火墙配置中:

    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

    打开浏览器,输入 seafile 域名,在我的例子中是 cloud.natsume.co,您将被重定向到 https 连接。

    输入您的管理员电子邮件和密码,然后单击登录。

    Seafile 管理仪表板:

    Seafile 文件视图。

    使用 Nginx 作为反向代理和 SSL 的 Seafile 已成功安装在 CentOS 7 服务器上。

    结论

    在云应用五花八门的今天,Seafile 是一个适合这个时代使用的私有云解决方案。借助库/文件夹级别的加密功能,您可以将数据安全地存储在 Seacloud 服务器上。除此之外,Seafile 很容易在您自己的服务器上配置和实施。

    ©2015-2025 艾丽卡 support@alaica.com