Ubuntu 搭建 Seafile

部署 Seafile 服务器

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

下载

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

部署和目录设计

下载 seafile-server_6.2.5_* 到你的 /home/username 目录下。 建议这样的目录结构:

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

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

#tree seafile -L 2
seafile
├── installed
│   └── seafile-server_xxxx.tar.gz
└── seafile-server-xxx
    ├── reset-admin.sh
    ├── runtime
    ├── seafile
    ├── seafile.sh
    ├── seahub
    ├── seahub.sh
    ├── setup-seafile.sh
    └── upgrade

这样设计目录的好处在于

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

安装 Seafile 服务器

安装前的准备工作

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

  • MariaDB 或者 MySQL 服务器 (MariaDB 是 MySQL 的分支)
  • python 2.7 (从 Seafile 5.1 开始,python 版本最低要求为2.7)
  • python-setuptools
  • python-imaging
  • python-mysqldb
  • python-ldap
  • python-urllib3
  • python-memcache (或者 python-memcached)
# on Debian/Ubuntu 14.04 server
apt-get update
apt-get install python2.7 libpython2.7 python-setuptools python-imaging \
  python-ldap python-mysqldb python-memcache python-urllib3
# on Ubuntu 16.04 server
# As the default python binary on Ubuntu 16.04 server is python 3, we need to install python (python 2) first.
apt-get update
apt-get install python
apt-get install python2.7 libpython2.7 python-setuptools python-imaging python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache
pip install pillow moviepy
# on CentOS 7
yum -y install epel-release
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
yum -y install python-imaging MySQL-python python-memcached python-ldap python-urllib3 ffmpeg ffmpeg-devel
pip install pillow moviepy

安装

cd seafile-server-*
./setup-seafile-mysql.sh  #运行安装脚本并回答预设问题

如果你的系统中没有安装上面的某个软件,那么 Seafile初始化脚本会提醒你安装相应的软件包.

该脚本会依次询问你一些问题,从而一步步引导你配置 Seafile 的各项参数:

参数

作用

说明

seafile server name

seafile 服务器的名字,目前该配置已经不再使用

3 ~ 15 个字符,可以用英文字母,数字,下划线

seafile server ip or domain

seafile 服务器的 IP 地址或者域名

客户端将通过这个 IP 或者地址来访问你的 Seafile 服务

seafile data dir

seafile 数据存放的目录,用上面的例子,默认将是 /data/haiwen/seafile-data

seafile 数据将随着使用而逐渐增加,请把它放在一个有足够大空闲空间的分区上

seafile fileserver port

seafile fileserver 使用的 TCP 端口

该端口用于文件同步,请使用默认的 8082,不能更改。

在这里, 你会被要求选择一种创建 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
├── conf                # configuration files
│   ├── ccnet.conf
│   └── seafile.conf
│   └── seahub_settings.py
│   └── seafdav.conf
├── ccnet
│   ├── mykey.peer
│   ├── PeerMgr
│   └── seafile.ini
├── installed
│   └── seafile-server_xxx.tar.gz
├── seafile-data
├── seafile-server-xxx  # active version
│   ├── reset-admin.sh
│   ├── runtime
│   ├── seafile
│   ├── seafile.sh
│   ├── seahub
│   ├── seahub.sh
│   ├── setup-seafile.sh
│   └── upgrade
├── seafile-server-latest  # symbolic link to seafile-server-xxx
├── seahub-data
│   └── avatars

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

启动 Seafile 服务器

启动 Seafile 服务器和 Seahub 网站

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

  • 启动 Seafile:
./seafile.sh start # 启动 Seafile 服务
  • 启动 Seahub
./seahub.sh start <port>  # 启动 Seahub 网站 (默认运行在8000端口上)

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

服务启动后, 打开浏览器并输入以下地址

http://192.168.1.111:8000/

你会被重定向到登陆页面. 输入管理员用户名和密码即可。

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

在另一端口上运行 Seahub

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

  • 关闭 Seafile 服务器
./seahub.sh stop # 停止 Seafile 进程
./seafile.sh stop # 停止 Seahub
  • 更改haiwen/conf/ccnet.conf文件中SERVICE_URL 的值(假设你的 ip 或者域名是192.168.0.190), 如下 (从 5.0 版本开始,可以直接在管理员界面中设置。注意,如果同时在 Web 界面和配置文件中设置了这个值,以 Web 界面的配置为准。):
SERVICE_URL = http://192.168.0.190:8001
  • 重启 Seafile 服务器
./seafile.sh start # 启动 Seafile 服务
./seahub.sh start 8001 # 启动 Seahub 网站 (运行在8001端口上)

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

Seafile 其他相关信息

开机自启

使用 crontab 的 @reboot 设置开机自启,crontab -e 进去编辑页面添加:

@reboot /home/username/seafile/seafile-server-latest/seafile.sh start && /home/username/seafile/seafile-server-latest/seahub.sh start 8001

每天自动备份数据库

备份脚本位于 /home/username/seafile/backup 文件夹中,内容如下:

