使用 Oracle 数据库部署 Seafile 专业版服务器

Ubuntu 14.04,可用以下命令安装全部依赖。

  1. sudo apt-get install openjdk-7-jre poppler-utils libpython2.7 python-pip \
  2. mysql-server python-setuptools python-imaging python-memcache python-dev \
  3. python-ldap python-urllib3
  4. sudo pip install boto

CentOS 7 下:

  1. wget https://bootstrap.pypa.io/get-pip.py
  2. sudo python get-pip.py
  3. sudo yum install java-1.7.0-openjdk poppler-utils python-setuptools \
  4. python-imaging python-memcached python-ldap \
  5. python-urllib3 python-devel gcc
  6. sudo pip install boto

补充说明: 关于 Java

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

安装 Oracle 客户端库

Oracle 官网 下载 basic, sqlplus, devel 三个 rpm 包。

在 CentOS/RedHat 下,

  1. sudo rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
  2. sudo rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
  3. sudo rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

在 Ubuntu 下,使用 alien 程序来安装 rpm 包。

  1. sudo apt-get install alien
  2. sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
  3. sudo alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
  4. sudo alien -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

安装之后,相应的文件所在路径:

  • 库:/usr/lib/oracle/12.1/client64/lib
  • 客户端程序:/usr/lib/oracle/12.1/client64/bin
    另外,在 /usr/bin 下面还有一个 sqlplus64 的符号链接指向 /usr/lib/oracle/12.1/client64/bin/sqlplus。

把 Oracle 库的路径加入 LD_LIBRARY_PATH:

  1. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib

设置 ORACLE_HOME 环境变量:

  1. export ORACLE_HOME=/usr/lib/oracle/12.1/client64

把上面两个配置加入到 ~/.bashrc 里面,以便重新登录之后仍然生效。

测试 sqlplus 客户端是否能工作:

  1. sqlplus64 seafile/seafile@192.168.1.178/XE

上述命令通过 seafile 用户和密码访问 Oracle 数据库。命令的格式为 sqlplus64 {user}/{password}@{server_address}/{service_name}service_name 是 Oracle 数据库在安装的时候设置的,可以咨询 DBA。

最后安装 Oracle python 客户端库 cx_Oracle

  1. sudo pip install cx_Oracle

Oracle数据库配置

推荐为 Seafile 服务器专门创建一个 Oracle 数据库用户和相应的 Tablespace,以便于管理。以下命令均在 SQLPlus 命令行里面执行。

创建给用户使用的 tablespace。该 tablespace 从20M开始,自动按需扩大。DBA 可以根据自己的需求和经验调整命令的参数。

  1. create tablespace seafile_ts datafile 'seafile_ts.dat' size 20M autoextend on;

创建用户(用户名 seafile,示例密码也是 seafile)并给予相应的权限,并关联 tablespace,限定最多使用 5GB 空间。Seafile 中有的表格会随着使用时间的增长而增长,比如用户的 session 表等,为了减少 tablespace 达到空间上限导致服务中断的可能性,我们建议给 tablespace 分配重组的空间。这些较大的表格可以定期清理,以减少空间使用。

  1. create user seafile identified by seafile default tablespace seafile_ts quota 5000M on seafile_ts;

赋予新用户权限。Seafile 服务器需要使用创建 Sequence 对象的权限。

  1. grant connect, create table, create sequence, create trigger to seafile;

下载与安装 Seafile 专业版服务器

获得许可证书

将您得到的许可证书放在顶层目录下。比如,在这篇文档页面里,我们把 /data/haiwen/ 作为顶层目录。

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

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

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

  1. haiwen
  2. ├── seafile-license.txt
  3. └── seafile-pro-server-2.1.5/

安装

我们先按照使用 SQLite 数据库的方式来完成安装,然后再手工配置使用 Oracle 数据库。

  1. cd seafile-server-*
  2. ./setup-seafile.sh #运行安装脚本并回答预设问题

如果你的系统中没有安装上面的某个软件,那么 Seafile 初始化脚本会提醒你安装相应的软件包。 该脚本会依次询问你一些问题,从而一步步引导你配置 Seafile 的各项参数。

参数 作用 说明

seafile server name
|
seafile 服务器的名字,目前该配置已经不再使用
|
3 ~ 15 个字符,可以用英文字母,数字,下划线

