--- title: 升级Seafile到专业版,更换端口,开机启动 date: 2017-07-11 18:29:36 tags: - seafile - 端口 - 开机启动 --- ## 准备工作 ### 安装 Java 运行时环境 (JRE) 如果您的系统环境是 Ubuntu 或者 Debian,执行以下命令: ``` sudo apt-get install openjdk-7-jre ``` 如果您的系统环境是 CentOS 或者 Red Hat,执行以下命令: ``` 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,执行以下命令:+ ``` sudo apt-get install poppler-utils ``` 如果您的系统环境是 CentOS 或者 Red Hat,执行以下命令: ``` sudo yum install poppler-utils ``` ### 安装 Libreoffice 和 UNO 库 Libreoffice 和 Python-uno 库提供对办公文件的在线预览功能。如果它们没有安装,办公文件就不能在线预览。+ 如果您的系统环境是 Ubuntu 或者 Debian,执行以下命令: ``` sudo apt-get install libreoffice python3-uno ``` 如果您的系统环境是 CentOS 或者 RHEL,执行以下命令: ``` sudo yum install libreoffice libreoffice-headless libreoffice-pyuno ``` 对于其他的 Linux 发行版您可以参考:[Linux 下 LibreOffice 的安装](http://www.libreoffice.org/get-help/install-howto/) 一般地,您还需要为您的使用语言安装字体,特别是在亚洲地区,否则 office 文件和 pdf 文件不能正确地显示。 比如, 中国的用户可能希望安装文泉驿系列的 TrueType 字体: ``` 如果您的系统环境是 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 专业版服务器 下载链接需要到官网转到英文版,然后注册账户才能看到。 [下载地址](https://download.seafile.com/d/6e5297246c/?p=/pro) 使用wget命令后tar命令解压 如果出现 ``` bzip2: (stdin) is not a bzip2 file. tar: Child returned status 2 tar: Error is not recoverable: exiting now ``` 可能是只获取到了一个HTML文件 使用 ``` filename.tar.gz ``` 查看下文件类型 如果出现 ``` filename.tar.gz: HTML document text ``` 则需更换下载链接下载真正的tar.gz文件 您应该将压缩包解压到您的 Seafile 安装位置的顶层目录,在我们的例子中,顶层目录是 `/data/haiwen` 。 ``` tar xf seafile-pro-server_2.1.0_x86-64.tar.gz ``` 现在您的目录结构像如下这样: ``` 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 社区版服务器正在运行,请先停止它: ``` cd haiwen/seafile-server-2.1.0 ./seafile.sh stop ./seahub.sh stop ``` - 运行迁移脚本 ``` cd haiwen/seafile-pro-server-2.1.0/ ./pro/pro.py setup --migrate ``` 迁移脚本将会为您做以下的工作: - 确保您满足所有的先决条件 - 创建必要的额外配置选项 - 更新 avatar 目录 - 创建额外的数据库表 现在您的目录结构像如下这样: ``` 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 专业版服务器 ``` cd haiwen/seafile-pro-server-2.1.0 ./seafile.sh start ./seahub.sh start ``` ### 切换回社区版服务器 如果 Seafile 专业版服务器正在运行,请先停止它: ``` cd haiwen/seafile-pro-server-2.1.0/ ./seafile.sh stop ./seahub.sh stop ``` 更新 avatar 目录的链接,参考[小版本升级](https://github.com/haiwen/seafile/wiki/Upgrading-Seafile-Server#minor-upgrade-like-from-150-to-151) ``` cd haiwen/seafile-server-2.1.0/ ./upgrade/minor-upgrade.sh ``` 启用 Seafile 社区版服务器 ``` 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`的值. ``` [seahub] port=8000 ``` - "管理员界面->设置" 中的 SERVICE_URL。比如, 如果您将端口号重新设置为 8001 ,那么更改SERVICE_URL的值如下: ``` SERVICE_URL = <您的 IP 或者域名>:8001 ``` 最后重启下seahub 切到seafile-serve文件夹 ``` ./seahub.sh restart 80 ``` 后面是更改的端口 ### seafile fileserver `seafile fileserver` 负责为 Seahub 处理文件的上传和下载+ - 默认端口: 8082 - 如何设置端口号: 桌面客户端会连接这个端口来同步文件,所以不要修改这个端口。 ## 开机启动 Seafile ### Ubuntu 系统 使用 /etc/init.d/ 来配置 Seafile/Seahub 开机启动. #### 创建/etc/init.d/seafile-server脚本 ``` sudo vim /etc/init.d/seafile-server ``` 脚本内容为: (同时需要修改相应的user和script_dir字段的值) ```bash #!/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 脚本为可执行文件 ``` sudo chmod +x /etc/init.d/seafile-server ``` #### 在 rc.d 中新增 seafile-server ``` sudo update-rc.d seafile-server defaults ``` 完成 ### 其他 Debian 系的 Linux 下 #### 创建脚本/etc/init.d/seafile-server ``` sudo vim /etc/init.d/seafile-server ``` 脚本内容为: (同时需要修改相应的user和script_path字段的值) ```bash #!/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`。 #### 为日志文件创建目录 ``` mkdir /path/to/seafile/dir/logs ``` #### 设置 seafile-sever 脚本为可执行文件 ``` sudo chmod +x /etc/init.d/seafile-server ``` #### 在 rc.d 中新增 seafile-server ``` sudo update-rc.d seafile-server defaults ``` 完成 ### RHEL/CentOS 系统统方法 1 RHEL/CentOS 下,/etc/rc.local 脚本会随系统开机自动执行,所以我们在这个脚本中设置启动 Seafile/Seahub. - 定位 python(python 2.6 or 2.7) ``` which python2.6 # or "which python2.7" ``` - 在 /etc/rc.local 脚本中, 将 python2.6(2.7)路径加入到PATH字段中, 并增加 Seafile/Seahub 启动命令 ``` # 假设 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文件 ```bash # 请将 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文件 ```bash #!/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脚本 ```bash #!/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 ``` 接下来启动服务程序: ``` chmod 550 /etc/init.d/seafile chmod 550 /etc/init.d/seahub chkconfig --add seafile chkconfig --add seahub chkconfig seahub on chkconfig seafile on ``` 执行: ``` service seafile start service seahub start ``` 完成