部署 Seafile 专业版服务器 - 使用 Oracle 数据库部署
安装依赖库" class="reference-link">安装依赖库
Ubuntu 14.04,可用以下命令安装全部依赖。
sudo apt-get install openjdk-7-jre poppler-utils libpython2.7 python-pip
mysql-server python-setuptools python-imaging python-memcache python-dev
python-ldap python-urllib3
sudo pip install boto
CentOS 7 下:
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo yum install java-1.7.0-openjdk poppler-utils python-setuptools
python-imaging python-memcached python-ldap
python-urllib3 python-devel gcc
sudo pip install boto
补充说明: 关于 Java
注意:Seafile 专业版需要 java 1.7 以上版本, 请用 java -version
命令查看您系统中的默认 java 版本. 如果不是 java 7, 那么, 请 更新默认 java 版本.
安装 Oracle 客户端库
从 Oracle 官网 下载 basic
, sqlplus
, devel
三个 rpm 包。
在 CentOS/RedHat 下,
sudo rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
sudo rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
sudo rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
在 Ubuntu 下,使用 alien
程序来安装 rpm 包。
sudo apt-get install alien
sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
sudo alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
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
:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib
设置 ORACLE_HOME
环境变量:
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
把上面两个配置加入到 ~/.bashrc
里面,以便重新登录之后仍然生效。
测试 sqlplus 客户端是否能工作:
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
:
sudo pip install cx_Oracle
Oracle数据库配置" class="reference-link">Oracle数据库配置
推荐为 Seafile 服务器专门创建一个 Oracle 数据库用户和相应的 Tablespace,以便于管理。以下命令均在 SQLPlus 命令行里面执行。
创建给用户使用的 tablespace。该 tablespace 从20M开始,自动按需扩大。DBA 可以根据自己的需求和经验调整命令的参数。
create tablespace seafile_ts datafile 'seafile_ts.dat' size 20M autoextend on;
创建用户(用户名 seafile,示例密码也是 seafile)并给予相应的权限,并关联 tablespace,限定最多使用 5GB 空间。Seafile 中有的表格会随着使用时间的增长而增长,比如用户的 session 表等,为了减少 tablespace 达到空间上限导致服务中断的可能性,我们建议给 tablespace 分配重组的空间。这些较大的表格可以定期清理,以减少空间使用。
create user seafile identified by seafile default tablespace seafile_ts quota 5000M on seafile_ts;
赋予新用户权限。Seafile 服务器需要使用创建 Sequence 对象的权限。
grant connect, create table, create sequence, create trigger to seafile;
获得许可证书
将您得到的许可证书放在顶层目录下。比如,在这篇文档页面里,我们把 /data/haiwen/
作为顶层目录。
下载与解压 Seafile 专业版服务器" class="reference-link">下载与解压 Seafile 专业版服务器
tar xf seafile-pro-server_2.1.5_x86-64.tar.gz
现在您的目录结构应该像如下这样:
haiwen
├── seafile-license.txt
└── seafile-pro-server-2.1.5/
安装
我们先按照使用 SQLite 数据库的方式来完成安装,然后再手工配置使用 Oracle 数据库。
cd seafile-server-*
./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 端口,如果已经被占用,可以设置为其他的端口 |
如果安装正确完成,会打印成功消息
现在你的目录结构将会是如下:
#tree haiwen -L 2
haiwen
├── conf # configuration files
│ ├── ccnet.conf
│ └── seafile.conf
│ └── seahub_settings.py
│ └── seafdav.conf
├── ccnet
│ ├── mykey.peer
│ ├── PeerMgr
│ └── seafile.ini
├── installed
│ └── seafile-server_1.4.0_x86-64.tar.gz
├── seafile-data
├── seafile-server-1.4.0 # active version
│ ├── reset-admin.sh
│ ├── runtime
│ ├── seafile
│ ├── seafile.sh
│ ├── seahub
│ ├── seahub.sh
│ ├── setup-seafile.sh
│ └── upgrade
├── seafile-server-latest # symbolic link to seafile-server-1.4.0
├── seahub-data
│ └── avatars
├── seahub.db
seafile-server-latest
文件夹是当前 Seafile 服务器文件夹的符号链接.将来你升级到新版本后, 升级脚本会自动更新使其始终指向最新的 Seafile 服务器文件夹。
配置 Seafile 使用 Oracle 数据库
修改 haiwen/conf/ccnet.conf
,加入以下选项:
[Database]
ENGINE = oracle
HOST = 192.168.1.178
USER = seafile
PASSWD = seafile
SERVICE_NAME = XE
把 HOST
, USER
, PASSWD
替换成你的环境中具体的值,SERVICE_NAME
是 Oracle 数据库实例的 service name,具体请咨询 DBA 并替换成你们的实际名称。
修改 haiwen/conf/seafile.conf
,加入以下选项:
[database]
type = oracle
host = 192.168.1.178
user = seafile
password = seafile
service_name = XE
修改 haiwen/conf/seahub_settings.py
,加入以下选项:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'xe',
'USER': 'seafile',
'PASSWORD': 'seafile',
'HOST': '192.168.1.178',
'PORT': '1521',
},
'OPTIONS': {
'threaded': True,
},
}
修改 haiwen/conf/seafevents.conf
,加入以下选项:
[DATABASE]
type = oracle
host = 192.168.1.178
username = seafile
password = seafile
service_name = XE
在 Oracle 数据库中创建 Seafile 所需表格
在启动 seafile/ccnet 之前,需要先手工创建表格。创建表格的 SQL 语句在 seafile-server-latest/create-db/oracle
目录下面的 ccnet_db.sql
, seafile_db.sql
, seahub_db.sql
脚本里面。
你可以在 SQLPlus 命令行里面通过如下命令创建表格:
SQL> @seafile_db.sql
SQL> @ccnet_db.sql
SQL> @seahub_db.sql
启动 Seafile 前,需要先删除一些 Seafile 自带的文件
在 seafile-server-latest 目录下,运行如下命令
rm seafile/lib/libclntsh*
启动 Seafile 服务器和 Seahub 网站
在 seafile-server-latest 目录下,运行如下命令
- 启动 Seafile:
./seafile.sh start # 启动 Seafile 服务
- 启动 Seahub
./seahub.sh start <port> # 启动 Seahub 网站 (默认运行在8000端口上)
小贴士: 你第一次启动 seahub 时,seahub.sh
脚本会提示你创建一个 Seafile 管理员帐号。
服务启动后, 打开浏览器并输入以下地址
http://192.168.1.111:8000/
你会被重定向到登陆页面. 输入管理员用户名和密码即可。
恭喜! 现在你已经成功的安装了 Seafile 服务器.
在另一端口上运行 Seahub
如果你不想在默认的 8000 端口上运行 Seahub, 而是想自定义端口(比如8001)中运行,请按以下步骤操作:
- 关闭 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端口上)
关闭/重启 Seafile 和 Seahub
关闭
./seahub.sh stop # 停止 Seahub
./seafile.sh stop # 停止 Seafile 进程
重启
./seafile.sh restart # 停止当前的 Seafile 进程,然后重启 Seafile
./seahub.sh restart # 停止当前的 Seahub 进程,并在 8000 端口重新启动 Seahub
如果停止/重启的脚本运行失败
大多数情况下 seafile.sh seahub.sh 脚本可以正常工作。如果遇到问题:
- 使用pgrep命令检查 seafile/seahub 进程是否还在运行中
pgrep -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程
- 使用pkill命令杀掉相关进程
pkill -f seafile-controller # 结束 Seafile 进程
pkill -f "seahub" # 结束 Seafile 进程
一键安装脚本下额外配置
如果你使用 一键安装脚本 部署的 Seafile,在完成上述配置之后,还需:
Ubuntu 16.04 root 用户下
在 /etc/init.d/seafile-server
文件中,在 fastcgi_port=8000
与 case "$1" in
之间加入
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib
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更多信息请访问:
- Nginx 下配置 Seahub / Apache 下配置 Seahub
- Nginx 下启用 Https / Apache 下启用 Https
- Seafile LDAP配置
- 管理员手册