|
seafile server ip or domain
|
seafile 服务器的 IP 地址或者域名
|
客户端将通过这个 IP 或者地址来访问你的 Seafile 服务

|
seafile data dir
|
seafile 数据存放的目录,用上面的例子,默认将是 /data/haiwen/seafile-data
|
seafile 数据将随着使用而逐渐增加,请把它放在一个有足够大空闲空间的分区上

|
seafile fileserver port
|
seafile fileserver 使用的 TCP 端口
|
一般使用默认的 8082 端口,如果已经被占用,可以设置为其他的端口

如果安装正确完成,会打印成功消息

现在你的目录结构将会是如下:

  1. #tree haiwen -L 2
  2. haiwen
  3. ├── conf # configuration files
  4. ├── ccnet.conf
  5. └── seafile.conf
  6. └── seahub_settings.py
  7. └── seafdav.conf
  8. ├── ccnet
  9. ├── mykey.peer
  10. ├── PeerMgr
  11. └── seafile.ini
  12. ├── installed
  13. └── seafile-server_1.4.0_x86-64.tar.gz
  14. ├── seafile-data
  15. ├── seafile-server-1.4.0 # active version
  16. ├── reset-admin.sh
  17. ├── runtime
  18. ├── seafile
  19. ├── seafile.sh
  20. ├── seahub
  21. ├── seahub.sh
  22. ├── setup-seafile.sh
  23. └── upgrade
  24. ├── seafile-server-latest # symbolic link to seafile-server-1.4.0
  25. ├── seahub-data
  26. └── avatars
  27. ├── seahub.db

seafile-server-latest文件夹是当前 Seafile 服务器文件夹的符号链接.将来你升级到新版本后, 升级脚本会自动更新使其始终指向最新的 Seafile 服务器文件夹。

配置 Seafile 使用 Oracle 数据库

修改 haiwen/conf/ccnet.conf,加入以下选项:

  1. [Database]
  2. ENGINE = oracle
  3. HOST = 192.168.1.178
  4. USER = seafile
  5. PASSWD = seafile
  6. SERVICE_NAME = XE

HOST, USER, PASSWD 替换成你的环境中具体的值,SERVICE_NAME 是 Oracle 数据库实例的 service name,具体请咨询 DBA 并替换成你们的实际名称。

修改 haiwen/conf/seafile.conf,加入以下选项:

  1. [database]
  2. type = oracle
  3. host = 192.168.1.178
  4. user = seafile
  5. password = seafile
  6. service_name = XE

修改 haiwen/conf/seahub_settings.py,加入以下选项:

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.oracle',
  4. 'NAME': 'xe',
  5. 'USER': 'seafile',
  6. 'PASSWORD': 'seafile',
  7. 'HOST': '192.168.1.178',
  8. 'PORT': '1521',
  9. },
  10. 'OPTIONS': {
  11. 'threaded': True,
  12. },
  13. }

修改 haiwen/conf/seafevents.conf,加入以下选项:

  1. [DATABASE]
  2. type = oracle
  3. host = 192.168.1.178
  4. username = seafile
  5. password = seafile
  6. service_name = XE

在 Oracle 数据库中创建 Seafile 所需表格

在启动 seafile/ccnet 之前,需要先手工创建表格。创建表格的 SQL 语句在 seafile-server-latest/create-db/oracle 目录下面的 ccnet_db.sql, seafile_db.sql, seahub_db.sql 脚本里面。

你可以在 SQLPlus 命令行里面通过如下命令创建表格:

  1. SQL> @seafile_db.sql
  2. SQL> @ccnet_db.sql
  3. SQL> @seahub_db.sql

启动 Seafile 服务器

启动 Seafile 前,需要先删除一些 Seafile 自带的文件

在 seafile-server-latest 目录下,运行如下命令

  1. rm seafile/lib/libclntsh*

启动 Seafile 服务器和 Seahub 网站

在 seafile-server-latest 目录下,运行如下命令

  • 启动 Seafile:

    1. ./seafile.sh start # 启动 Seafile 服务
  • 启动 Seahub

    1. ./seahub.sh start <port> # 启动 Seahub 网站 (默认运行在8000端口上)

