本文基于你按照本博客给出的方式配置安装 Seafile, 你的系统为 CentOS 7, 默认用户为 root, 并且你对 CentOS 7 有一定的熟悉程度 (其他系统请自行搜索解决方案)
若你使用的是比較新的 Seafile 版本, 請閱讀此篇提示 :《新版本下的 Seafile》
1. 开机启动
对于经常玩 Linux 的同学来说, 重新启动将会变成一件非常普通的事情. 而每一次启动之后, 都要进入 Seafile 的目录, 启动 Seafile 是一件很麻烦的事情
我们需要在 /etc/systemd/system
创建 seafile.service
和 seahub.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
-
更改用户权限与新增用户
代码中的 guest
和 default
属于默认配置, 你可以更改其中的选项, 也可以复制下面的选项新增一个用户
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 扩展
待补充
自創文章, 原著 : Jonny, 如若需要轉發, 在已經授權的情況下請註明出處 :《Seafile 进阶玩法》https://jonny.vip/2017/08/22/seafile-%e8%bf%9b%e9%98%b6%e7%8e%a9%e6%b3%95/
Leave a Reply