您当前的位置:首页 > 计算机 > 系统应用 > Linux

SeaFile 的安装部署

时间:11-21来源:作者:点击数:

环境

操作系统: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 相关的配置文件都可以放在 /opt/seafile/conf 目录下,便于集中管理.
  • 后续升级时,你只需要解压最新的安装包到 /opt/seafile 目录下.

 

安装 Seafile 服务器

安装前的准备工作

安装 Seafile 服务器之前,请确认已安装以下软件:

Seafile 7.1.x 版本

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

如果还没有安装 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

  • 如果选择 1,你需要提供根密码. 脚本程序会创建数据库和用户。
  • 如果选择 2,ccnet/seafile/seahub 数据库应该已经被你(或者其他人)提前创建。

如果安装正确完成,你会看到下面这样的输出 (新版本可能会有所不同)



现在你的目录结构看起来应该是这样:

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 服务器

启动 Seafile 服务器和 Seahub 网站

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

  • 启动 Seafile 服务:

sudo ./seafile.sh start

  • 启动 Seahub 网站:

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 服务器。

 

使用 Nginx 实现网络访问

默认情况下,Seafile 只从本地IP(127.0.0.1)访问,局域网内的其他计算机是无法访问的。为了实现文件共享,需要启用 Apache 或者 Nginx 的反向代理。这里选用的是 Nginx。

安装 Nginx。

sudo apt install nginx

验证是否成功,在浏览器输入本机的IP。

Nginx 下配置 Seahub

Nginx 环境下部署 Seahub/SeafServer

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

文件存储路径

对于系统盘偏小的用户来说,存储大量数据是不可取的。推荐建立单独的磁盘阵列存储盘或网络存储。修改默认的数据存储路径,移动数据至磁盘阵列存储盘或网络存储。

NFS 下集群安装

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

  • 将 seafile-data 目录移动到 /seafile-stor 目录下:

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

Seafile的软件仓库

导入密钥。

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

下面还需要更新 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

TextHTMLCSSJavascriptCC++C#JavaPythonSqlSwift

5.0 版本之前需要修改 ccnet.conf 文件和 seahub_settings.py 文件

修改 ccnet.conf

SERVICE_URL = http://www.myseafile.com

TextHTMLCSSJavascriptCC++C#JavaPythonSqlSwift

修改 seahub_settings.py

(增加一行,这是一个 python 文件,注意引号)

FILE_SERVER_ROOT = 'http://www.myseafile.com/seafhttp'

TextHTMLCSSJavascriptCC++C#JavaPythonSqlSwift

启动 Seafile 和 Seahub

./seafile.sh start

./seahub.sh start # 如果你使用 fastcgi 请使用此命令: ./seahub.sh start-fastcgi

 

在另一端口上运行 Seahub

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

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

  • 关闭 Seafile 服务器

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

./seafile.sh stop # 停止 Seahub

 
  • 修改conf/gunicorn.conf

# default localhost:8000

bind = "0.0.0.0:8001"

  • 重启 Seafile 服务器

./seafile.sh start # 启动 Seafile 服务

./seahub.sh start # 启动 Seahub 网站

 

关闭/重启 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 进程

OK!

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门