由于网盘项目一直在更新,旧的安装指南已经过时,需要新的指南。

文章目录

  • 信息
  • 创建 Docker 容器
  • 安装中文语言
  • 安装先决条件
  • 准备数据库
  • 下载源文件
  • 编译并安装
  • 创建配置文件
  • 启动 Seafile-server
  • 启动 Seahub
    • 准备环境变量
    • 创建 Seahub 表格
    • 创建超级管理用户
    • 启动 Seahub
  • 最终文件结构
  • 部署前端(React)开发环境
    • 说明
    • 部署
  • Seafevents 配置与启动
    • 配置
    • 运行 Seafevents
  • Elastic Search 安装
  • 病毒扫描系统
  • Seafdav 配置部署与启动
    • 准备执行文件
    • 运行 Seafdav
  • 文件自动删除
  • 建立临时公网访问隧道(SSH)

信息

本安装教程最后更新时间 2021年5月27日

创建 Docker 容器

使用以下命令创建基于 Ubuntu 18.04 的 Docker 容器:

docker run -it -p 8000:8000 -p 8080:8080 -p 8082:8082 -p 3000:3000 -p 9200:9200 --name seafile-ce-env ubuntu:18.04  bash

Docker 内部的文件夹:

  • /root/dev/conf:存放配置文件
  • /root/dev/source-code:存放源代码
  • /tmp:存放日志和 Cache 文件

安装中文语言

apt-get install language-pack-zh-hans
locale-gen zh_CN.UTF-8
echo "export LC_ALL=zh_CN.UTF-8">>/root/.bashrc
source /root/.bashrc

输入 locale 查看当前语言:

LANG=
LANGUAGE=
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

在实体机 Ubuntu 上可意不用担心这个问题,因为它们默认会安装 UTF-8 语言包。但是在 docker 容器中,必须进行此步骤,因为绝大多数 docker 的 ubuntu 容器都是最精简的镜像,通常不会安装中文包。

安装先决条件

apt-get update && apt-get upgrade -yapt-get install -y ssh libevent-dev libcurl4-openssl-dev libglib2.0-dev uuid-dev intltool libsqlite3-dev libmysqlclient-dev libarchive-dev libtool libjansson-dev valac libfuse-dev python-dateutil cmake re2c flex sqlite3 python-pip python-simplejson git libssl-dev libldap2-dev libonig-dev vim vim-scripts wget cmake gcc autoconf automake mysql-client librados-dev libxml2-dev curl sudo telnet netcat unzip netbase ca-certificates apt-transport-https build-essential libxslt1-dev libffi-dev libpcre3-dev libz-dev xz-utils nginx pkg-config poppler-utils libmemcached-dev openjdk-11-jdk aria2 sudocurl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
apt-get install -y nodejsapt-get install -y python3-pip python3.6 python3.6-devpython3.6 -m pip install --upgrade piprm /usr/bin/python
rm /usr/bin/python3
ln -s /usr/bin/python3.6 /usr/bin/python
ln -s /usr/bin/python3.6 /usr/bin/python3rm /usr/bin/pip
rm /usr/bin/pip3
ln -s /usr/local/bin/pip3.6 /usr/bin/pip
ln -s /usr/local/bin/pip3.6 /usr/bin/pip3pip install python-cas djangosaml2 cffi sqlalchemy pymysql pillow pycryptodome configparser pylibmc django-pylibmc elasticsearch==5.5.0 elasticsearch-dsl==5.4.0 Django==2.2.14 future captcha django-statici18n django-post_office==3.3.0 django-webpack_loader==0.7.0 gunicorn mysqlclient django-picklefield==2.1.1 openpyxl qrcode django-formtools django-simple-captcha djangorestframework==3.11.1 python-dateutil requests pillow pyjwt pycryptodome requests_oauthlib mock nose exam splinter pytest pytest-django

准备数据库

apt-get install -y mariadb-server
service mysql start
mysqladmin -u root password 123456

建表用的 SQL(在控制台先运行 mysql 命令后,进入数据库命令行):

create database ccnet charset utf8;
create database seafile charset utf8;
create database seahub charset utf8;

然后创建一个 master 用于消除 seafevents 的错误(方便起见,后面的配置也用这个用户了):

CREATE USER 'master'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'master'@'localhost';

下载源文件