#!/bin/bash
user={数据库用户名}
pass={密码}
datetime=`date +"%Y-%m-%d-%H-%M-%S"`
mysqldump -u $user -p$pass --opt ccnet-db > /home/username/seafile/backup/databases/ccnet/ccnet-db.sql.$datetime
mysqldump -u $user -p$pass --opt seafile-db > /home/username/seafile/backup/databases/seafile/seafile-db.sql.$datetime
mysqldump -u $user -p$pass --opt seahub-db > /home/username/seafile/backup/databases/seahub/seahub-db.sql.$datetime

在 crontab 设置定时任务每天自动备份数据库:

0 1 * * * bash /home/username/seafile/backup/databases/seafile_backup.sh 2>&1 &

恢复备份数据库

/home/username/seafile/backup/databases 文件夹下有三个文件夹 ccnetseafileseahub分别储存不同库的备份数据,需要依次恢复三个数据库数据:

mysql -u[username] -p[password] ccnet-db < ccnet-db.sql.2013-10-19-16-00-05
mysql -u[username] -p[password] seafile-db < seafile-db.sql.2013-10-19-16-00-20
mysql -u[username] -p[password] seahub-db < seahub-db.sql.2013-10-19-16-01-05

Nginx 反向代理外网访问

首先需要有一台有公网 IP 的服务器,然后用 OpenVPN 搭建 VPN 网络,为内网机器分配 IP:10.8.0.190。详细方法参考:Ubuntu 架设 OpenVPN 实现内网穿透

  1. 在 Seafile 所在机器添加以下 Nginx 配置进行反向代理,使得内网访问 192.168.0.190 即可访问 Seafile 主页:
server {
    listen 80;
    server_name 192.168.0.190 10.8.0.190 seafile.xxx.xxx;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://192.168.0.190:8001;
        proxy_redirect default;
    }
}
  1. 在有公网 IP 机器上添加以下 Nginx 配置:
server {
    listen 80;
    server_name seafile.xxxx.xxx;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://10.8.0.190;
    }
}
server {
    listen 8082;
    server_name seafile.xxx.xxx;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://10.8.0.190:8082;
        proxy_redirect default;
    }
}

域名内网访问走内网

  1. 首先需要使用 Padavan 老毛子路由器系统;
  2. 进入路由器后台打开 内部网络 (LAN) - DHCP 服务器;
  1. 添加路由器 hosts 规则并设置路由器 DNS 地址,并点击应用本页面设置:1192.168.0.190 seafile.xxx.xxx
  1. 进入 广告屏蔽功能 - Adbyby,启用 Adbyby 功能并开启重定向 DNS,重定向地址设为 192.168.0.1:

修复更换头像 Bug 更换头像接口报错,无法打开主页。修复方法: 首先安装 libjpeg8-dev,

$ sudo apt install libjpeg8-dev 

然后更新 python Pillow 库为最新版

sudo pip install Pillow

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏网络

CobaltStrike团体服务器部署并后台运行

大家好,我是你们的老朋友Alex。Cobaltstrike的部署安装很简单,但是在实际使用中出现了问题。我把团队服务器放在ECS上,出现了两个问题:1.客户端无...

40360
来自专栏Golang语言社区

HTTP协议漫谈

简介 园子里已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将H...

40260
来自专栏云计算教程系列

如何在Debian 8上安装和使用Composer

Composer是一种流行的PHP依赖管理工具,主要用于促进项目依赖项的安装和更新。它将根据项目要求使用适当的版本检查特定项目所依赖的其他软件包并为您安装。

17620
来自专栏用户2442861的专栏

每天一个linux命令(61):wget命令

http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html

29420
来自专栏用户2442861的专栏

Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置

两年半前写的关于Maven的介绍,现在看来都还是不错的,自己转下。写博客的一大好处就是方便自己以后查阅,自己总结的总是最靠谱的。

47910
来自专栏北京马哥教育

HTTP 协议漫谈

简介 网络上已经有不少介绍 HTTP 的好文章,对HTTP的一些细节介绍的比较好,所以本篇文章不会对 HTTP 的细节进行深究,而是从够高和更结构化的角度将 H...

317110
来自专栏北京马哥教育

【Python】windows下Eclipse中安装集成webpy框架

作者:JueDream 来源:http://blog.csdn.net/qq_35731570/article/details/62221021?locatio...

34290
来自专栏康怀帅的专栏

ThinkPHP 5 入门

本文介绍了 ThinkPHP 5 安装以及简单的使用方法。 安装 composer $ composer create-project topthink/thi...

48980
来自专栏高性能分布式系统设计

MySQL大结果集分次取回,不耗费大内存的lazy计算的方法

Python导数据的时候,需要在一个大表上读取很大的结果集。 如果用传统的方法,Python的内存会爆掉。因为无论是fetchone()还是fetchal...

27080
来自专栏Golang语言社区

HTTP协议漫谈

简介 园子里已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将H...

375130

扫码关注云+社区

领取腾讯云代金券