本文基于你按照本博客给出的方式配置安装 Seafile, 你的系统为 CentOS 7, 默认用户为 root, 并且你对 CentOS 7 有一定的熟悉程度 (其他系统请自行搜索解决方案)

若你使用的是比較新的 Seafile 版本, 請閱讀此篇提示 :《新版本下的 Seafile》

1. 开机启动

对于经常玩 Linux 的同学来说, 重新启动将会变成一件非常普通的事情. 而每一次启动之后, 都要进入 Seafile 的目录, 启动 Seafile 是一件很麻烦的事情

我们需要在 /etc/systemd/system 创建 seafile.serviceseahub.service

vim /etc/systemd/system/seafile.service

添加

[Unit]

Description=Seafile

After=network.target

[Service]

Type=oneshot

ExecStart=/www/cloud/seafile-server-latest/seafile.sh start

ExecStop=/www/cloud/seafile-server-latest/seafile.sh stop

RemainAfterExit=yes

User=root

[Install]

WantedBy=multi-user.target

vim /etc/systemd/system/seahub.service

添加

[Unit]

Description=Seafile hub

After=network.target seafile.service

[Service]

ExecStart=/www/cloud/seafile-server-latest/seahub.sh start-fastcgi

ExecStop=/www/cloud/seafile-server-latest/seahub.sh stop

User=root

Type=oneshot

RemainAfterExit=yes

[Install]

WantedBy=multi-user.target

完成之后我们重新加载 systemd 的守护进程

systemctl daemon-reload

之后就可以使用 systemctl 命令启动 Seafile

systemctl start seafile

systemctl start seahub

设定开机启动

systemctl enable seafile

systemctl enable seahub

取消开机启动

systemctl disable seafile

systemctl disable seahub

2. Logrotate

作用是剪切日志文件的时候可以不需要关闭服务器

Logrotate 默认存储在 /etc/logrotate.d

我们创建 Seafile 相关的文件

vim /etc/logrotate.d/seafile

添加

/www/cloud/logs/seaf-server.log

{

    daily

    missingok

    rotate 52

    compress

    delaycompress

    notifempty

    sharedscripts

    postrotate

    [ ! -f /www/cloud/pids/seaf-server.pid ] || kill -USR1 `cat /www/cloud/pids/seaf-server.pid`

    endscript

}

/www/cloud/logs/ccnet.log

{

    daily

    missingok

    rotate 52

    compress

    delaycompress

    notifempty

    sharedscripts

    postrotate

    [ ! -f /www/cloud/pids/ccnet.pid ] || kill -USR1 `cat /www/cloud/pids/ccnet.pid`

    endscript

}

3. Memcached

安装使用 Memcached 可以大幅度提高性能

首先需要安装相关依赖

yum install -y gcc libffi-devel python-devel openssl-devel libmemcached libmemcached-devel memcached

pip install pylibmc

pip install django-pylibmc

之后在 seahub_settings.py 中添加如下配置

CACHES = {

    'default': {

        'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',

        'LOCATION': '127.0.0.1:11211',

    }

}

4. 断点续传

这个功能对于我们来说非常有用, 有时候因为电脑或者网络的原因, 在上传文件的时候, 会意外断开. 如果没有这个功能, 我们只能重新上传, 那么有了断点续传, 我们就可以在上次停止的地方继续上传

seafile_settings.py 中添加如下配置

ENABLE_RESUMABLE_FILEUPLOAD = True

5. 用户角色与权限

  • 访客邀请功能

需要赋予用户 can_invite_guest 权限之外, 还需要在 seahub_settings.py 中添加

ENABLE_GUEST_INVITATION = True
  • 更改用户权限与新增用户

代码中的 guestdefault 属于默认配置, 你可以更改其中的选项, 也可以复制下面的选项新增一个用户

ENABLED_ROLE_PERMISSIONS = {

    'default': {

        'can_add_repo': True,

        'can_add_group': True,

        'can_view_org': True,

        'can_use_global_address_book': True,

        'can_generate_share_link': True,

        'can_generate_upload_link': True,

        'can_invite_guest': True,

        'can_connect_with_android_clients': True,

        'can_connect_with_ios_clients': True,

        'can_connect_with_desktop_clients': True,

        'role_quota': '',

    },

    'guest': {

        'can_add_repo': False,

        'can_add_group': False,

        'can_view_org': True,

        'can_use_global_address_book': False,

        'can_generate_share_link': False,

        'can_generate_upload_link': False,

        'can_invite_guest': False,

        'can_connect_with_android_clients': False,

        'can_connect_with_ios_clients': False,

        'can_connect_with_desktop_clients': False,

        'role_quota': '',

    }

}

6. 在线 Office

待补充

7. Office Online Server 集成

待补充

8. 病毒扫描

待补充

9. 多机构支持

可以像一个国家一样添加多个下属机构, 每一个机构中都可以有管理员 (类似于一个简化的组织)

我们需要在 seahub_settings.py 中添加如下配置

MULTI_INSTITUTION = True

EXTRA_MIDDLEWARE_CLASSES = (

    'seahub.institutions.middleware.InstitutionMiddleware',

)

之后可以在管理者界面看到 机构 的配置选项

10. 双重认证

开启双重认证基本上杜绝了盗号的可能, 就算知道密码也无法登陆

我们需要在 seahub_settings.py 中添加如下配置

ENABLE_TOW_FACTOR_AUTH = True
  • Twilio 集成

通过 Twilio 服务, 可以支持短信验证

首先需要安装依赖

pip install twilio

之后在 seahub_settings.py 中添加

TWO_FACTOR_SMS_GATEWAY = 'seahub_extra.two_factor.gateways.twilio.gateway.Twilio'

