menu 光风霁月。
基于 Seafile 搭建私有网盘实现文件共享
550 浏览 | 2020-07-11 | 阅读时间: 约 2 分钟 | 分类: 开发小工具 | 标签: Seafile
请注意,本文编写于 146 天前,最后修改于 146 天前,其中某些信息可能已经过时。

前言

Seafile 是一款开源的企业网盘,支持的平台十分全面,包括 Windows, Mac ,Linux ,Ios ,Android,支持文件同步或直接挂载到本地。我使用的场景是:同一个实验室内的小伙伴要做开发,共享文件资料只能通过QQ、微信、U盘,十分的不便。实验室内有几台服务器,通过 Seafile 便可以搭一个局域网环境下的文件、资料共享系统。

十分感谢 Seafile 为我们普通用户提供的服务,和它为开源事业做出的努力 官网链接

环境

  • Centos7 amd64 服务器一台
  • 实验室的交换机,路由器也可以
  • Seafile 、Nginx、Python3

下载和安装

安装 MySQL

Seafile 的运行是需要数据库的,它支持 SQLite 和 MySQL,这里选择 MySQL,因为实验室的服务器上已经安装好了。

没有安装的读者,可以参考这篇文章,我觉得写的比较规范和全面: https://blog.51cto.com/11261718/2465227

如果想要卸载旧版本,以便新版本的安装,可以参考我的这篇博客 https://www.henrenx.cn/archives/8/

为 Seafile 配置环境

下面的 cryptography 是官方文档中没有的,目的是支持 mysql 较新的密码策略,mysql 8.0 以上的建议安装。

# 安装 python3 和 pip3 环境
yum install python3 python3-setuptools python3-pip python3-ldap -y

# 安装 Seafile 的依赖
pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools
pip3 install --timeout=3600 django-pylibmc django-simple-captcha cryptography

下载和配置 Seafile

读者可点击链接进入 Seafile 的下载页面,在服务器端那里下载版本较新的压缩包(旧版本可能会出现较多问题)放到 /opt 目录下,目前的最新版本是 7.1.4。

下载完成后解压缩,目录结构如下:

除了红框中的两个目录,其他的都是后来初始化过程中生成的,不用在意。其中,installed 目录里面是下载好的压缩包,seafile-server-7.1.4 目录中是压缩包解压缩后的文件。

进入 seafile-server-7.1.4 目录,执行下面的命令:

./setup-seafile-mysql.sh  #运行安装脚本并回答预设问题

期间会让你输入服务名称、数据库密码等,根据提示完成相应的问题即可。

配置 Nginx

nginx 如何下载和安装可以参考我的这篇文章:https://www.henrenx.cn/archives/7/

这里给出关于 Seafile 部分的 nginx 配置,其中需要改动的地方就是 listen server_name 和 proxy_pass,我在下面的配置中做了标注,改为你的实际情况即可(比如路径中的版本号,端口等)

server { 
       listen 5000;    # 改
        server_name 192.168.1.104;   # 改
        proxy_set_header X-Forwarded-For $remote_addr;
        location / {
            proxy_pass http://127.0.0.1:8000;   # 改
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_read_timeout 1200s;
            client_max_body_size 0;
        }
        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;   # 改
            client_max_body_size 0;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout 36000s;
            proxy_read_timeout 36000s;
            proxy_send_timeout 36000s;
            proxy_request_buffering off;
            send_timeout 36000s;
        }
        location /media {
            root /opt/seafile/seafile-server-7.1.4/seahub;   # 改
        }
    }

配置防火墙

如果嫌麻烦,可以直接关闭防火墙。因为我是实验室的环境,都是内部人员使用,所以我就直接关了。如果是具有公网 IP 的服务器,不建议直接关闭,可以在 firewall-cmd 中添加端口。

关于如何添加端口,可以参考这篇文章 https://www.timeit.cn/post-326.html

启动服务

第一次启动 seahub 时,seahub.sh 脚本会提示你创建一个 seafile 管理员帐号。

./seafile.sh start   # 启动 Seafile 服务
./seahub.sh start  # 启动 Seahub 网站 

其他管理命令

./seahub.sh stop  # 停止 Seahub
./seafile.sh stop   # 停止 Seafile 进程

./seafile.sh restart   # 停止当前的 Seafile 进程,然后重启 Seafile
./seahub.sh restart  # 停止当前的 Seahub 进程,重新启动 Seahub

pgrep -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程

pkill -f seafile-controller # 结束 Seafile 进程
pkill -f "seahub" # 结束 Seafile 进程

功能体验

其他问题

头像不显示

可以考虑清理缓存

 rm -rf /tmp/seahub_cache/

如果清理缓存无效,可以考虑按照下图修改,把原来的那两行用 # 号注释掉,然后把 service_url + 删掉。

cd  /opt/seafile/seafile-server-7.1.4/seahub/seahub/avatar/templatetags
vim avatar_tags.py

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (共 1 条评论)

    2020-08-13 16:13
    可道云不香吗?配置更简单,国内的做的还不错