升级Seafile到专业版,更换端口,开机启动

准备工作

安装 Java 运行时环境 (JRE)

如果您的系统环境是 Ubuntu 或者 Debian,执行以下命令:

1
sudo apt-get install openjdk-7-jre

如果您的系统环境是 CentOS 或者 Red Hat,执行以下命令:

1
sudo yum install java-1.7.0-openjdk

注意:您也可以使用 Oracle JRE.
注意:Seafile 专业版需要 java 1.7 以上版本, 请用 java -version 命令查看您系统中的默认 java 版本. 如果不是 java 7, 那么, 请 更新默认 java 版本。

安装 poppler-utils

poppler-utils 提供对 pdf 文件的全文检索功能。
如果您的系统环境是 Ubuntu 或者 Debian,执行以下命令:+

1
sudo apt-get install poppler-utils

如果您的系统环境是 CentOS 或者 Red Hat,执行以下命令:

1
sudo yum install poppler-utils

安装 Libreoffice 和 UNO 库

Libreoffice 和 Python-uno 库提供对办公文件的在线预览功能。如果它们没有安装,办公文件就不能在线预览。+
如果您的系统环境是 Ubuntu 或者 Debian,执行以下命令:

1
sudo apt-get install libreoffice python3-uno

如果您的系统环境是 CentOS 或者 RHEL,执行以下命令:

1
sudo yum install libreoffice libreoffice-headless libreoffice-pyuno

对于其他的 Linux 发行版您可以参考:Linux 下 LibreOffice 的安装
一般地,您还需要为您的使用语言安装字体,特别是在亚洲地区,否则 office 文件和 pdf 文件不能正确地显示。
比如, 中国的用户可能希望安装文泉驿系列的 TrueType 字体:

1
2
 如果您的系统环境是 Ubuntu 或者 Debian,执行以下命令:
sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy

迁移

我们假定您已经在 /data/haiwen/seafile-server-2.1.0 目录下部署了 Seafile 社区版服务器的 2.1.0 版本。

获得许可证书

将您获得的许可证书放在 Seafile 安装位置的顶层目录下。在我们的例子中,顶层目录是 /data/haiwen/
三人以下可以免费使用不用证书。

下载与解压 Seafile 专业版服务器

下载链接需要到官网转到英文版,然后注册账户才能看到。
下载地址
使用wget命令后tar命令解压
如果出现

1
2
3
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now

可能是只获取到了一个HTML文件
使用

1
filename.tar.gz

查看下文件类型
如果出现

1
filename.tar.gz: HTML document text

则需更换下载链接下载真正的tar.gz文件

您应该将压缩包解压到您的 Seafile 安装位置的顶层目录,在我们的例子中,顶层目录是 /data/haiwen

1
tar xf seafile-pro-server_2.1.0_x86-64.tar.gz

现在您的目录结构像如下这样:

1
2
3
4
5
6
7
8
9
haiwen
├── seafile-license.txt
├── seafile-pro-server-2.1.0/
├── seafile-server-2.1.0/
├── ccnet/
├── seafile-data/
├── seahub-data/
├── seahub.db
└── seahub_settings.py

您应该已经注意到社区版服务器和专业版服务器名字的不同。以 64 位的 2.1.0 版本为例:+

  • Seafile 社区版服务器压缩包叫作 seafile-server_2.1.0_x86-86.tar.gz;解压后,文件夹名叫作seafile-server-2.1.0
  • Seafile 专业版服务器压缩包叫作 seafile-pro-server_2.1.0_x86-86.tar.gz;解压后,文件夹名叫作seafile-pro-server-2.1.0

    迁移

  • 如果 Seafile 社区版服务器正在运行,请先停止它:

    1
    2
    3
    cd haiwen/seafile-server-2.1.0
    ./seafile.sh stop
    ./seahub.sh stop
  • 运行迁移脚本

    1
    2
    cd haiwen/seafile-pro-server-2.1.0/
    ./pro/pro.py setup --migrate

迁移脚本将会为您做以下的工作:

  • 确保您满足所有的先决条件
  • 创建必要的额外配置选项
  • 更新 avatar 目录
  • 创建额外的数据库表
    现在您的目录结构像如下这样:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    haiwen
    ├── seafile-license.txt
    ├── seafile-pro-server-2.1.0/
    ├── seafile-server-2.1.0/
    ├── ccnet/
    ├── seafile-data/
    ├── seahub-data/
    ├── seahub.db
    ├── seahub_settings.py
    └── pro-data/

启用 Seafile 专业版服务器

1
2
3
cd haiwen/seafile-pro-server-2.1.0
./seafile.sh start
./seahub.sh start

切换回社区版服务器

如果 Seafile 专业版服务器正在运行,请先停止它:

1
2
3
cd haiwen/seafile-pro-server-2.1.0/
./seafile.sh stop
./seahub.sh stop

更新 avatar 目录的链接,参考小版本升级

1
2
cd haiwen/seafile-server-2.1.0/
./upgrade/minor-upgrade.sh

启用 Seafile 社区版服务器

1
2
3
cd haiwen/seafile-server-2.1.0/
./seafile.sh start
./seahub.sh start

