部署 Seafile 服务器

本文档用来说明通过预编译好的安装包来安装并运行基于 MySQL/MariaDB 的 Seafile 服务器。(MariaDB 是 MySQL 的分支)

提示:如果您是初次部署 Seafile 服务,我们建议您使用自动安装脚本来快速部署一个 Seafile 服务。

服务器环境

  • Ubuntu 20.4 LTS
  • MySQL 8.0

下载

下载页面下载最新的服务器安装包.

部署和目录设计

假设你已经下载 seafile-server_* 到/yudo/seafile目录下。 我们建议这样的目录结构:

mkdir /yudo/seafile
mv seafile-server_* /yudo/seafile
cd /yodo/seafile
#将 seafile-server_* 移动到 seafile 目录下后
tar -xzf seafile-server_*
mkdir installed
mv seafile-server_* installed

现在,你的目录看起来应该像这样:

#tree seafile -L 2
haiwen
├── installed
│   └── seafile-server_7.0.0_x86-64.tar.gz
└── seafile-server-7.0.0
    ├── reset-admin.sh
    ├── runtime
    ├── seafile
    ├── seafile.sh
    ├── seahub
    ├── seahub.sh
    ├── setup-seafile-mysql.sh
    └── upgrade

这样设计目录的好处在于和seafile 相关的配置文件都可以放在 /opt/seafile/conf 目录下,便于集中管理.
后续升级时,你只需要解压最新的安装包到 /opt/seafile 目录下.

安装 Seafile 服务器

安装前的准备工作

Seafile 9.0.x 版本

# on Debian 10/Ubuntu 18.04/Ubuntu 20.04
# 执行此操作前确认是root权限
apt-get update
apt-get install python3 python3-setuptools python3-pip python3-ldap  libmysqlclient-dev  -y
apt-get install libmemcached-dev zlib1g-dev
pip3 install pycryptodome==3.12.0  
pip3 install cffi==1.14.0
pip3 install django==2.2.*
pip3 install future
pip3 install mysqlclient
pip3 install pymysql
pip3 install Pillow
pip3 install jinja2
pip3 install sqlalchemy==1.4.3
pip3 install psd-tools
pip3 install django-simple-captcha
pip3 install django-pylibmc # 此处如果失败,再执行全部脚本一次

注意:seafile 9.0.x 版本不支持在 Centos 系统 tar 包部署,支持 Docker 方式部署

安装

cd seafile-server-*
./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 数据库应该已经被你(或者其他人)提前创建。

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

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

#tree seafile -L 2
seafile
├── ccnet               # configuration files
│   ├── mykey.peer
│   ├── PeerMgr
│   └── seafile.ini
├── conf
│   └── ccnet.conf
│   └── seafile.conf
│   └── seahub_settings.py
│   └── gunicorn.conf
├── installed
│   └── seafile-server_7.0.0_x86-64.tar.gz
├── seafile-data
├── seafile-server-7.0.0  # active version
│   ├── reset-admin.sh
│   ├── runtime
│   ├── seafile
│   ├── seafile.sh
│   ├── seahub
│   ├── seahub.sh
│   ├── setup-seafile-mysql.sh
│   └── upgrade
├── seafile-server-latest  # symbolic link to seafile-server-7.0.0
├── seahub-data
│   └── avatars

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

启动 Seafile 服务器

启动 Seafile 服务器和 Seahub 网站

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

启动 Seafile:

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

启动 Seahub

./seahub.sh start  # 启动 Seahub 网站 (默认运行在127.0.0.1:8000端口上)

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

注意:7.0.x 版本之后,8000端口默认监听在127.0.0.1地址上,这意味着您无法直接通过8000端口访问Seafile服务。建议您配置nginx反向代理,或者修改配置文件监听0.0.0.0:8000

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

修改conf/gunicorn.conf

# default localhost:8000
bind = "0.0.0.0:8000"

重启 Seafile 服务器

关闭/重启 Seafile 和 Seahub

关闭

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

重启

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

配置开机启动

创建 systemd 服务管理文件,将以下示例中 ${seafile_dir} 替换为您自己的 seaile 安装路径,并且将 user 指向真正运行seafile的用户。然后您需要重新加载 systemd 的守护进程:systemctl daemon-reload。

创建 systemd 服务文件 /etc/systemd/system/seafile.service

sudo vi /etc/systemd/system/seafile.service

文件内容如下:

[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target

[Service]
Type=oneshot
ExecStart=${seafile_dir}/seafile-server-latest/seafile.sh start
ExecStop=${seafile_dir}/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=root
Group=root

[Install]
WantedBy=multi-user.target

创建 systemd 服务文件 /etc/systemd/system/seahub.service

sudo vi /etc/systemd/system/seahub.service

文件内容如下(如果你想要运行fastcgi模式,请不要忘记修改它。)

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=${seafile_dir}/seafile-server-latest/seahub.sh start
ExecStop=${seafile_dir}/seafile-server-latest/seahub.sh stop
User=root
Group=root
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

设置服务开机自启动

sudo systemctl enable seafile.service
sudo systemctl enable seahub.service
作者:李拜天  创建时间:2022-06-02 10:38
最后编辑:李拜天  更新时间:2023-01-17 14:40