cd ~/
mkdir -p ~/dev/source-code
cd ~/dev/source-codegit clone https://github.com/SDU-NetdiskTeam/libevhtp.git
git clone https://github.com/SDU-NetdiskTeam/libsearpc.git
git clone https://github.com/SDU-NetdiskTeam/seafile-server.git
git clone https://github.com/SDU-NetdiskTeam/seahub.git
git clone https://github.com/SDU-NetdiskTeam/seahub-extra.git seahub_extra
git clone https://github.com/SDU-NetdiskTeam/pro-set.git pro
git clone https://github.com/SDU-NetdiskTeam/seafdav.gitcd libsearpc/
git checkout 8.0cd ../seafile-server
git checkout developcd ../seahub
git checkout develop

编译并安装

cd ../libevhtp
cmake -DEVHTP_DISABLE_SSL=ON -DEVHTP_BUILD_SHARED=OFF .
make
make install
ldconfigcd ../libsearpc
./autogen.sh
./configure
make
make install
ldconfigcd ../seafile-server
./autogen.sh
./configure --disable-fuse
make
make install
ldconfig

创建配置文件

mkdir ~/dev/conf
cd ~/dev/confcat > ccnet.conf  <<EOF
[Database]
ENGINE = mysql
HOST = localhost
PORT = 3306
USER = master
PASSWD = 123456
DB = ccnet
CONNECTION_CHARSET = utf8
CREATE_TABLES = true[General]
SERVICE_URL = http://127.0.0.1:8000EOFcat > seahub_settings.py  <<EOF
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'seahub','USER': 'master','PASSWORD': '123456','HOST': 'localhost','PORT': '3306',}
}
FILE_SERVER_ROOT = 'http://127.0.0.1:8082'EOFcat > seafevents.conf  <<EOF
[DATABASE]
type = mysql
host = localhost
port = 3306
username = master
password = 123456
name = seahub[AUDIT]
enabled = false[INDEX FILES]
external_es_server = true
es_host = 127.0.0.1
es_port = 9200
enabled = true
interval = 10mhighlight = fvh## If true, indexes the contents of office/pdf files while updating search index
## Note: If you change this option from "false" to "true", then you need to clear the search index and update the index again. See the FAQ for details.
index_office_pdf = true[OFFICE CONVERTER]
port = 6000
host = 127.0.0.1
enabled = false
workers = 1[SEAHUB EMAIL]
enabled = false## interval of sending Seahub email. Can be s(seconds), m(minutes), h(hours), d(days)
interval = 30m# Enable statistics
[STATISTICS]
enabled=false# Enable Aria2 offline download
[OFFLINE DOWNLOAD]
enabled = true
tempdir = /tmp/offline-download
workers = 10
## time limit of download. Can be s(seconds), m(minutes), h(hours), d(days)
time-limit = 900s# Enable auto deletion
[AUTO DELETION]
enabled = true
interval = 1dEOFcat > seafile.conf  <<EOF
[database]
type = mysql
host = localhost
port = 3306
user = master
password = 123456
db_name = seafile
connection_charset = utf8
create_tables = true[virus_scan]
scan_command = clamscan
virus_code = 1
nonvirus_code = 0
scan_interval = 60
# scan_size_limit = (size limit for files to be scanned)
# scan_skip_ext = (a comma (',') separated list of file extensions to be ignored)
# threads = (number of concurrent threads for scan, one thread for one file, default to 4)EOFcat > seafdav.conf  <<EOF
[WEBDAV]# Default is false. Change it to true to enable SeafDAV server.
enabled = trueport = 8080# If you deploy seafdav behind nginx/apache, you need to modify "share_name".
share_name = /EOFmkdir ~/dev/seafile-data
cd ~/dev/seafile-dataln -s ../conf/seafile.conf ./mkdir ~/dev/logs

启动 Seafile-server

service mysql start
seaf-server -c /root/dev/conf -d /root/dev/seafile-data -D all -f -l - &

如果先前已经开过一个 Seafile-server,则其 Socket 文件可能被占用。用以下命令杀死旧的 Server 进程:

kill `ps -aux | grep seaf-server | sed -n 1p | awk '{print $2}'`

启动 Seahub

准备环境变量

cd ~/dev/source-code/seahub/export PYTHONPATH=/usr/local/lib/python3.6/site-packages/:/root/dev/source-code/seahub/thirdpart:$PYTHONPATH
export PYTHONPATH=/root/dev/source-code:/root/dev/source-code/pro/python:$PYTHONPATHexport CCNET_CONF_DIR=/root/dev/conf
export SEAFILE_CONF_DIR=/root/dev/seafile-data
export SEAFILE_CENTRAL_CONF_DIR=/root/dev/conf
export SEAFES_DIR=/root/dev/source-code/pro/python/seafes
export SEAHUB_DIR=/root/dev/source-code/seahub
export SEAHUB_LOG_DIR=/root/dev/logs

