【server瞎折腾】CentOS部署同步盘Seafile

折腾一段时间后的总结 -于2018.1

开源网盘,尤其是想要同步盘功能的话,seafile和nextcloud算是比较好的两个选择。个人感觉seafile功能更强,有类似gitignore的能力,别的同步盘还没发现有这个能力的。但是对一般用户来讲,seafile的易用性是不如nextcloud的。nextcloud的交互体验确实做得很好,有商业软件的水准。seafile嘛...感觉是没有交互设计师参与的。

但是!搭建网盘服务一定不能忽视带宽的问题!国内的带宽是天价!我们个人随便用用的腾讯云、阿里云,带宽都是1Mbps的,实际上就是128KB/s,这个速度,对需要同步大文件的网盘来讲,是完全不够用的!不管是加带宽还是换成按流量购买,个人用户都不太扛得住。

如果用国外服务器,流量是着实便宜,我的搬瓦工vps每个月1T流量简直不要钱一样。但是国外便宜的vps硬盘往往比较小,另外服务器在国外的话,网络毕竟没有国内稳定,也是要考虑的!

折腾到底,跟朋友合买了Office 365,投奔了onedrive的怀抱。


Seafile是什么

Seafile 是一款开源的企业云盘,注重可靠性和性能。支持 Windows, Mac, Linux, iOS,
Android 平台。支持文件同步或者直接挂载到本地访问。

就是个开源的同步网盘。随着各种网盘的倒闭和百度云的堕落,靠谱的网盘是越来越少了。国外的要么被墙了要么速度慢,这时候在自己的服务器上搭建私人同步盘就是个不错的选择了。

目前比较流行的开源网盘也没几个,适合自建服务器上有SeafileownCloud,比较接近传统网盘。另外有个用于多客户端同步的Syncthing

Seafile这个网盘,功能还是很强大的,自动同步,还附带版本控制。就是界面丑了点,但是瑕不掩瑜。

本文介绍在CentOS 7上Seafile的部署流程。
完整资料建议查看官方手册

安装

安装

这里我选择的是最新的6.3.2版本,建议去下载页面查看linux服务端的最新版本,并替换下面的链接。

wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_6.3.2_x86-64.tar.gz
mkdir seafile
mv seafile-server_6.3.2_x86-64.tar.gz  seafile/
cd seafile/
tar xzf seafile-server_6.3.2_x86-64.tar.gz


yum -y install epel-release
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
yum -y install python-imaging MySQL-python python-memcached python-ldap python-urllib3 ffmpeg ffmpeg-devel
pip install --upgrade setuptools #为了保证moviepy安装成功
pip install pillow moviepy

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

安装完成后,默认文件服务(seafile)运行在8082端口,web管理页面(seahub)运行在8000端口。

修改seahub的端口

我的服务器上还有别的工具在运行,因此修改了seahub的端口号,并通过nginx的反向代理访问。
更改conf/ccnet.conf文件中SERVICE_URL和conf/gunicorn.conf中的bind即可修改端口号。

nginx反向代理

编辑/etc/nginx/nginx.conf,在中间找个地方插入下面的代码。一些关键词要改成自己的。

server {
    listen 80;
    server_name seafile.example.com;

    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;

         # used for view/edit office file via Office Online Server
         client_max_body_size 0;

         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_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_connect_timeout  36000s;
        proxy_read_timeout  36000s;
        proxy_send_timeout  36000s;

        send_timeout  36000s;
    }
    location /media {
        root /home/user/haiwen/seafile-server-latest/seahub;
    }
}

然后重启nginx

service nginx restart

这个时候在你配置的域名下就可以访问seafile了,需要登录后在管理后台修改两个字段,形如:

SERVICE_URL: http://www.myseafile.com
FILE_SERVER_ROOT: http://www.myseafile.com/seafhttp

开机启动

配置开机启动。CentOS 7支持systemctl,用这个就好了。

vim /etc/systemd/system/seafile.service

文件内容如下,注意把${seafile_dir}替换成自己的安装目录。User和Group替换成自己的,估计个人的话大部分都是root吧。

[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target


[Service]
Type=oneshot
ExecStart=${seafile_dir}/seafile-server-latest/seafile.sh start
# 如果seahub使用了nginx反代,请修改为 ExecStart=${seafile_dir}/seafile-server-latest/seahub.sh start-fastcgi
ExecStart=${seafile_dir}/seafile-server-latest/seahub.sh start
ExecStop=${seafile_dir}/seafile-server-latest/seafile.sh stop
ExecStop=${seafile_dir}/seafile-server-latest/seahub.sh stop
RemainAfterExit=yes
User=root
Group=root

[Install]
WantedBy=multi-user.target

刷新配置并开机启动

systemctl daemon-reload
systemctl enable seafile

结语

其实主要还是给自己个备忘。说起来,seafile的官方安装指引,很规范,但是对个人来说有些操作都比较累赘了。比如安装包专门放一个地方好维护,自启动脚本seafile和seahub分开。个人搭建的话随意一点也是可以的。

相关推荐