前言

  • 以前曾经写过关于搭建seafile的文章,那是使用sqlite3的,比较适合文件少的用户,可是如果用户多文件多就有点吃不消.这次顺便重新梳理一下整个流程,这里是使用香橙派PC+的ARMbian,从挂载硬盘到完成搭建服务器.
    由于从7.1.X开始已经舍弃了使用python2.7环境,而最新版本本人测试过有很多莫名其妙的问题,目前还没解决,所以这里使用的是7.0.5版本

新硬盘挂载流程

格式化硬盘

  1. 确认树莓派识别硬盘sudo fdisk -l | grep '^Disk'
  2. 确认硬盘格式:sudo blkid
  3. 把硬盘格式化成EXT4:sudo mkfs.ext4 /dev/sda

挂载硬盘

  1. 建立一个挂载点:sudo mkdir /media/usbhdd
  2. 设置目录的所有人和所有组sudo chown root:root /media/usbhdd
  3. 挂载:sudo mount -t ext4 /dev/sda /media/usbhdd
  4. 确认挂载:cd /media/usbhdd
  5. 卸载:sudo umount /media/usbhdd
  6. 开机自动挂载
    备份文件:sudo cp /etc/fstab /etc/fstab.bakup
    编辑文件:sudo nano /etc/fstab
    查看uuid:sudo blkid
    最后行加上:UUID=ec1da2aa-f4fc-4bbd-ba59-69b2319687cc /media/usbhdd ext4 defaults 0 0

安装并配置MySQL/MariaDB

(省略...)详细看这里

安装并配置phpMyAdmin

(最好按照LAMP环境配置教程做,不需要的可以省略)
详细看这里
需要注意的是,如果使用apt不能安装,那么可以去phpMyAdmin的官网直接下载安装版:

  1. 把它解压到opt目录下,把文件夹重命名为:phpmyadmin.例如我这里的路径是/opt/phpmyadmin
  2. apt install php-mysql
  3. ln -s /opt/phpadmin /var/www/html
  4. sysemctl restar apache2
  5. 浏览器输入:http://你的服务器IP/phpMyAdmin,看见管理界面则表示成功,如果提示错误则检查文件夹权限和依赖问题.

搭建seafile服务器

下载和解压安装包

(省略...)

安装依赖:

Seafile 7.0.x
on Ubuntu 16.04

apt-get update
apt-get install python2.7 python-setuptools python-mysqldb python-urllib3 python-ldap

on CentOS 7
yum install python python-setuptools MySQL-python python-urllib3 python-ldap

部署和目录设计

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

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

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

seafile
├── 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 目录下.

安装

cd seafile-server-*

./setup-seafile-mysql.sh
运行安装脚本并回答预设问题,其中当某个关于设置数据存放路径的(就是以后你存放云盘资料的地方)时候,注意记得填写为你的外挂硬盘上(或者你需要的分区),而这里是:/mnt/hdd0/seafile
在设置过程中,如果你的系统中没有安装上面的某个软件,那么 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 数据库应该已经被你(或者其他人)提前创建。

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

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

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

  • 在另一端口上运行 Seahub
    如果你不想在默认的 8000 端口上运行 Seahub, 而是想自定义端口(比如8001)中运行,请按以下步骤操作:
    6.3.0 及其之后的版本,我们弃用了 ./seahub.sh start <port> 的方式使seahub进程监听在其他端口。但是,您可以通过修改 conf/gunicorn.conf中的端口设置来指定seahub启动端口:

    1. 关闭服务器:
      ./seafile.sh stop
      ./seahub.sh stop
    2. 打开并修改conf/gunicorn.conf找到项目:bind = "127.0.0.1:8000"
    3. 修改成:bind = "0.0.0.0:8000"
    4. 重启seahub:
      ./seahub.sh start
      ./seafile.sh start

创建服务,让seafile开机自动运行

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

创建 systemd 服务文件seafile.service:sudo nano /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=opt/seafile/seafile-server-latest/seafile.sh start
ExecStop=opt/seafile/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=seafile
Group=seafile

[Install]
WantedBy=multi-user.target

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

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

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

[Install]
WantedBy=multi-user.target

开启seafile的WebDav功能

打开配置文件:/opt/seafile/conf/seafdav.conf,可以看见一下内容:

[WEBDAV]
enabled = false
port = 8080
fastcgi = false
share_name = /

enabled修改成:true,然后重启一下服务器即可.

补充

网上很多朋友也是遇到了头像不显示和无法更换的问题,我也遇到过,可是是有时候安装会出现这个问题,有时候又不会.网上很多方法,大家可以试试,反正我试过都没有效果.


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。