# Server
### Preparation
The following list is all the libraries you need to install on your machine. '''You should install all of them before you build seafile'''.
Package names are according to Ubuntu 12.04. For other Linux distros, please find their corresponding names yourself.
- libevent-dev (2.0 or later )
- libcurl4-openssl-dev (1.0.0 or later)
- libglib2.0-dev (2.28 or later)
- uuid-dev
- intltool (0.40 or later)
- libsqlite3-dev (3.7 or later)
- libmysqlclient-dev (5.5 or later)
- libarchive-dev
- libtool
- libjansson-dev
- valac
- libfuse-dev
The following libraries need to be compiled from source.
- libzdb [[http://www.tildeslash.com/libzdb/dist/libzdb-2.12.tar.gz](http://www.tildeslash.com/libzdb/dist/libzdb-2.12.tar.gz)]
- libevhtp [[https://github.com/ellzey/libevhtp/archive/1.1.6.zip](https://github.com/ellzey/libevhtp/archive/1.1.6.zip)]
libzdb relies on two packages: `re2c` and `flex`.libevhtp can be build by `cmake .; make; sudo make install`. libevhtp's version should be 1.1.6 or 1.1.7.
'''Seahub''' is the web front end of Seafile. It's written in the [[http://djangoproject.com](http://djangoproject.com) django] framework. Seahub requires Python 2.6(2.7) installed on your server, and it needs the following python libraries:
- [[https://www.djangoproject.com/download/1.5.2/tarball/](https://www.djangoproject.com/download/1.5.2/tarball/) django 1.5]
- [[https://github.com/djblets/djblets/tarball/release-0.6.14](https://github.com/djblets/djblets/tarball/release-0.6.14) djblets]
- sqlite3
- simplejson (python-simplejson)
- PIL (aka. python imaging library, python-image)
- chardet
- gunicorn
The module '''argparser''' is required by the `seafile-admin` script which you'll see later. If you use Python 2.7, '''argparser''' is distributed with python's standard library, so you don't need to install it. But if you use Python 2.6, you should install it manually.
Before continue, make sure you have all the above libraries available in your system.
### Prepare the directory layout
In the following sections, you'll be guided to build and setup the seafile server step by step. Seafile server is consisted of several components. In order for them to function correctly, you must:
- Follow our instructions step by step
- Make sure your directory layout is exactly the same with the guide in each step.
First create the top level directory. In the following sections, we'll use "/data/haiwen" as the top level directory.
~~~mkdir /data/haiwen/
cd /data/haiwen/
mkdir seafile-server
cd seafile-server
~~~
The currently layout is:
~~~haiwen/
└── seafile-server
~~~
### Get the source
First you should get the latest source of libsearpc/ccnet/seafile/seahub
Download the source tarball of the latest tag from
- [[https://github.com/haiwen/libsearpc/tags](https://github.com/haiwen/libsearpc/tags)]
- [[https://github.com/haiwen/ccnet/tags](https://github.com/haiwen/ccnet/tags)]
- [[https://github.com/haiwen/seafile/tags](https://github.com/haiwen/seafile/tags)]
- [[https://github.com/haiwen/seahub/tags](https://github.com/haiwen/seahub/tags)]
For example, if the latest released seafile client is 2.0.3, then just use the '''v2.0.3-server''' tags of the four projects. You should get four tarballs:
- libsearpc-2.0.3-server.tar.gz
- ccnet-2.0.3-server.tar.gz
- seafile-2.0.3-server.tar.gz
- seahub-2.0.3-server.tar.gz
Create a folder `haiwen/src`, and uncompress libsearpc/ccnet/seafile source to it.
~~~cd haiwen/seafile-server
mkdir src
cd src
tar xf /path/to/libsearpc-2.0.3-server.tar.gz
tar xf /path/to/ccnet-2.0.3-server.tar.gz
tar xf /path/to/seafile-2.0.3-server.tar.gz
~~~
And uncompress seahub tarball to `haiwen/seafile-server`:
~~~cd haiwen/seafile-server
tar xf /path/to/seahub-2.0.3-server.tar.gz
mv seahub-2.0.3-server seahub
~~~
So far, The current directory layout is:
~~~haiwen/
└── seafile-server
└── seahub
└── src
├── libsearpc-2.0.3-server
├── ccnet-2.0.3-server
├── seafile-2.0.3-server
├── ... (other files)
~~~
### Building
To build seafile server, you need first build '''libsearpc''' and '''ccnet'''.
##### libsearpc
~~~cd libsearpc-${version}
./autogen.sh
./configure
make
make install
~~~
##### ccnet
~~~cd ccnet-${version}
./autogen.sh
./configure --disable-client --enable-server # `export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig` if libsearpc is not found
make
make install
~~~
##### seafile
~~~cd seafile-${version}
./autogen.sh
./configure --disable-client --enable-server
make
make install
~~~
### Deploy Seafile Server
### Components of the Seafile Server
The seafile server consists of the following components:
| Process Name | Functionality |
|-----|-----|
| ccnet-server | underlying networking |
| seaf-server | data management |
| Seahub | website front-end of seafile server |
| fileserver | handles raw file upload/download for Seahub |
[[images/server-arch.png]]
- '''ccnet''' stores its configuration and metadata is a directory named `ccnet`.
- '''seaf-server''' store its configuration and data in a directory, normally named `seafile-data`.
- '''seahub''' is written in Django. If you have any experience with Django, you should know the `syncdb` command must be run to create all the database tables.
- An '''admin account''' has to be created, so that you, the admin, can login with this account to manage the server.
These are the essential steps to create the configuration:
- ensure seafile is already installed and all the python libraries seahub needs are installed.
- create the ccnet configuration with the '''ccnet-init''' program
- create the seafile configuration with '''seaf-server-init''' program
- run Django '''syncdb''' command for seahub
- create an admin account for the seafile server
To create the configurations, you can either:
- use the seafile-admin script(see below)
- [[create server configuration by hand]]
### Create Configurations with the seafile-admin script
`seafile-admin` should have been installed to system path after you have built and installed Seafile from source.
~~~usage: seafile-admin [-h] {setup,start,stop,reset-admin} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
{setup,start,stop,reset-admin}
setup setup the seafile server
start start the seafile server
stop stop the seafile server
reset-admin reset seafile admin account
~~~
Go to the top level directory(in this guide it's '''/data/haiwen/'''), and run '''seafile-admin setup''' to create all the configuration:
~~~cd /data/haiwen
export PYTHONPATH=/data/haiwen/seafile-server/seahub/thirdpart
seafile-admin setup
~~~
The script would ask you a series of questions, and create all the configuration for you.
| Name | Usage | Default | Requirement |
|-----|-----|-----|-----|
| server name | The name of the server that would be shown on the client | | 3 ~ 15 letters or digits |
| ip or domain | The ip address or domain name of the server | | Make sure to use the right ip or domain, or the client would have trouble connecting it |
| ccnet port | the tcp port used by ccnet | 10001 | |
| seafile port | tcp port used by seafile | 12001 | |
| seafile fileserver port | tcp port used by seafile fileserver | 8082 | |
| admin email | Email address of the admin account | | |
| admin password | password of the admin account | | |
This is a screenshot of the '''seafile-admin setup''' command:[[images/seafile-admin-1.png]]
And a screenshot after setup is finished successfully:[[images/seafile-admin-2.png]]
At this time, the directory layout would be like this:
~~~haiwen/
└── ccnet # ccnet config directory
└── ccnet.conf # ccnet config file
└── seafile-data # seafile configuration and data
└── seafile.conf # seafile config file
└── seahub-data/ # seahub data
└── seahub.db # seahub sqlite3 database
└── seahub_settings.py # custom settings for seahub
└── seafile-server
└── seahub/
└── seafile-{VERSION} # seafile source code
~~~
### Start the Seafile Server
After configuration successfully created, run '''seafile-admin start''' in the top directory to start the all components of Seafile. ( '''You should always run the seafile-admin script in the top directory''' ).
~~~cd /data/haiwen # go to the top level directory
seafile-admin start
~~~
At this moment, all the components should be running and seahub can be visited at '''[http://yourserver-ip-or-domain:8000](http://yourserver-ip-or-domain:8000)'''
'''Note''' You may want to deploy seahub with nginx or apache. In this case, follow the instructions on [[Deploy Seafile Web With Nginx/Apache]].
### Stop the Seafile Server
To stop seafile server, run '''seafile-admin stop'''.
~~~cd /data/haiwen # go to the top level directory
seafile-admin stop
~~~
### Upgrade the Seafile Server
When you want to upgrade to a new vesrion of seafile server, you need to:
- Stop the seafile server if it's running
~~~cd /data/haiwen
seafile-admin stop
~~~
- Get and latest source code and build libsearpc/ccnet/seafile, just as what you do in a fresh setup.
- Run the upgrade script. The upgrade script mainly updates database used by seafile for you. For example, create a new database table that is used in the latest seafile server but not in the previous version.
### Get and compile the latest libsearpc/ccnet/seafile
See the '''Building''' section above.
### Get the new seahub tarball and uncompress it
~~~cd haiwen/seafile-server
mv seahub/ seahub-old # move away the old seahub folder
tar xf /path/to/new/seahub-x.x.x-server.tar.gz
mv seahub-x.x.x-server seahub
~~~
### Do the upgrade
- copy the scripts/upgrade/ subdir outside
The upgrade scripts is distributed in the `scripts/upgrade` subdir of seafile source code, we need to copy it to '''seafile-server''' directory before run the scripts.
~~~cd /data/haiwen/seafile-server
cp -rf seafile-{version}/scripts/upgrade .
~~~
#### Continuous Upgrade (like from 1.1 to 1.2)
Continuous upgrade means to upgrade from one version of seafile server to the next version. For example, upgrading from 1.1.0 to 1.2.0 is a continuous upgrade.
'''Note:''' Minor upgrade, like upgrade from 1.3.0 to 1.3.1, is documented in a separate section below.
Say you are upgrading from 1.1.0 to 1.2.0, you should run the script '''upgrade_1.1_1.2.sh''' in `seafile-server` directory.
~~~cd /data/haiwen/seafile-server
./upgrade/upgrade_1.1_1.2.sh
~~~
#### Non-continous version upgrade(like from 1.1 to 1.3)
If you upgrade a few versions at once, e.g. from 1.1.0 to 1.3.0. The procedure is:
- upgrade from 1.1.0 to 1.2.0
- upgrade from 1.2.0 to 1.3.0
Just run the upgrade scripts in sequence.
#### Minor Upgrade (like from 1.3.0 to 1.3.1)
Minor upgrade Minor upgrade is like an upgrade from 1.3.0 to 1.3.1. For this type of upgrade, you only need to update the avatar link:
~~~cd /data/haiwen/seafile-server/seahub/media
cp -rf avatars/* ../../../seahub-data/avatars/
rm -rf avatars
ln -s ../../../seahub-data/avatars
~~~
### Problems Report
If you encounter any problem when building/deploying Seafile, please leave us a message or [[https://github.com/haiwen/seafile/issues](https://github.com/haiwen/seafile/issues) open an issue].
- 介紹
- 概覽
- Seafile 組件
- 研發路線圖
- 常見問題解答
- 修改日志
- 我要參與
- Linux 下部署 Seafile 服務器
- 部署 Seafile 服務器(使用 SQLite)
- 部署 Seafile 服務器(使用 MySQL)
- Nginx 下配置 Seahub
- Nginx 下啟用 Https
- Apache 下配置 Seahub
- Apache 下啟用 Https
- Seafile LDAP 配置
- 開機啟動 Seafile
- 防火墻設置
- Logrotate 管理系統日志
- 使用 Memcached
- 使用 NAT
- 非根域名下部署 Seahub
- 從 SQLite 遷移至 MySQL
- 安裝常見問題
- 升級
- Windows 下部署 Seafile 服務器
- 下載安裝 Windows 版 Seafile 服務器
- 安裝 Seafile 為 Windows 服務
- 所用端口說明
- 升級
- 從 Windows 遷移到 Linux
- 垃圾回收
- 部署 Seafile 專業版服務器
- 下載安裝 Seafile 專業版服務器
- 從社區版遷移至專業版
- 升級
- Amazon S3 下安裝
- OpenStackSwift 下安裝
- Ceph 下安裝
- 配置選項
- 文件搜索說明
- 集群部署
- 集群中啟用搜索和后臺服務
- NFS 下集群安裝
- 常見問題解答
- 軟件許可協議
- 服務器個性化配置
- ccnet.conf
- seafile.conf
- seahub_settings.py
- 發送郵件提醒
- 個性化郵件提醒
- 用戶管理
- 存儲容量與文件上傳/下載大小限制
- 自定義 Web
- 管理員手冊
- 賬戶管理
- 日志
- 備份與恢復
- Seafile FSCK
- Seafile GC
- WebDAV 和 FUSE 擴展
- WebDAV 擴展
- FUSE 擴展
- 安全選項
- 安全特性
- 日志和審計
- 開發文檔
- 編譯 Seafile
- Linux
- Windows
- Max OS X
- Server
- 開發環境
- 編程規范
- Web API
- Python API
- 數據模型
- 服務器組件
- 同步算法