2021SC@SDUSC
目录
综述
项目简介
“山大智云”是以网盘功能为基础的在线应用系统。项目的初衷是以seafile开源版本为基础,扩展网盘的应用功能和场景化的业务适配。
该项目目前已经初步实现校园统一认证、文件锁、在线编辑预览、全文搜索、文件病毒扫描、审计、离线上传等功能,并初步进行了系统部署和小范围测试。
项目分析
基于社区版seafile,对其开源代码进行修改,并且增添了部分功能
基于c语言的seafile-server部署在服务器上,处理文件的上传、下载与同步;
使用基于python的Django框架构建api服务器,处理前端的数据请求;
使用libsearpc实现api服务器对seafile-server的调用;
基于react框架的web前端页面。
seafile
seafile包含以下系统组件:
-
seahub:网站界面,供用户管理自己再服务器上的数据和账户信息。seafile通过gunicorn提供支持,seahub作为一个应用程序来运行
-
seafile server:数据服务进行,处理原始文件的上传/下载/同步
-
controller:监控ccnet和seafile进程,必要时重启进程
其他功能配置
-
seafdav:用于支持webDAV服务,从而直接访问云盘内容
-
webDav:基于http的通信协议,使应用程序可以直接对web server进行读写,用于网络存储文件共享
-
-
seafevents:主要用于执行各种周期性的任务.没有seafevents,搜索系统数据将不会得到及时更新
-
ClamAV:病毒扫描
-
-
elastic search:实时的分布式存储、搜索、分析的引擎
-
onlyoffice:基于Linux系统的,用于预览和编辑office文件
项目分工
按照react前端、api服务器以及seafile-server存储服务器分工,我负责seafile-server部分
项目部署
创建 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 -y
apt-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 sudo
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
apt-get install -y nodejs
apt-get install -y python3-pip python3.6 python3.6-dev
python3.6 -m pip install --upgrade pip
rm /usr/bin/python
rm /usr/bin/python3
ln -s /usr/bin/python3.6 /usr/bin/python
ln -s /usr/bin/python3.6 /usr/bin/python3
rm /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/pip3
pip 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