更换端口

Seafile 服务器由两个组件组成,默认情况下用到 8000, 8082 两个端口号 (TCP)。

配置文件

所有端口的相关配置都记录在ccnet.conf文件和seafile.conf文件中
这两个文件都在seafile-server目录下的conf文件夹。

seahub

seahub 是 Seafile 服务器的 Web 端。
注意:如果您改变了 Seahub 的端口号,”管理员界面->设置” 中的 SERVICE_URL 也需要做相应的改动。

  • 默认端口: 8000
  • 如何设置端口号: 编辑seafile.conf文件。 设置在seahub段下port的值.

    1
    2
    [seahub]
    port=8000
  • “管理员界面->设置” 中的 SERVICE_URL。比如, 如果您将端口号重新设置为 8001 ,那么更改SERVICE_URL的值如下:

    1
    SERVICE_URL = <您的 IP 或者域名>:8001

最后重启下seahub
切到seafile-serve文件夹

1
./seahub.sh restart 80

后面是更改的端口

seafile fileserver

seafile fileserver 负责为 Seahub 处理文件的上传和下载+

  • 默认端口: 8082
  • 如何设置端口号: 桌面客户端会连接这个端口来同步文件,所以不要修改这个端口。

开机启动 Seafile

Ubuntu 系统

使用 /etc/init.d/ 来配置 Seafile/Seahub 开机启动.

创建/etc/init.d/seafile-server脚本

1
sudo vim /etc/init.d/seafile-server

脚本内容为: (同时需要修改相应的user和script_dir字段的值)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash
### BEGIN INIT INFO
# Provides: seafile-server
# Required-Start: $remote_fs $syslog
# 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

# 请将 user 改为你的Linux用户名
user=haiwen

# 请将 script_dir 改为你的 Seafile 文件安装路径
seafile_dir=/data/haiwen
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

# 若使用 Nginx/Apache, 请将其设置为true, 否者为 false
fastcgi=true
# fastcgi 端口, 默认为 8000.
fastcgi_port=8000

case "$1" in
start)
sudo -u ${user} ${script_path}/seafile.sh start >> ${seafile_init_log}
if [ $fastcgi = true ];
then
sudo -u ${user} ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log}
else
sudo -u ${user} ${script_path}/seahub.sh start >> ${seahub_init_log}
fi
;;
restart)
sudo -u ${user} ${script_path}/seafile.sh restart >> ${seafile_init_log}
if [ $fastcgi = true ];
then
sudo -u ${user} ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log}
else
sudo -u ${user} ${script_path}/seahub.sh restart >> ${seahub_init_log}
fi
;;
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

注意: 如果使用本地 mysql 服务器,请把 # Required-Start: $remote_fs $syslog替换为# Required-Start: $remote_fs $syslog mysql

设置 seafile-sever 脚本为可执行文件

1
sudo chmod +x /etc/init.d/seafile-server

在 rc.d 中新增 seafile-server

1
sudo update-rc.d seafile-server defaults

完成

其他 Debian 系的 Linux 下

创建脚本/etc/init.d/seafile-server

1
sudo vim /etc/init.d/seafile-server

脚本内容为: (同时需要修改相应的user和script_path字段的值)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/sh

### BEGIN INIT INFO
# Provides: seafile-server
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts Seafile Server
# Description: starts Seafile Server
### END INIT INFO

# 请将 user 改为你的Linux用户名
user=haiwen

# 请将 script_path 改为你的 Seafile 文件安装路径
seafile_dir=/data/haiwen
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

# 若使用 fastcgi, 请将其设置为true
fastcgi=false
# fastcgi 端口, 默认为 8000.
fastcgi_port=8000

case "$1" in
start)
sudo -u ${user} ${script_path}/seafile.sh start >> ${seafile_init_log}
if [ $fastcgi = true ];
then
sudo -u ${user} ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log}
else
sudo -u ${user} ${script_path}/seahub.sh start >> ${seahub_init_log}
fi
;;
restart)
sudo -u ${user} ${script_path}/seafile.sh restart >> ${seafile_init_log}
if [ $fastcgi = true ];
then
sudo -u ${user} ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log}
else
sudo -u ${user} ${script_path}/seahub.sh restart >> ${seahub_init_log}
fi
;;
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 {start|stop|restart}"
exit 1
;;
esac

注意:

  • 如果你想在 fastcgi 下运行 Seahub,请设置fastcgi变量为true
  • 如果使用本地 mysql 服务器,请把# Required-Start: $remote_fs $syslog替换为 # Required-Start: $remote_fs $syslog mysql

    为日志文件创建目录

    1
    mkdir /path/to/seafile/dir/logs

设置 seafile-sever 脚本为可执行文件

1
sudo chmod +x /etc/init.d/seafile-server

在 rc.d 中新增 seafile-server

1
sudo update-rc.d seafile-server defaults

完成

RHEL/CentOS 系统统方法 1

