Linux安装Seafile企业云盘详细教程
安装Seafile企业云盘应使用官网预编译tarball,避免apt安装导致版本滞后和模块缺失。解压时直接在目标目录操作,防止路径嵌套。MySQL配置需使用mysql_native_password插件并授权完整,编辑gunicorn.conf将绑定地址改为0.0.0.0并开放8000端口。
直接给出结论:不要使用 apt install seafile-server。官方源中的版本严重滞后,安装后容易缺失模块、启动失败,并出现大量报错。必须采用官网预编译的 tarball 安装方式。以下是经过完整验证的具体操作步骤。

为什么不能直接用 apt 或 yum 安装
Debian 和 Ubuntu 官方源中的 seafile-server 通常停留在 7.1.x,而当前稳定版已超过 12.0。版本严重滞后带来的直接问题包括:缺少 systemd 单元文件、Python 依赖混乱,常见报错有 ImportError: No module named 'django' 和 seaf-server not found。CentOS 和 RHEL 的 EPEL 包同样版本落后,且不兼容新版 MySQL 认证插件。官方文档反复强调:仅认可官网 tarball。
下载和解压 tarball 的关键细节
从 Seafile 官网下载页面获取 seafile-server_,注意不要下载 source、docker 或 GitHub Actions 构建包。解压后目录结构必须清晰:seafile-server- 目录下直接包含 setup-seafile.sh、seafile.sh、seahub.sh 等脚本。
- 错误操作:使用
tar -zxvf ... -C /opt指定路径,导致多出一层嵌套,./setup-seafile.sh无法找到自身位置 - 正确做法:在目标目录下直接执行
tar -zxvf seafile-server_*.tar.gz,不加-C参数 - 验证:进入解压目录后,
ls -l应看到conf/、seafile-data/、logs/等子目录为空(脚本会自动创建)
MySQL 配置最容易卡住的三个点
执行 setup-seafile-mysql.sh 时,在 “creating seafile database…” 阶段卡死,90% 的原因是 MySQL 权限或连接配置错误。需特别注意以下事项:
- 创建用户时必须使用
CREATE USER 'seafile'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';,CentOS 7 默认使用auth_socket插件,不兼容会导致卡住 - 授权语句中
CREATE、DROP、SELECT、INSERT、UPDATE、DELETE权限一个都不能少 - 脚本中填写数据库 host 时使用
localhost,不要写127.0.0.1,MySQL socket 连接逻辑不同,后者会导致失败 - 确认
/etc/my.cnf中没有skip-networking,且bind-address没有强制设置为127.0.0.1
启动后局域网打不开?修改 gunicorn.conf 和防火墙
默认 seahub 只监听 127.0.0.1:8000,其他机器访问 http:// 自然超时。解决步骤很简单:
- 编辑
conf/gunicorn.conf,将bind = "127.0.0.1:8000"改为bind = "0.0.0.0:8000" - Ubuntu/Debian 执行
sudo ufw allow 8000 - CentOS/RHEL 执行
sudo firewall-cmd --permanent --add-port=8000/tcp && sudo firewall-cmd --reload - 修改后重启服务:
./seafile.sh restart && ./seahub.sh restart
一个容易被忽视的细节:所有路径(conf/、seafile-data/、logs/)一旦由 setup-seafile.sh 创建,就不能移动或重命名,否则 seafile.sh 启动时会直接报错退出——因为它硬编码读取这些相对路径。
