容易踩的坑
解决依赖关系是安装seafile server的第一个坑。 官方提供的安装包,大部分依赖都已经打包在包里了, 只有seahub依赖的部分Python包,因为使用了C语言,编译安装时必须和Python的版本对应(这也是之前Windows版本必须安装指定版本python的原因),由于无法预知客户端的Python版本,所以无法包含在安装包中。
MySQL/Mariadb数据库配置是第二个坑。 有些系统安装的MySQL/Mariadb数据库,默认配置是不允许root用户通过网络连接服务器的,而安装脚本配置数据库一项有两个选项,分别是自动创建和使用已有的数据库,其中自动创建数据库需要使用root连接数据库。
开机自动启动时第三个坑。 由于每个人的安装路径和用户配置不同,Seafile安装包中无法附带现成的systemd服务脚本文件,致使部分新手无法配置开机自启动服务。
避坑之一:安装依赖
1. Seafile依赖说明
系统软件包:
- [x] python3
*
- [ ] sqlite3 / sqlite
*
- [ ] mysql-server
pythonr软件包:
- [x] Pillow
- [x] django-simple-captcha
- [x] captcha
- [ ] pylibmc
*
- [ ] python-ldap
*
- [ ] jinja2
- [ ] sqlalchemy
*
- [ ] psd-tools
解决依赖的工具:
- [x] 软件包管理系统 (yum / apt / pacman / portage 等)
*
- [x] pip
*
- [x] wheel
以上依赖,打勾的为必装,加粗加粗打星号表示推荐使用系统提供的软件包安装,下面理一理这些依赖软件(注:有些python包之所以推荐使用系统提供的包管理器安装,是因为他们基本都需要编译,并且有的软件包还依赖其他第三方的软件,若使用pip安装,需要安装其他依赖):
依赖(加粗为必装) | 说明 |
---|---|
软件包管理系统 | 这个一般系统装好都已经安装好了,这里之举例 apt 和 yum ,其他发行版大同小异,关键是弄清楚软件包名,不同的发行版会有所区别 |
pip | Python 的包管理器,推荐使用系统软件包安装,包名为 python3-pip |
wheel | Python 包的最新二进制格式支持,部分 Python 包安装时会先打包成 .whl 格式,需要这个包的功能 |
python3 | 使用系统软件包安装,包名为 python3 |
sqlite3 | 使用sqlite数据库时需要安装,apt中包名为 sqlite3 ,yum中包名为 sqlite |
mysql-server | 使用mysql数据库时要安装,若有其他可用的mysql服务,可以不装。这里推荐 mariadb-server ,因为各发行版都会提供 |
python-ldap | 需要使用ldap存储用户信息(通常在企业中使用)时要安装,推荐使用系统软件包 |
jinja2 | 这是 Python Web 开发的一套模板系统,功能、性能、安全性都比较强,不安装这个包并没发现什么影响,可能专业版需要 * |
sqlalchemy | Python 的一套功能强大的 ORM 系统,不安装没发现受到影响,可能专业版会用到。 |
pylibmc | Python 的 memcached 绑定,可以理解为 python 语言使用 memcached 服务的客户端,不使用 memcache加速的可以不用安装 * |
django-simple-captcha | Django的插件,生成表单验证码使用,虽然没看到哪个表单有验证码,但是这个插件必须安装,否则 seahub 会发生 500 内部服务器错误。 |
captcha | django-simple-captcha 的依赖,必须安装 |
Pillow | captcha 的依赖,必须安装 |
psd-tools | 用来支持 psd 文件(Photoshop 图片源文件), 相关依赖非常大(几百M) ^2 * |
*
从这次多出来的依赖来看,可能seafile团队打算使用flask今后将Seahub重写(胡乱猜测 -_-||)
*
memcached是需要额外配置的服务,通过将数据缓存在内存达到加速的目的,使用时需注意内存是否足够
*
psd-tools 我没有测试,可能只是用来在线预览,也可能支持在线简单编辑,有人测试了希望能给我反馈
2. 安装依赖
使用的 pip 为系统级 Python 环境, 如果使用 root 用户运行会造成升级系统的部分软件包,有可能会导致其他的系统软件依赖关系冲突,所以我们运行 pip 命令安装软件包的时候需要添加 --user 选项,把需要的包安装在用户家目录。
此外,使用 pip 安装 python 包的时候,会自行解决依赖关系,但是 在这里,由于 seafile-server 安装包自带的一部分依赖不宜被覆盖或升级,因此我们在安装依赖前应该把 seafile-server 自带的 Python 包让 pip 能识别,其方法是到处环境变量 PYTHONPATH
,使其执行自带的 python 包目录。
2.1 安装系统软件包
2.1.1准备工作
\(\color{red}{注意:}\) 此处假设起始路径为 /opt
,当前用户为 seafuser
,下载的安装包在用户家目录。
$ sudo mkdir seafile
$ sudo chown seafuser.seafuser seafile
$ cd seafile
$ tar xzf ~/seafile-server-7.1.3.tar.gz
$ export PYTHONPATH=/opt/seafile/seafile-server-7.1.3/seahub/thirdpart
2.1.2 安装必装软件
由于 Pillow 和 captcha 都处在 django-simple-captcha 的依赖链中,所以使用 pip 只要安装最后一个就行了。
使用 pip install --user
安装的 Python 包,会保存在家目录下的 .local/lib/python3.X/site-packages
其中 python3.X
以实际版本号代替。
-> Deb 系:
$ sudo apt update
$ sudo apt install -y python3 python3-pip python3-wheel
$ pip3 install --user django-simple-captcha
-> Rpm 系:
$ sudo yum install -y python3 python3-pip python3-wheel
$ pip3 install --user django-simple-captcha
2.1.3 根据需要安装其他软件包
-> Deb 系:
$ sudo apt install -y sqlite3
$ sudo apt install -y mariadb-server
$ sudo apt install -y pylibmc
$ sudo apt install -y sqlalchemy
$ sudo apt install -y python3-ldap
$ pip3 install --user jinja2
$ pip3 install --user psd-tools
-> Rpm 系:
$ sudo yum install -y sqlite3
$ sudo yum install -y mariadb-server
$ sudo yum install -y pylibmc
$ sudo yum install -y sqlalchemy
$ sudo yum install -y python3-ldap
$ pip3 install --user jinja2
$ pip3 install --user psd-tools
2.1.4 转移安装的 Python包
安装完成之后,需要把安装的软件包移到 seafile 文件夹中适当的位置,避免之后启动 seahub 出现依赖问题。
mv -f ~/.local/lib/python3.X/site-packages/* $PYTHONHOME
至此,依赖安装完毕,可以进行下一步了:
$ cd seafile-server-7.1.3
$ ./setup-seafile.sh # or ./setup-seafile-mysql.sh
避坑之二:配置 MySQL 数据库
安装Seafile Server 7.1.3 不完全避坑指南
原文地址:https://www.cnblogs.com/inpool/p/12616960.html