创建 Seahub 表格

python manage.py migrate

然后看到 seahub_extra 文件夹,里面有一个 raw_table_sql.sql 文件,那里面包含了使得高级功能运行所需的表格代码,请将其中描述的表格插入到 seahub 数据库中,操作方法如下:

首先 cd 进入 seahub_extra 文件夹,然后输入 mysql 命令打开 MariaDB 控制台,接着输入:

source raw_table_sql.sql

即可完成数据表创建。

创建超级管理用户

python manage.py createsuperuser

启动 Seahub

需要先准备环境变量。

python manage.py runserver 0.0.0.0:8000

最终文件结构

.
`-- dev|-- conf|   |-- __pycache__|   |-- ccnet.conf|   |-- seafevents.conf|   |-- seafile.conf|   `-- seahub_settings.py|-- seafile-data|   |-- httptemp|   |-- library-template|   |-- seafile.conf -> ../conf/seafile.conf|   |-- seafile.sock|   |-- storage|   |-- tmpfiles|   `-- webdavtmp`-- source-code|-- libevhtp|-- libsearpc|-- pro|-- seafile|-- seafile-server|-- seahub`-- seahub_extra

部署前端(React)开发环境

说明

完成前端开发环境部署后,所有对前端页面的请求将被转到 npm 服务。因此,一旦完成配置后,必须保证三端(server,django,npm)同时启动后,才能正常使用。

前端开发环境的作用:加快 React JS 的重新编译速度,修改后立即能在前端看到改动。

注意,完成前端开发后,不要忘了在 seahub 项目中使用如下命令:

cd ~/dev/souece-code/seahub/frontend
npm buildcd ..
make clean
make dist

如果在 npm build 时出错了,尝试使用以下命令,然后再 build:

npm install

部署

/root/dev/conf/seahub_settings.py 文件中添加如下内容:

import os
PROJECT_ROOT = '/root/dev/source-code/seahub'
WEBPACK_LOADER = {'DEFAULT': {'BUNDLE_DIR_NAME': 'frontend/','STATS_FILE': os.path.join(PROJECT_ROOT,'frontend/webpack-stats.dev.json'),}
}
DEBUG = True

安装 node 模块

cd /root/dev/source-code/seahub/frontendnpm install

执行 npm run dev

cd /root/dev/source-code/seahub/frontendnpm run dev

最后,启动 Seafile-server 和 seahub,完成。

Seafevents 配置与启动

Seafevents 主要就是各种周期性任务的执行。比如,每 10 分钟一次的搜索 Indexing,还有 Auditing,Virus Scan 等。没有 Seafevents,搜索系统数据将不会得到及时更新。

配置

cp /root/dev/source-code/pro/python/seafevents/main.py /root/dev/source-code/pro/python/seafevents/seafile_events.py
cat > /root/dev/source-code/pro/python/seafevents/run.sh << EOD
#!/bin/bash# Your ccnet conf dir
export CCNET_CONF_DIR=/root/dev/conf
# Your seafile conf dir
export SEAFILE_CONF_DIR=/root/dev/seafile-data# Your extra python path.
export PYTHONPATH=/usr/local/lib/python3.6/site-packages/:/root/dev/source-code/seahub/thirdpart:/root/dev/source-code:/root/dev/source-code/pro/python:/usr/local/lib/python3.6/site-packages/:/root/dev/source-code/seahub/thirdpart:
export PYTHONPATH=/root/dev/source-code:/root/dev/source-code/pro/python:/root/dev/source-code:/root/dev/source-code/pro/python:/usr/local/lib/python3.6/site-packages/:/root/dev/source-code/seahub/thirdpart:pkill -f "python seafile_events.py"python seafile_events.py --loglevel=info --logfile=/root/dev/logs/events.log --reconnect  --config-file=/root/dev/conf/seafevents.confEOD
chmod +x /root/dev/source-code/pro/python/seafevents/run.sh

运行 Seafevents

注意,本命令需要完成环境变量配置后才可运行。

cd /root/dev/source-code/pro/python/seafevents
./run.sh

Elastic Search 安装

首先创建好用户和用户组,并设置好密码。

groupadd es
useradd es -g es
passwd es
mkdir /home/es
cp -r /root/dev/source-code/pro/elasticsearch /home/es/
chown -R es /home/es

将 Elastic Search 的目录

然后通过 su 命令切换用户。

su es

启动 Elastic search:

cd /home/es/elasticsearch/bin
./elasticsearch

启动完成后,Elastic Search 会在默认端口 9200 启动。

然后别忘了配置一下 Seafes。

cat > /root/dev/source-code/pro/python/seafes/run.sh <<EOF
export PYTHONPATH=/usr/local/lib/python3.6/site-packages/:/root/dev/source-code/seahub/thirdpart:$PYTHONPATH
export PYTHONPATH=/root/dev/source-code:/root/dev/source-code/pro/python:$PYTHONPATHexport SEAHUB_DIR=/root/dev/source-code/seahub
export CCNET_CONF_DIR=/root/dev/conf
export SEAFILE_CONF_DIR=/root/dev/seafile-data
export EVENTS_CONFIG_FILE=/root/dev/conf/seafevents.confif [[ $# == 1 && $1 == "clear" ]]; thenpython -m seafes.index_local --loglevel debug clear
elsepython -m seafes.index_local --loglevel debug update
fiEOF
chmod +x /root/dev/source-code/pro/python/seafes/run.sh

如果运行了 Elastic Search 主程序后,出现了一段时间后自动 Kill 的问题,请打开 /home/es/elasticsearch/config/jvm.options 文件,并找到其中的字段:

-Xms1g
-Xmx1g
-XX:-AssumeMP

将其改成

-Xms512m
-Xmx512m
-XX:-AssumeMP

即可解决问题。

病毒扫描系统

配置在 seafile.conf 文件夹中,这份文件是用 ClamAV 进行的。

刷新病毒库:freshclam

Seafdav 配置部署与启动

Seafdav 用于支持 WebDAV 服务。

准备执行文件

#!/bin/bashexport CCNET_CONF_DIR=/root/dev/conf
export SEAFILE_CONF_DIR=/root/dev/seafile-data
export SEAFILE_CENTRAL_CONF_DIR=/root/dev/confexport PYTHONPATH=/usr/local/lib/python3.6/site-packages/:/root/dev/source-code/seahub/thirdpart:$PYTHONPATH
export PYTHONPATH=/root/dev/source-code:/root/dev/source-code/pro/python:$CCNET_CONF_DIR:$PYTHONPATHTOP_DIR=$(python -c "import os; print(os.path.dirname(os.path.realpath('$0')))")cd "$TOP_DIR"python -m wsgidav.server.server_cli --host=0.0.0.0 --port=8080 --root=/ --server=gunicorn

运行 Seafdav

cd /root/dev/source-code/seafdav
./run.sh

文件自动删除

用户可以设置资料库内文件自动删除的时间,时间到以后会自动删除文件。

按照前面的配置把 seafevents.conf 文件中的 AUTO DELETION 下的 enabled 设置为 true 即可。

此功能运行必须有 seafevents 支持。如果 seafevents 没有运行,那么用户即使设置了自动删除,也不会自动删除文件。

建立临时公网访问隧道(SSH)

假设能被公网访问到的计算机 ip 为 <ip>,用户名为 <user>,命令为:

ssh <user>@<ip> -R 0.0.0.0:8000:127.0.0.1:8000 -R 0.0.0.0:8080:127.0.0.1:8080 -R 0.0.0.0:8082:127.0.0.1:8082 -R 0.0.0.0:9200:127.0.0.1:9200 -R 0.0.0.0:8001:127.0.0.1:8001

各端口释义:

  • 8000 Seahub
  • 8001 Office
  • 8082 Seafile server
  • 9200 Elastic search

【网盘项目日志】Seafile 源码部署和安装命令相关推荐

  1. 直链站php源码,源码库分享PHP版百度网盘直链/外链源码

    时间:2013-10-22来源:Aspku 作者:源码库 文章热度: ℃ PHP版百度网盘直链/外链源码分享,使用方法: 一.复制下面的php代码,另存为文件baidupan.php,然后将php文件 ...

  2. 网盘搜索插件php源码,百度云网盘搜索引擎 PHP版 v1.0

    百度云网盘搜索引擎是一个以PHP+MySQL进行开发的网盘搜索引擎源码. 百度云网盘搜索引擎运行 运行环境 开始之前你需要安装 * PHP 5.3.7 + * MySQL * Python 2.7 ~ ...

  3. 绝对良心提供百度网盘的jdk1.8源码下载包含sun包的

    jdk目录下是有源码的,但是源码不包含sun包, 但是openjdk网站有提供的: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/6bfaecb8ff ...

  4. 百度网盘在线便捷下载源码

    源码介绍: 用的是网上公开的一个接口:http://pan.naifei.cc/?  每次下载都要打开网址之后再把链接拖进去,由于太麻烦写了一个中间页,只需要打开把链接密码复制进去就可以直接跳转了. ...

  5. 音乐外链生成源码php,百度网盘音乐外链源码 | 小楼昨夜又东风

    百度网盘音乐外链方法,以前一直用破博客的,后来用的人多了,导致虚拟主机CUP占用过大,暂时撤掉外链了.不过作者提供了源码,原文链接:http://www.poboke.com/study/the-so ...

  6. 全新PHP云盘网盘系统Cloudreve程序源码一键安装版+可对接多家云存储网盘

    介绍: PHP云盘网盘系统搭建教程: 运行环境:Linux或Win+Nginx+PHP7.2+MYSQL5.6+伪静态 2.打开:http://域名/CloudreveInstaller/ 满足环境后 ...

  7. 网盘搜索神器php源码,127网盘搜索源码|网盘资源搜索神器|thinkphp3.1.3框架开发的...

    网盘资源搜索神器 – 专业网盘搜索 – 搜您所想搜您所要 -盘搜利器,百度盘搜,115福利,360网盘福利,360盘搜,千脑盘搜,迅载网盘,vdisk威盘,华为盘搜,115盘搜,金山盘搜,千军万马,百 ...

  8. 网盘搜索插件php源码,PHP网盘资源搜索源码 127盘搜网盘搜索神器 THINKPHP内核

    127泛搜索网盘搜索器械,最快最稳定的网盘搜索器械,可以支持所有的网盘搜索,百度,360,微云,成都网盘,徐州网盘,百度网盘,千岛网盘,v盘微盘,新浪微盘,119G网盘.磁盘,几千匹马,一个木河网盘, ...

  9. 基于 Django 3 的网盘系统(附源码)

    一.演示地址 https://cloudself.net/ 二.页面展示 三.本地运行 1.安装依赖 pip install -r requirements.txt 2.检查配置文件,修改数据库配置 ...

最新文章

  1. SAP HUM 如何将2个HU合并并成一个?
  2. AD7705 16-bit Delta-Sigma AD 转换器
  3. 蓝牙地址的name为null_蓝牙, enable协议栈流程
  4. Linux 安装完毕要做的事
  5. SDNU 1085.爬楼梯再加强版(矩阵快速幂)
  6. JSP中动态添加 “添加附件选择框”
  7. php角色权限安全,php – 安全的chmod权限?
  8. python爬虫学习之使用BeautifulSoup库爬取开奖网站信息-模块化
  9. 3d max2012安装 破解注册机需要注意的地方
  10. orderBy排序用法
  11. linux 脚本 pause,Linux Shell脚本pause命令
  12. 路由器自动ip服务器无响应,路由器无法自动分配IP地址原因及解决方法
  13. 小L的算法课堂——博弈论
  14. 「镁客早报」特斯拉推出租赁业务;美国FCC计划进行第三次5G频谱拍卖
  15. 百斗度输入法linux,爪哇语输入法
  16. 做人的六原则 40条心计 共勉
  17. 7-138 质因子分解
  18. python爬取晋江文学城_「天鹰文学网」著名小说网站《天鹰文学》宣布关站 - seo实验室...
  19. 打造Android数据绑定暂时基于AbsListView的派生类(ListView和GridView)
  20. Web矢量图设计器的开发领域

热门文章

  1. Python 实现语音文本互转
  2. 什么是EFI系统分区?
  3. Shell(bash)脚本入门
  4. 服务端返回中文乱码的分析和解决办法
  5. 烟台理工学校计算机专业,烟台理工学校都有哪些专业
  6. 用Python搭建简单自动化报表(漏斗模型)
  7. AI 人工智能基础及应用
  8. android系统视频剪辑app推荐,知乎10w人收藏:玩短视频必装的9款剪辑App(最全)...
  9. php seekdir,C++_详解C语言中telldir()函数和seekdir()函数的用法,C语言telldir()函数:取得目录流 - phpStudy...
  10. Python学习日记1