升级到 Pro 7.0

功能变更

文件历史

7.0 开始 Markdown, .txt, ppt, pptx, doc, docx, xls, xlsx 类型的文件历史会记录到数据库中,以便能快速的加载。如果你需要关闭这个功能或者修改文件列表,你可以在 seafevents.conf 配置文件中增加以下的配置信息:

[FILE HISTORY]
enabled = true
suffix = md,txt,...

该功能启动后 markdown, doc, docx 等格式文件的旧历史不会再列出来。只有新的记录到数据库的历史会被列出来。如果需要访问访问旧版的历史,可以在资料库历史镜像中找到。

文件活动记录

文件活动记录的功能已经重新设计。旧的历史记录不会被列出来。

Wikis

在 6.3 版本中, 维基功能默认是关闭的。开启后,用户可以创建私有的和公开的维基。7.0 版本中,私有维基功能被分栏查看模式取代。每一个资料库都有分栏查看模式。用户不需要再创建私有维基。

公开维基现在叫做公开资料库。

现在有两个角色权限来控制一个角色能否创建公开资料库。一个是外链权限,一个是发布资料库的权限。只有两个权限都开启的情况下,一个角色才能创建公开资料库。

加密资料库

加密资料库现在支持重置密码了。需要用选项打开 (seahub_settings.py):

ENABLE_RESET_ENCRYPTED_REPO_PASSWORD = True

此功能开启后,只对用户输入过密码的加密资料库有效。

升级方法

专业版 7.0 中 Elasticsearch 更新到了 5.6 版。Elasticsearch 5.6 需要 Java 8 环境,并且不能以 root 用户运行,你需要更改启动 Seafile 的用户,并且更新 Java 版本。

升级 Java 版本

从 6.3.x 升级到 7.0.x,您可能还需要升级 JDK 版本。

运行以下命令,查看当前 Java 版本信息:

java -version

如果当前 JDK 版本是 1.7.0,那么您需要升级到 1.8.0。升级到 openjdk-1.8.0 可以参考如下命令:

# For CentOS
yum install java-1.8.0-openjdk

# For Ubuntu
apt-get install openjdk-8-jre


并且,如果您之前是用 root 用户身份在运行 Seafile,那么您还需要切换到一个非 root 用户来运行,以便于升级到 Seafile 7.0.x 之后可以正常使用搜索功能。如果您之前已经使用非 root 用户在运行 Seafile,那么您就可以直接执行 Seafile 的升级过程了。

切换到非 root 用户

建议您使用 seafile 用户来运行 Seafile。具体操作可参考以下流程:

假设 Seafile 安装目录为: /opt/seafile

假设 Seafile data 目录为: /opt/seafile/seafile-data

停止Seafile服务

首先,您需要停止当前正在运行的 Seafile 服务。

cd /opt/seafile/seafile-server-latest
./seafile.sh stop
./seahub.sh stop

创建seafile用户

创建一个系统用户用来运行Seafile服务。建议该用户的用户名为 seafile:

useradd --system --comment "seafile" seafile --create-home --home-dir  /home/seafile

修改目录权限

修改 Seafile 安装目录和 Seafile data 目录的属主和属组为 seafile:

chown -R seafile.seafile /opt/seafile
chown -R seafile.seafile /opt/seafile/seafile-data
chown -R seafile.seafile /tmp/seafile-office-output

启动服务

su - seafile
cd /opt/seafile/seafile-server-latest
./seafile.sh start
./seahub.sh start

修改自启动脚本

如果您之前是使用 systemd 管理器实现开机启动:

[Unit]
Description=Seafile Server
After=network.target mariadb.service

[Service]
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
User=seafile
Group=seafile
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

[Unit]
Description=Seafile Seahub
After=network.target seafile.service

[Service]
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

systemctl daemon-reload

如果您之前是使用 init 脚本实现开机启动:

您需要修改 /etc/init.d/seafile-server

#!/bin/bash
### BEGIN INIT INFO
# Provides:          seafile-server
# Required-Start:    $remote_fs $syslog mysql
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Seafile server
# Description:       Start Seafile server
### END INIT INFO

# Author: Alexander Jackson <alexander.jackson@seafile.com.de>

# Change the value of "seafile_dir" to your path of seafile installation
user=seafile
seafile_dir=/opt/seafile
script_path=${seafile_dir}/seafile-server-latest
seafile_init_log=${seafile_dir}/logs/seafile.init.log
seahub_init_log=${seafile_dir}/logs/seahub.init.log

case "$1" in
        start)
                sudo -u ${user} ${script_path}/seafile.sh $1 >> ${seafile_init_log}
                sudo -u ${user} ${script_path}/seahub.sh $1 >> ${seahub_init_log}
        ;;
        restart)
                sudo -u ${user} ${script_path}/seafile.sh $1 >> ${seafile_init_log}
                sudo -u ${user} ${script_path}/seahub.sh $1 >> ${seahub_init_log}
        ;;
        stop)
                sudo -u ${user} ${script_path}/seafile.sh $1 >> ${seafile_init_log}
                sudo -u ${user} ${script_path}/seahub.sh $1 >> ${seahub_init_log}
        ;;
        *)
                echo "Usage: /etc/init.d/seafile-server {start|stop|restart}"
                exit 1
        ;;
esac

升级 Seafile

停止当前正在运行的 Seafile 服务:

su - seafile
cd /opt/seafile/seafile-server-latest
./seafile.sh stop
./seahub.sh stop

下载 Seafile 7.0.x 安装包并解压到 Seafile 安装目录 /opt/seafile 下;然后执行升级脚本:

cd /opt/seafile/seafile-pro-server-7.0.x/upgrade/
./upgrade_6.3_7.0.sh

升级脚本执行成功后,重启 Seafile 服务:

cd /opt/seafile/seafile-server-latest
./seafile.sh start
./seahub.sh start

常见问题

无法打开 Markdown 文件

升级到 7.0 之后,如果无法正常打开 Markdown 文件并且在 seahub.log 日志中发现如下报错信息。这可能是由于升级到 6.3 时忘了迁移文件注释引起的。

你可以删除 base_filecomment 表,并重建这个表。

CREATE TABLE `base_filecomment` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `author` varchar(255) NOT NULL,
  `comment` longtext NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  `uuid_id` char(32) NOT NULL,
  `detail` longtext NOT NULL,
  `resolved` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `base_filecomment_uuid_id_4f9a2ca2_fk_tags_fileuuidmap_uuid` (`uuid_id`),
  KEY `base_filecomment_author_8a4d7e91` (`author`),
  KEY `base_filecomment_resolved_e0717eca` (`resolved`),
  CONSTRAINT `base_filecomment_uuid_id_4f9a2ca2_fk_tags_fileuuidmap_uuid` FOREIGN KEY (`uuid_id`) REFERENCES `tags_fileuuidmap` (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Last modified by 2a3f608ae1614278a87369827c45fe22, 2020-01-08

功能变更
文件历史
文件活动记录
Wikis
加密资料库
升级方法
升级 Java 版本
切换到非 root 用户
升级 Seafile
常见问题
无法打开 Markdown 文件