TWILIO_ACCOUNT_SID = '<your-account-sid>'

TWILIO_AUTH_TOKEN = '<your-auth-token>'

TWILIO_CALLER_ID = '<your-caller-id>'

EXTRA_MIDDLEWARE_CLASSES = (

    'seahub_extra.two_factor.gateways.twilio.middleware.ThreadLocals',

)

如果之前定义了

EXTRA_MIDDLEWARE_CLASSES = ()

需要替换成

EXTRA_MIDDLEWARE_CLASSES += ()

11. seafile.conf 的相关配置

  • 默认空间存储量设置

[quota]

default = 2 #单位为 G
  • 默认历史记录设置

[history]

keep_days = 30 #单位为 天
  • 文件服务器设置

[file server]

max_upload_size = 2048 #最大上传文件大小, 单位为 M

max_download_dir_size = 2048 #最大下载文件夹大小, 单位为 M

max_indexing_threads = 10 #并发线程数

fixed_block_size = 2 #文件切割块大小, 单位为 M

web_token_expire_time = 3600 #令牌过期时间
  • ZIP 编码问题

下载的文件夹可以打包为 .zip 格式, 默认编码为 UTF-8

但是 Windows 上默认不支持 UTF-8, 那么需要添加如下的配置

[zip]

windows_encoding = iso-8859-1
  • MySQL 连接池大小

[database]

max_connections = 200
  • 文件锁定自动过期时间

[file_lock]

default_expire_hours = 12 #单位为 小时

11. seahub_settings.py 相关配置

ENABLE_SETTINGS_VIA_WEB = False #禁用 Web 界面

SESSION_SAVE_EVERY_REQUEST = True #存储每次请求的会话数据

ENABLE_WIKI = True #开启个人 wiki 和群主 wiki

ENABLE_VIDEO_THUMBNAIL = True #开启视频缩略图

SITE_NAME = 'JonnyCloud' #网站标题

SITE_TITLE = 'Private File' #Tab 标题

ENABLE_SYS_ADMIN_VIEW_REPO = True #开启管理员浏览资料库

ENABLE_SHARE_LINK_AUDIT = True #未登录用户下载前提供 E-mail

ENABLE_UPLOAD_LINK_VIRUS_CHECK = True #开启文件上传后病毒扫描

ENABLE_TERMS_AND_CONDITIONS = True #开启用户使用前需要同意网站协议

VIRUS_SCAN_NOTIFY_LIST = ['user_a@jonny.vip', 'user_b@jonny.vip'] #病毒扫描通知 E-mail

12. seafevents.conf 相关配置

  • 审计日志

[AUDIT]

enable = true
  • 邮件通知

[SEAHUB EMAIL]

enable = true

interval = 30m #发送邮件间隔时间 : s(秒), m(分), h(小时), d(天)

13. 邮件发送

邮件提醒功能能够提供更好的用户体验

我们需要在 seahub_settings.py 中添加

EMAIL_USE_TLS = False

EMAIL_USE_SSL = False

EMAIL_HOST = 'smtp.domain.com' #smpt 服务器

EMAIL_HOST_USER = 'username@domain.com' #用户名和域名

EMAIL_HOST_PASSWORD = 'password' #密码

EMAIL_PORT = '25' #端口

DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

SERVER_EMAIL = EMAIL_HOST_USER

14. 自定义 Web

待补充

15. 日常维护

  • 数据库清理

cd /www/cloud/seafile-pro-server-x.x.x

./seahub.sh clearsession

然后登录到 MySQL

use seahub_db

DELETE FROM Event WHERE to_days(now()) - to_days(timestamp) > 90;
  • 备份与恢复

待补充

  • Seafile FSCK

简单来说, Seafile FSCK 能够帮助你恢复某些损坏了的对象

它首先会检查资料库的完整性, 并且删掉已经毁坏的资料库

然后将所有受损的资料恢复到最后一次正常的状态

最后导出数据库

cd /www/cloud/seafile-pro-server-x.x.x

./seaf-fsck.sh #以只读的方式检查资料库完整性

./seaf-fsck.sh --repair #修复资料库

当你想检查或者修复指定的资料库, 可以在后面添加参数

[library-id1] [library-id2]

[--repair|-r] [repo_id_1 [repo_id_2 ...]]

如果你想对资料库进行导出, 可以使用如下的命令

./seaf-fsck.sh --export path #其中 path 替换成路径

如果你想导出指定的资料库, 可以在后天添加参数

[library-id1] [library-id2]

  • Seafile GC

简单来说, Seafile GC 是一个用于垃圾回收的操作

cd /www/cloud/seafile-pro-server-x.x.x

如果你想仅仅查看 Seafile 在运行的过程中产生了多少垃圾, 你可以输入如下的命令

./seaf-gc.sh --dry-run

如果你想对指定的资料库进行查看, 你可以在后面添加参数

[repo-id1] [repo-id2]

直接运行 ./seaf-gc.sh 将会对垃圾进行回收

对指定的资料库的垃圾进行回收, 同样需要在后面添加参数

[repo-id1] [repo-id2]

如果你仅仅想删除第一类无用数据块 (属于删除的资料库), 而不想删除没有被删除的资料库产生的垃圾, 可以执行

./seaf-gc.sh -r

介绍一下其他关于 ./seaf-gc.sh 的命令

./seaf-gc.sh run #运行垃圾回收程式

./seaf-gc.sh verify #检查是否误删了还在使用的数据块

./seaf-gc.sh force #强制删除已经损坏的资料库

14. WebDAV 扩展

待补充

15. FUSE 扩展

待补充