Seafile Pro 7.x 安装和使用遇到的问题

date
Oct 26, 2020
slug
Seafile-Pro-7-x-安装和使用遇到的问题
status
Published
tags
兴趣
summary
一直想要一个私人的云存储,目前主流解决方案都无法满足我随时随地登陆使用和数据自有的需求。经过对比几个开源云存储解决方案,我最终选择了中国大陆团队开发的 Seafile。在安装和使用 Seafile 的过程中不可避免的遇到了一些问题,本着 尽量不使用一键脚本 和 尽量搞懂每条命令背后作用 的初衷,将我个人的搭建过程和遇到的问题及解决方法记录如下,以供日后参考和学习。
type
Post
URL
一直想要一个私人的云存储,目前主流解决方案都无法满足我随时随地登陆使用和数据自有的需求。经过对比几个开源云存储解决方案,我最终选择了中国大陆团队开发的 Seafile。在安装和使用 Seafile 的过程中不可避免的遇到了一些问题,本着 尽量不使用一键脚本 和 尽量搞懂每条命令背后作用 的初衷,将我个人的搭建过程和遇到的问题及解决方法记录如下,以供日后参考和学习。
我使用的是一台配置为 1C 2G 30M 的腾讯云 Lighthouse 莫斯科 VPS,操作系统为 CentOS 8 x86_64。

Step 1 安装 aaPanel 与 LNMP 环境

虽然使用 aaPanel 有悖我 尽量不使用一键脚本 的初衷,但是 aaPanel 实在是太方便了()。
yum install -y wget && wget -O install.sh <http://www.aapanel.com/script/install_6.0_en.sh> && bash install.sh
然后通过 aaPanel 安装需要的基础环境:Nginx 1.19.2 + MySQL 5.7.31 + PHP-7.4 + phpMyAdmin 5.0。

Step 2 安装 Java 环境

这里有一个坑。 从 Seafile Pro 7.0 版本开始 Elasticsearch 更新到了 5.6 版,Elasticsearch 5.6 需要 Java 8 环境。原先安装的时候按照常规方法安装 Java 后启动 Seafile 出现严重故障,表现为 CPU 和 RAM 反覆飈至 100%。查询资料得知,为了安全起见,Java 8 不能以 root 用户运行,需要更改启动 Seafile 的用户。这个 Java 8 特性的坑 Seafile 文档暂未标明。
yum install java-1.8.0-openjdk

Step 3 安装 Python 环境

# on CentOS 8
yum install python3 python3-setuptools python3-pip python3-ldap -y
pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha
这里又有一坑。 Centos 8 运行这段命令会报错,起初我并不明白这段错误的原因,看报错内容以为是 Python3 和 pip3 的版本问题,尝试升级 Python3 和 pip3 仍未解决。 求助大佬,大佬给出的解决方法是:
vim ~/.pip/pip.conf

[global]
index-url = <https://pypi.tuna.tsinghua.edu.cn/simple>
[install]
trusted-host = <https://pypi.tuna.tsinghua.edu.cn>

curl <https://bootstrap.pypa.io/get-pip.py> | python3.6
可能是 pip 更新不完全的问题。使用清华源完全更新后不再报错,成功执行。

Step 4 安装 Seafile Pro

这部分参考 Seafile 官方文档即可,我将 Seafile 安装至 /opt/seafile 路径下。
mkdir /opt/seafile
mv seafile-pro-server_* seafile
cd /opt/seafile
#将 seafile-pro-server_* 移动到 /opt/seafile 目录下后
tar -xzf seafile-pro-server_*
mkdir installed
mv seafile-pro-server_* installed
现在,安装目录看起来应该像这样:
# tree . -L 2
.
├── installed
│   └── seafile-server_1.4.0_x86-64.tar.gz
└── seafile-server-1.4.0
    ├── reset-admin.sh
    ├── runtime
    ├── seafile
    ├── seafile.sh
    ├── seahub
    ├── seahub.sh
    ├── setup-seafile.sh
    └── upgrade
这样设计目录的好处在于:
  • 和 seafile 相关的配置文件都放在 seafile 目录下,便于集中管理。
  • 后续升级时,你只需要解压最新的安装包到 seafile 目录下。
受 Java 8 影响,需要新建一个 seafile 或者任何非 root 用户。
useradd --system --comment seafile seafile --create-home --home-dir /home/seafile
修改 Seafile 安装目录和 Seafile data 目录的属主和属组为 seafile
cd
chown -R seafile:seafile /opt/seafile
切换为 seafile 用户
su - seafile
cd /opt/seafile
cd seafile-pro-server-*
./setup-seafile-mysql.sh
运行安装脚本并回答预设问题。在 seafile-server-latest 目录下:
./seafile.sh start # 启动 Seafile 服务
./seahub.sh start # 启动 Seahub 网站 (默认运行在127.0.0.1:8000端口上)
第一次启动 seahub 时,seahub.sh 脚本会提示创建一个 seafile 管理员帐号。 7.0.x 版本之后,8000端口默认监听在127.0.0.1地址上,这意味着无法直接通过8000端口访问 Seafile 服务。建议配置 Nginx 反向代理。

Step 5 设置 Seafile 随系统自行启动

在路径下 /etc/systemd/system/seafile.service 新建 seafile.service 文件。填入内容:
[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
# 如果没有使用 memcached 则去掉 memcached.service
After=network.target mariadb.service memcached.service mysql.service

[Service]
Type=oneshot
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start
# 如果 seahub 使用了 nginx 反代,请修改为 ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start-fastcgi
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop
RemainAfterExit=yes
# User 和 Group 如果未建立 seafile 用户和用户组,则修改为 root,否则无法启动。
User=seafile
Group=seafile

[Install]
WantedBy=multi-user.target
使 systemctl 配置生效:
systemctl daemon-reload

systemctl start seafile #启动seafile
systemctl stop seafile #停止seafile
systemctl enable seafile #设置seafile随系统启动
systemctl is-enabled seafile #检查seafile是否已经设置为自启动
systemctl disable seafile #关闭seafile随系统启动
至此,Seafile 已经可以正常使用。其他遇到的坑将在今后进一步补充。

其他

低配置服务器在运行 Seafile Pro 时会发现内存和 Swap 占用极高,如果硬盘 io 受限会导致系统运行极其缓慢,这是由于搜索功能基于 Elasticsearch 服务,这是一个 Java 进程。 Java 运行会消耗大量内存,要修改 Java 堆内存大小,可以通过修改 jvm 配置文件来修改 Elasticsearch 使用的内存大小空间。例如,修改为 512m 内存空间。修改 seafile-server-latest/pro/elasticsearch/config/jvm.options 文件的以下配置项:
-Xms512m # 最小使用内存空间
-Xmx512m # 最大使用内存空间
### 建议将以上两个配置项的值设置为一样大小。
重启服务后生效。通过修改以上参数可以缓解内存和 Swap 被沾满导致的系统运行缓慢问题。如果不需要搜索和其他相关服务,可以进入 seafevents.conf 关闭。

参考资料:

© Meow 2020 - 2022