操作系统:Ubuntu Kylin 优麒麟 20.04 LTS
适用架构:AMD64、ARM64(鲲鹏、飞腾)
下载最新的服务器安装包,下载页面。ARM64请使用树莓派的版本
下载 seafile-server_* 后,复制到 /opt/seafile 目录下。 我们建议这样的目录结构:
sudo mkdir /opt/seafile
sudo cp seafile-server_* /opt/seafile
cd /opt/seafile
#将 seafile-server_* 移动到 seafile 目录下后,解压缩
sudo tar -xzf seafile-server_*
sudo mkdir installed
sudo mv seafile-server_* installed
现在,你的目录看起来应该像这样:
sudo tree /opt/seafile -L 2
/opt/seafile
├── installed
│ └── seafile-server_7.1.4_x86-64.tar.gz
└── seafile-server-7.1.4
├── check_init_admin.py
├── reset-admin.sh
├── runtime
├── seaf-fsck.sh
├── seaf-fuse.sh
├── seaf-gc.sh
├── seafile
├── seafile.sh
├── seahub
├── seahub.sh
├── setup-seafile-mysql.py
├── setup-seafile-mysql.sh
├── setup-seafile.sh
├── sql
└── upgrade
这样设计目录的好处在于
安装 Seafile 服务器之前,请确认已安装以下软件:
sudo apt update
sudo apt install python3 python3-setuptools python3-pip python3-ldap libmemcached-dev zlib1g-dev
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha
-i,这个参数表示使用镜像源加速。国外的网站有时只有10kB/s,实在是太慢了。国内的镜像是真良心。
清华,https://pypi.tuna.tsinghua.edu.cn/simple/
阿里,https://mirrors.aliyun.com/pypi/simple/
华为,https://mirrors.huaweicloud.com/python/
如果还没有安装 mysql 请执行一下步骤。
sudo apt install mysql-server mysql-client
登录 mysql。
sudo mysql
创建用户 seafile。
mysql> create user 'seafile'@'localhost' identified with mysql_native_password by 'yourPassWord';
这里,我们把加密类型设置成 mysql_native_password。
cd seafile-server-*
sudo ./setup-seafile-mysql.sh #运行安装脚本并回答预设问题
如果你的系统中没有安装上面的某个软件,那么 Seafile初始化脚本会提醒你安装相应的软件包.
该脚本会依次询问你一些问题,从而一步步引导你配置 Seafile 的各项参数:
在这里, 你会被要求选择一种创建 Seafile 数据库的方式:
-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------
[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases
如果安装正确完成,你会看到下面这样的输出 (新版本可能会有所不同)
现在你的目录结构看起来应该是这样:
sudo tree /opt/seafile -L 2
/opt/seafile
├── ccnet
├── conf
│ ├── ccnet.conf
│ ├── gunicorn.conf.py
│ ├── seafdav.conf
│ ├── seafile.conf
│ └── seahub_settings.py
├── installed
│ └── seafile-server_7.1.4_x86-64.tar.gz
├── seafile-data
│ └── library-template
├── seafile-server-7.1.4
│ ├── check_init_admin.py
│ ├── reset-admin.sh
│ ├── runtime
│ ├── seaf-fsck.sh
│ ├── seaf-fuse.sh
│ ├── seaf-gc.sh
│ ├── seafile
│ ├── seafile.sh
│ ├── seahub
│ ├── seahub.sh
│ ├── setup-seafile-mysql.py
│ ├── setup-seafile-mysql.sh
│ ├── setup-seafile.sh
│ ├── sql
│ └── upgrade
├── seafile-server-latest -> seafile-server-7.1.4
└── seahub-data
└── avatars
14 directories, 16 files
seafile-server-latest
文件夹为指向当前 Seafile 服务器文件夹的符号链接. 将来你升级到新版本后, 升级脚本会自动更新使其始终指向最新的 Seafile 服务器文件夹.
在 seafile-server-latest 目录下,运行如下命令
sudo ./seafile.sh start
sudo ./seahub.sh start
默认运行在127.0.0.1:8000端口上
你第一次启动 seahub 时,seahub.sh 脚本会提示你创建一个 seafile 管理员帐号。
至此,部署过程就完成了。
这时候如果报错了。“Error happened during creating seafile admin.”请先停止 seahub。
sudo ./seahub.sh stop
然后登录 mysql,查看 seafile 这个用户的密码加密类型。由于 mysql 8.0 默认采用 caching sha2 password,因此有些程序如果没有更新数据库驱动,可能会造成不兼容。这里可以修改加密类型。
sudo mysql
mysql> select user,host,plugin from mysql.user where user = 'seafile';
mysql> ALTER USER 'seafile'@'127.0.0.1' IDENTIFIED BY 'yourPassWord' PASSWORD EXPIRE NEVER;
mysql> ALTER USER 'seafile'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'yourPassWord';
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'seafile'@'127.0.0.1' IDENTIFIED BY 'yourPassWord';
确认一下加密类型。
mysql> select user,host,plugin from mysql.user where user = 'seafile';
mysql> quit;
注意:7.0.x 版本之后,8000端口默认监听在127.0.0.1地址上,这意味着您无法直接通过8000端口访问Seafile服务。建议您配置nginx反向代理。
恭喜! 现在你已经成功的安装了 Seafile 服务器。
默认情况下,Seafile 只从本地IP(127.0.0.1)访问,局域网内的其他计算机是无法访问的。为了实现文件共享,需要启用 Apache 或者 Nginx 的反向代理。这里选用的是 Nginx。
安装 Nginx。
sudo apt install nginx
验证是否成功,在浏览器输入本机的IP。
Seahub 是 Seafile 服务器的网站界面. SeafServer 用来处理浏览器端文件的上传与下载. 默认情况下, 它在 8082 端口上监听 HTTP 请求.
这里我们通过反向代理(Reverse Proxy)部署 SeafServer. 我们假设你已经将 Seahub 绑定了域名"www.myseafile.com".
下面是一个 Nginx 配置文件的例子。
Ubuntu 下你可以
创建文件 /etc/nginx/sites-available/seafile.conf ,
sudo nano /etc/nginx/sites-available/seafile.conf
并拷贝以下内容。
##
server {
listen 80;
server_name share.cn;
location / {
proxy_pass http://127.0.0.1:8000;
}
}
下一步,删除 /etc/nginx/sites-enabled/default :
sudo rm /etc/nginx/sites-enabled/default
创建符号链接:
sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
重启 nginx 服务
sudo systemctl restart ngnix
当客户端要访问服务器时,IP地址可能不好记忆,可以通过本地域名设置,方便客户端使用。
sudo nano /etc/hosts
添加上域名和 IP 地址
192.168.0.1 my.seafile.cn
保存退出后,重启浏览器或 App,客户端在访问服务器时就可以使用 http://my.seafile.cn 这种方式了。
为了管理方便,可以在 home 文件夹创建一个软链接。
ln -s /opt/seafile/seafile-server-latest ~/seafile
对于系统盘偏小的用户来说,存储大量数据是不可取的。推荐建立单独的磁盘阵列存储盘或网络存储。修改默认的数据存储路径,移动数据至磁盘阵列存储盘或网络存储。
Seafile 集群中,各seafile服务器节点之间数据共享的一个常用方法是使用NFS共享存储。在NFS上共享的对象应该只是文件,这里提供了一个关于如何共享和共享什么的教程。
如何配置NFS服务器和客户端超出了本wiki的范围,提供以下参考文献:
假设您使用了脚本安装,seafile的安装目录就是 /opt/seafile ,该目录下有一个 seafile-data 目录。并且,假如您挂载了NFS到 /seafile-stor 目录下,请按照如下几个步骤配置:
首先关闭 Seafile 的后台服务。
sudo /opt/seafile/seafile-server-latest/seahub.sh stop
sudo /opt/seafile/seafile-server-latest/seafile.sh stop
sudo mv /opt/seafile/seafile-data /seafile-stor/
集群中的每个节点上,为共享目录 seafile-data 设置一个软链接
ln -s /seafile-nfs/seafile-data /opt/seafile/seafile-data
这样,各seafile实例将共享同一个 seafile-data 目录。所有的其他配置文件和日志文件将保持独立。
Seafile 文件在服务器上通过分块存储,以支持大文件的断点续传和增量同步。不过这样做也带来了一个问题,存储的文件无法直接读取。为此,Seafile 提供了挂载工具,方便管理员维护数据。
创建一个供挂载用的文件夹。
sudo mkdir /media/seafolder
挂载 Seafile 存储的文件。
sudo /opt/seafile/seafile-server-latest/seaf-fuse.sh start /media/seafolder
完成后,从 /media/seafolder 就可以访问存储的文件了。
sudo apt install seafile-gui
导入密钥。
wget -O - http://linux-clients.seafile.com/seafile.key | sudo apt-key add -
添加软件源仓库。
sudo bash -c "echo 'deb http://linux-clients.seafile.com/seafile-deb/focal/ stable main' > /etc/apt/sources.list.d/seafile.list"
更新缓存。
sudo apt update
安装客户端
sudo apt install seafile-gui
从菜单栏点击“SeaFile”,启动程序。
填写服务器地址、用户名和密码。
下面还需要更新 SERVICE_URL 和 FILE_SERVER_ROOT 这两个配置项。否则无法通过 Web 正常的上传和下载文件。
5.0 版本开始,您可以直接通过管理员 Web 界面来设置这两个值 (注意,如果同时在 Web 界面和配置文件中设置了这个值,以 Web 界面的配置为准。):
SERVICE_URL: http://www.myseafile.com
FILE_SERVER_ROOT: http://www.myseafile.com/seafhttp
5.0 版本之前需要修改 ccnet.conf 文件和 seahub_settings.py 文件
SERVICE_URL = http://www.myseafile.com
(增加一行,这是一个 python 文件,注意引号)
FILE_SERVER_ROOT = 'http://www.myseafile.com/seafhttp'
./seafile.sh start
./seahub.sh start # 如果你使用 fastcgi 请使用此命令: ./seahub.sh start-fastcgi
如果你不想在默认的 8000 端口上运行 Seahub, 而是想自定义端口(比如8001)中运行,请按以下步骤操作:
6.3.0 及其之后的版本,我们弃用了 ./seahub.sh start <port> 的方式使seahub进程监听在其他端口。但是,您可以通过修改 conf/gunicorn.conf 中的端口设置来指定seahub启动端口。
./seahub.sh stop # 停止 Seafile 进程
./seafile.sh stop # 停止 Seahub
# default localhost:8000
bind = "0.0.0.0:8001"
./seafile.sh start # 启动 Seafile 服务
./seahub.sh start # 启动 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 -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程
pkill -f seafile-controller # 结束 Seafile 进程
pkill -f "seahub" # 结束 Seafile 进程