小贴士: 你第一次启动 seahub 时,seahub.sh 脚本会提示你创建一个 Seafile 管理员帐号。

服务启动后, 打开浏览器并输入以下地址

  1. http://192.168.1.111:8000/

你会被重定向到登陆页面. 输入管理员用户名和密码即可。

恭喜! 现在你已经成功的安装了 Seafile 服务器.

在另一端口上运行 Seahub

如果你不想在默认的 8000 端口上运行 Seahub, 而是想自定义端口(比如8001)中运行,请按以下步骤操作:

6.2.x 及其之前版本

  • 关闭 Seafile 服务器

    ./seahub.sh stop # 停止 Seafile 进程
    ./seafile.sh stop # 停止 Seahub

  • 更改haiwen/conf/ccnet.conf文件中SERVICE_URL 的值(假设你的 ip 或者域名时192.168.1.100), 如下 (从 5.0 版本开始,可以直接在管理员界面中设置。注意,如果同时在 Web 界面和配置文件中设置了这个值,以 Web 界面的配置为准。):

    SERVICE_URL = http://192.168.1.100:8001

  • 重启 Seafile 服务器

    ./seafile.sh start # 启动 Seafile 服务
    ./seahub.sh start 8001 # 启动 Seahub 网站 (运行在8001端口上)

6.3.x 及其以上版本

6.3.0 及其之后的版本,我们弃用了 ./seahub.sh start <port> 的方式使seahub进程监听在其他端口。但是,您可以通过修改 conf/gunicorn.conf 中的端口设置来指定seahub启动端口。

  • 关闭 Seafile 服务器

    ./seahub.sh stop # 停止 Seafile 进程
    ./seafile.sh stop # 停止 Seahub

  • 更改haiwen/conf/ccnet.conf文件中SERVICE_URL 的值(假设你的 ip 或者域名时192.168.1.100), 如下 (从 5.0 版本开始,可以直接在管理员界面中设置。注意,如果同时在 Web 界面和配置文件中设置了这个值,以 Web 界面的配置为准。):

    SERVICE_URL = http://192.168.1.100:8001

  • 修改conf/gunicorn.conf

default localhost:8000

bind = "0.0.0.0:8001"

  • 重启 Seafile 服务器

    ./seafile.sh start # 启动 Seafile 服务
    ./seahub.sh start # 启动 Seahub 网站 (运行在8001端口上)

关闭/重启 Seafile 和 Seahub

关闭

  1. ./seahub.sh stop # 停止 Seahub
  2. ./seafile.sh stop # 停止 Seafile 进程

重启

  1. ./seafile.sh restart # 停止当前的 Seafile 进程,然后重启 Seafile
  2. ./seahub.sh restart # 停止当前的 Seahub 进程,并在 8000 端口重新启动 Seahub

如果停止/重启的脚本运行失败

大多数情况下 seafile.sh seahub.sh 脚本可以正常工作。如果遇到问题:

  • 使用pgrep命令检查 seafile/seahub 进程是否还在运行中

    1. pgrep -f seafile-controller # 查看 Seafile 进程
    2. pgrep -f "seahub" # 查看 Seahub 进程
  • 使用pkill命令杀掉相关进程

    1. pkill -f seafile-controller # 结束 Seafile 进程
    2. pkill -f "seahub" # 结束 Seafile 进程

一键安装脚本下额外配置

如果你使用 一键安装脚本 部署的 Seafile,在完成上述配置之后,还需:

Ubuntu 16.04 root 用户下

/etc/init.d/seafile-server 文件中,在 fastcgi_port=8000case "$1" in 之间加入

  1. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib
  2. export ORACLE_HOME=/usr/lib/oracle/12.1/client64

Centos 7 root 用户下

  • 在 /etc/systemd/system/seafile.service 的 [Service] 配置中加入

Environment="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib"
Environment="ORACLE_HOME=/usr/lib/oracle/12.1/client64"

  • 在 /etc/systemd/system/seahub.service 的 [Service] 配置中加入

Environment="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib"
Environment="ORACLE_HOME=/usr/lib/oracle/12.1/client64"

  • 运行

systemctl enable seafile

OK!

查看seafile更多信息请访问:

原文: https://manual-cn.seafile.com/deploy_pro/oracle.html