seafile在linux上安装不难,但setup-seafile-mysql.sh对python版本、依赖包、mysql配置和selinux/firewalld极敏感,70%失败源于依赖缺失或端口/权限被拦;需严格匹配python2.7及配套模块,推荐使用已验证兼容树莓派os和centos 7的7.0.5稳定版,并完成mysql初始化、gunicorn.conf绑定修改、防火墙放行及日志排查。

直接上结论:Seafile 在 Linux 上安装不难,但setup-seafile-mysql.sh 脚本对 Python 版本、依赖包、MySQL 配置和 SELinux/firewalld 的敏感度极高,**70% 的失败都卡在依赖缺失或端口/权限被拦**。别急着填配置,先确保环境干净再动手。
Python 和系统依赖必须严格匹配版本
Seafile 6.x–7.0.x 主要依赖 python2.7(不是 python3),且要求配套模块如 MySQL-python、python-memcached、python-ldap 全部就位。CentOS 7 默认带 python2.7,但很多模块需手动装;Debian/Ubuntu 则要注意 python-mysqldb 包名是小写,不是 MySQLdb。
常见错误现象:
-
python-mysqldb is not installed:Debian/Ubuntu 执行sudo apt-get install python-mysqldb -
No module named MySQLdb:CentOS 7 执行sudo yum install MySQL-python -
ImportError: No module named PIL:补装python-imaging或python-pillow
注意:Seafile 7.1.0+ 强制要求 python3.5+,但树莓派等 ARM 设备上容易因编译失败卡住,**推荐用 7.0.5 稳定版**(已验证兼容树莓派 OS 和 CentOS 7)。
MySQL 初始化和权限配置不能跳过
Seafile 不接受空密码 root 用户,也不允许 MySQL 绑定到 127.0.0.1 后还拒绝本地 socket 连接。安装前必须完成三步:
- 启动 MariaDB/MySQL:
sudo systemctl start mariadb并设为开机自启 - 运行
mysql_secure_installation设置 root 密码(不能为空)、删匿名用户、禁远程 root - 确认
/etc/my.cnf中没有skip-networking,且bind-address未强制为127.0.0.1(否则setup-seafile-mysql.sh会连不上)
如果脚本中途报 Access denied for user 'root'@'localhost',大概率是 root 密码没设好,或 MySQL 用了 unix_socket 插件认证(CentOS 7 默认),此时需临时切到 auth_socket 模式重设密码。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
启动后局域网打不开?重点查 gunicorn.conf 和防火墙
Seafile 默认只监听 127.0.0.1:8000,树莓派或内网服务器装完,在其他电脑输 http://192.168.x.x:8000 打不开,就是这个原因。
解决方法:
- 编辑
conf/gunicorn.conf,把bind = "127.0.0.1:8000"改成bind = "0.0.0.0:8000" - CentOS 7 必须关 SELinux:
sudo setenforce 0+ 修改/etc/selinux/config中SELINUX=disabled - 放行端口:
firewall-cmd --permanent --add-port=8000/tcp和--add-port=8082/tcp(同步协议端口,客户端连不上常因它被拦)
改完记得重启服务:./seafile.sh restart && ./seahub.sh restart,不要只 restart seahub。
开机自启和日常维护的最小可行方案
别一上来就写 systemd unit 文件——容易因路径、用户、依赖顺序出错。先用最简方式跑稳:
- 写个
start-seafile.sh,内容两行:cd /path/to/seafile-server-x.x.x./seafile.sh start && ./seahub.sh start - 加执行权限:
chmod +x start-seafile.sh - 加入开机启动(CentOS/Debian 通用):
echo "/path/to/start-seafile.sh" >> /etc/rc.local(确保/etc/rc.local有执行权限)
真正容易被忽略的是日志位置:logs/seafile.log 和 logs/seahub.log,任何启动失败、登录白页、上传卡住,第一反应不是重装,而是翻这两个文件里最近的 ERROR 行。