RHEL/CentOS 下,/etc/rc.local 脚本会随系统开机自动执行,所以我们在这个脚本中设置启动 Seafile/Seahub.

  • 定位 python(python 2.6 or 2.7)

    1
    which python2.6 # or "which python2.7"
  • 在 /etc/rc.local 脚本中, 将 python2.6(2.7)路径加入到PATH字段中, 并增加 Seafile/Seahub 启动命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 假设 python 2.6(2.7) 可执行文件在 /usr/local/bin 目录下
    PATH=$PATH:/usr/local/bin/

    # 请将 user 改为你的Linux用户名
    user=haiwen

    # 请将 script_path 改为你的 Seafile 文件安装路径
    seafile_dir=/data/haiwen
    script_path=${seafile_dir}/seafile-server-latest

    sudo -u ${user} ${script_path}/seafile.sh start > /tmp/seafile.init.log 2>&1
    sudo -u ${user} ${script_path}/seahub.sh start > /tmp/seahub.init.log 2>&1

注意: 如果你想在fastcgi下启动Seahub,只需将上文中最后一行"seahub.sh start"改为"seahub.sh start-fastcgi"

RHEL/CentOS 系统方法 2

RHEL/CentOS 下 , 我们通过 /etc/init.d/ 脚本将 Seafile/Seahub作为服务程序随开机启动.

创建/etc/sysconfig/seafile文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 请将 user 改为你的Linux用户名
user=haiwen

# 请将 script_path 改为你的 Seafile 文件安装路径
seafile_dir=/home/haiwen
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

# 若使用 fastcgi, 请将其设置true
fastcgi=false

# fastcgi 端口, 默认为 8000.
fastcgi_port=8000

创建/etc/init.d/seafile文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/bash
#
# seafile

#
# chkconfig: - 68 32
# description: seafile

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

if [ -f /etc/sysconfig/seafile ];then
. /etc/sysconfig/seafile
else
echo "Config file /etc/sysconfig/seafile not found! Bye."
exit 200
fi

RETVAL=0

start() {
# Start daemons.
echo -n $"Starting seafile: "
ulimit -n 30000
su - ${user} -c"${script_path}/seafile.sh start >> ${seafile_init_log} 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/seafile
return $RETVAL
}

stop() {
echo -n $"Shutting down seafile: "
su - ${user} -c"${script_path}/seafile.sh stop >> ${seafile_init_log} 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seafile
return $RETVAL
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart}"
RETVAL=3
esac

exit $RETVAL

创建/etc/init.d/seahub脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash
#
# seahub

#
# chkconfig: - 69 31
# description: seahub

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

if [ -f /etc/sysconfig/seafile ];then
. /etc/sysconfig/seafile
else
echo "Config file /etc/sysconfig/seafile not found! Bye."
exit 200
fi

RETVAL=0

start() {
# Start daemons.
echo -n $"Starting seahub: "
ulimit -n 30000
if [ $fastcgi = true ];
then
su - ${user} -c"${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} 2>&1"
else
su - ${user} -c"${script_path}/seahub.sh start >> ${seahub_init_log} 2>&1"
fi
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/seahub
return $RETVAL
}

stop() {
echo -n $"Shutting down seafile: "
su - ${user} -c"${script_path}/seahub.sh stop >> ${seahub_init_log} 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seahub
return $RETVAL
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart}"
RETVAL=3
esac

exit $RETVAL

接下来启动服务程序:

1
2
3
4
5
6
chmod 550 /etc/init.d/seafile
chmod 550 /etc/init.d/seahub
chkconfig --add seafile
chkconfig --add seahub
chkconfig seahub on
chkconfig seafile on

执行:

1
2
service seafile start
service seahub start

完成

文章目录
  1. 1. 准备工作
    1. 1.1. 安装 Java 运行时环境 (JRE)
    2. 1.2. 安装 poppler-utils
    3. 1.3. 安装 Libreoffice 和 UNO 库
  2. 2. 迁移
    1. 2.1. 获得许可证书
    2. 2.2. 下载与解压 Seafile 专业版服务器
    3. 2.3. 迁移
    4. 2.4. 启用 Seafile 专业版服务器
    5. 2.5. 切换回社区版服务器
  3. 3. 更换端口
    1. 3.1. 配置文件
    2. 3.2. seahub
    3. 3.3. seafile fileserver
  4. 4. 开机启动 Seafile
    1. 4.1. Ubuntu 系统
      1. 4.1.1. 创建/etc/init.d/seafile-server脚本
      2. 4.1.2. 设置 seafile-sever 脚本为可执行文件
      3. 4.1.3. 在 rc.d 中新增 seafile-server
    2. 4.2. 其他 Debian 系的 Linux 下
      1. 4.2.1. 创建脚本/etc/init.d/seafile-server
      2. 4.2.2. 为日志文件创建目录
      3. 4.2.3. 设置 seafile-sever 脚本为可执行文件
      4. 4.2.4. 在 rc.d 中新增 seafile-server
    3. 4.3. RHEL/CentOS 系统统方法 1
    4. 4.4. RHEL/CentOS 系统方法 2
      1. 4.4.1. 创建/etc/sysconfig/seafile文件
      2. 4.4.2. 创建/etc/init.d/seafile文件
      3. 4.4.3. 创建/etc/init.d/seahub脚本
|