摘要訊息 : 在 CentOS 7 下安裝 Seafile 社區版教學.

0. 前言

本文是建立在你已经安装好 Nginx 和 MySQL 的情况下安装 Seafile, 本文的配图都为 Seafile 企业版的安装图片, 社区版和企业版在安装时候的配图相差不大.

建议大家采用最新的文章进行安装, 如果大家执意要在本文的教学下进行安装, 如果出现本文没有提及的问题, 可以参考 《新版本下的 Seafile》.

本文在 2022 年 3 月 16 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.

1. 下载

首先大家要去 Seafile 英文官网寻找下载地址 : https://www.seafile.com/en/download/. 看到 Linux 这边有 32 位和 64 位的下载地址, 因为 CentOS 7 基本都是 64 位, 所以截止发稿时间, 最新的下载地址是 https://download.seadrive.org/seafile-server_6.1.1_x86-64.tar.gz.

我们建立一个 cloud 目录, 建在 /www 目录下 : mkdir -p /www/cloud. 然后我们进入这个目录 cd /www/cloud. 进入这个目录之后, 就可以下载了 : wget https://download.seadrive.org/seafile-server_6.1.1_x86-64.tar.gz.

下载完之后需要解压 : tar zxvf seafile-server_6.1.1_x86-64.tar.gz.

2. 安装

我们需要安装基本的依赖软件 : yum install -y python-setuptools python-imaging python-ldap MySQL-python python-memcached python-urllib3.

接下来进入 Seafile 的目录 cd seafile-server-* 并且开始安装 : ./setup-seafile-mysql.sh.

Seafile 会对环境进行检查, 如果有哪个依赖软件没有安装的, 安装就不能继续进行. 如果依赖安装没有问题的, 就会显示如下界面, 可以直接按 Enter 键进入安装 :

Figure 1. 所有检查都已经通过

接下来有几个需要大家手动填写的选项 :

  • server name : 这个可以随意填写, 因为这个配置已经不再使用了;
  • server ip or domain : 填写服务器的 IP 或者 Seafile 绑定的域名;
  • data dir : Seafile 上载的档案存放的目录, 请保证有足够的空间;
  • seafile fileserver port : Seafile 文件同步的端口, 默认8082, 不建议更改.

之后是数据库的问题, 如果你之前有为 Seafile 创建过资料库就选择 Use existing ccnet/seafile/seahub databases, 否则就选择第一个建立新的资料库. 在这里会让你为 seafile 这个数据库用户创建一个独立的密码, 建议和 root 用户不同. 其他的直接按 Enter 键默认配置即可, 完成设置之后, 下面会有一个设置总览 :

Figure 2. 配置选项确认

确定没有问题之后按 Enter 键继续安装, 安装成功就会提示如下图片中的内容 :

Figure 3. 安装完成

现在已经可以通过启动 seafile.shseahub.sh 指令集. 但是我们的目的是在 Nginx 下配置 Seafile, 所以接下来我们为 Seafile 创建 Nginx 的配置文件 :

server {
    listen 80;
    server_name 替换为你的网域名称;
    proxy_set_header X-Forwarded-For $remote_addr;
    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;
    }
    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_request_buffering off;    # 关闭之后可以上传 4G 以上的大文件
    }
    location /media {
        root /www/cloud/seafile-server-latest/seahub;    # 这里替换成你 Seahub 的目录
    }
}

上面这份配置是不带有 SSL 的, 下面这份是带有 SSL 的 :

server {
    listen 80;
    server_name 替换为你的网域名称;
    rewrite ^ https://$http_host$request_uri? permanent;
}
server {
    listen 443;
    server_name 替换为你的网域名称;
    ssl on;
    ssl_certificate 替换;    # 这里替换成证书 .crt 文件的地址
    ssl_certificate_key 替换;    # 这里替换成证书 .key 文件的地址
    proxy_set_header X-Forwarded-For $remote_addr;
    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;
        fastcgi_param   HTTPS               on;
        fastcgi_param   HTTP_SCHEME         https;
        access_log /var/log/nginx/seahub.access.log;
        error_log /var/log/nginx/seahub.error.log;
    }
    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_request_buffering off;    # 关闭之后可以上传 4G 以上的大文件
    }
    location /media {
        root /www/cloud/seafile-server-latest/seahub;    # 这里替换成你 Seahub 的目录
    }
}

配置好 Nginx 之后, 因为是在 Nginx 下运行 Seafile, 所以还要对 Seafile 的一些配置文件进行修改 : 首先进入 Seafile 的配置目录 cd /www/cloud/conf, 找到 ccnet.conf 文件, 并且编辑修改 vim ccnet.conf, 找到 SERVICE_URL, 并且修改为 SERVICE_URL = http(s)://你的网域名称. 这里需要注意, 如果开启了 SSL 才使用 https, 否则使用 http 即可. 不过, 后面不需要加端口了. 保存退出之后, 找到 seahub_settings.py, 编辑修改 vim seahub_settings.py, 在最后加上 FILE_SERVER_ROOT = 'http(s)://你的网域名称/seafhttp' (注意单引号).

接下来就是启动 Seafile. 首先进入 Seafile 主目录 cd /www/cloud/seafile-server-*, 执行指令 ./seafile.sh start./seahub.sh start-fastcgi. 首次使用指令的时候, 会提示让你创建管理员账号, 按照提示创建即可. 然后输入域名, 就可以访问了 :

Figure 4. 成功访问