本文主要是介绍Seafile网盘安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Seafile网盘安装
忙里偷闲,正好想起来TencentCloud有一台机制闲着也是闲着,先玩玩
直接冲docker, tencentCloud都是有心安装好了的,我直接pull不客气了
$ docker pull seafileltd/seafile
注意这里有很多人给了很多参数,咱不管那些,先把端口同开,一个8000(下载文件) , 一个8082( 上传文件) 其他设置先不搞
$ docker run -d -t --name seafile -p 8000:8000 -p 8082:8082 68
之后我们直接冲8000 和8082 , 悲剧了,我们没有可以登录的账号和密码。欸,遇事不要慌,我们进seafile的容器内修改配置不久搞定了么
$ docker exec -it 1c bash
root@1c123febd262:/opt/seafile# ls
ccnet conf pids seafile-server-6.3.4 seahub-data
ccnet.sock logs seafile-data seafile-server-latest
很爽的,我们一进来就是他的安装穆勒,看来是个合格的容器。俗话说的号,了解一个网盘最快的方式就是度娘,我们有一下两种选择方法:1.自己蝇头漫漫,不知向何处 2. 度娘给你指路,直奔杏花村。 那么,我们果断选择21 嘛,毕竟浏览一下网盘的文件结构页没啥不好。我记得我当年配的时候又要装数据库啥的,他直接搞定了,定有些不为人知的阴谋(笑)
众所周知,一个文件的配置最重点肯定是在conf里面,我们想都不想直接冲到donf中查看一番:
root@1c123febd262:/opt/seafile/conf# ls
ccnet.conf gunicorn.conf seafdav.conf seafile.conf seahub_settings.py seahub_settings.pyc
我们一个一个点进去看嘛,这里顺便放一个教程链接:https://www.kancloud.cn/kancloud/seafile-manual/51436
ccnet.conf 部分与seafileconf重复
[General]
# 该设置不再使用
USER_NAME = seafile# 使用seafile的ID 不要更改
ID = 688383cb430d37cd7619e9c12fc4e0370db17518
NAME = seafile
# URL
SERVICE_URL = http://seafile.example.com:8000[Client]
# 该设置不在使用
PORT = 13419# 数据库
[Database]
ENGINE = mysql
HOST = 127.0.0.1
PORT = 3306
USER = seafile
PASSWD = 5b73bcee-aa59-423a-93bc-b5da4688bb85
DB = ccnet_db
CONNECTION_CHARSET = utf8[Client]
UNIX_SOCKET = /opt/seafile/ccnet.sockgunicorn.conf 怎么说呢,属于是python相似度极高了
import os
daemon = True
# 应该是支持的worker进程为5个
workers = 5
# default localhost:8000
bind = "0.0.0.0:8000"
# Pid
pids_dir = '/opt/seafile/pids'
pidfile = os.path.join(pids_dir, 'seahub.pid')# for file upload, we need a longer timeout value (default is only 30s, too short),超时判断,1200s,20min
timeout = 1200limit_request_line = 8190seafiledav.conf[WEBDAV]
# 我就不自定义了
enabled = false
port = 8080
# 支持fastcgi, 详见nginx https://www.jianshu.com/p/565217337247
# 我这个放在docker中, docker本身没有cgi, 而nginx打算部署在本机上所以就让他false了
fastcgi = false
share_name = /seahub_settings.py
# -*- coding: utf-8 -*-
SECRET_KEY = "&zr1lph_%%&)1kbsjf@n@uywvkq1^9fsnp#vg=#82r&@w#z4dh"# 数据库用的是Django连数据库的引擎,可能ORM更好管理一些吧,毕竟Django的ORM谁用谁香
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'seahub_db','USER': 'seafile','PASSWORD': '5b73bcee-aa59-423a-93bc-b5da4688bb85','HOST': '127.0.0.1','PORT': '3306'}
}CACHES = {'default': {'BACKEND': 'django_pylibmc.memcached.PyLibMCCache','LOCATION': '127.0.0.1:11211',},'locmem': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',},
}
COMPRESS_CACHE_BACKEND = 'locmem'
FILE_SERVER_ROOT = "http://seafile.example.com/seafhttp"
根据官方文档说的,我们可以更改在settings中的必要参数实现个性化即可,比如放开注册啥的
https://www.kancloud.cn/kancloud/seafile-manual/51501
所以很明显数据存在数据库中,咱直接冲数据库呗
Seafile数据占据两张表,一张是seafile_db 一张是seahub_db。seafile_db存放的类似于文件及所属信息
MariaDB [(none)]> use seafile_db
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [seafile_db]> show tables;
# 咱没完全显示,我显示了几类,这也是官网说的类别
+----------------------+
| Tables_in_seafile_db |
+----------------------+
Repo, Branch, Commit, FS, and Block ,咱把网址介绍放这https://www.kancloud.cn/kancloud/seafile-manual/51444
咱就是说,咱们慢慢看看,我就不把表意义放上了,放几个有代表性的(英文真的是硬伤)
Repo,本质来说就是库,每个用户都有一个库,存放库的各种关系等
FS 文件及路径。 FS刚创建的时候是没有的因为你没有文件(笑)
Branch 这个怎么解释也优点怪怪的,先放到一边,反正现在也没有
Block 文件会分成块进行存储的, Block保留这些块的类似顺序流和切分算法之类的信息。
再看seahub_db 简直更不当人,一堆东西,不过我们至少可以明确:
admin, user, share ,registration, profile等等信息都放在这里
啥意思呢; 除了文件,剩下辅助的 账号,密码,文件共享记录,注册, 邮箱操作等全在这,属于是附操作全了。这种数据库的管理应该也是多亏了django的ORM, 这些东西具体用到的时候在从源码里去看去读把。总之我们先搞定一个管理员账号。看了上面的一堆,我们先从最贱的搞起, 根据文档我们可以用reset-admin.sh搞定:https://www.kancloud.cn/kancloud/seafile-manual/51432
# 我们来读一下这个shSCRIPT=$(readlink -f "$0")
INSTALLPATH=$(dirname "${SCRIPT}")
TOPDIR=$(dirname "${INSTALLPATH}")
default_ccnet_conf_dir=${TOPDIR}/ccnet
central_config_dir=${TOPDIR}/conf# 有没有装python
function check_python_executable() {if [[ "$PYTHON" != "" && -x $PYTHON ]]; thenreturn 0fiif which python2.7 2>/dev/null 1>&2; thenPYTHON=python2.7elif which python27 2>/dev/null 1>&2; thenPYTHON=python27elseechoecho "Can't find a python executable of version 2.7 or above in PATH"echo "Install python 2.7+ before continue."echo "Or if you installed it in a non-standard PATH, set the PYTHON enviroment varirable to it"echoexit 1fi
}function read_seafile_data_dir () {seafile_ini=${default_ccnet_conf_dir}/seafile.iniif [[ ! -f ${seafile_ini} ]]; thenecho "${seafile_ini} not found. Now quit"exit 1fiseafile_data_dir=$(cat "${seafile_ini}")if [[ ! -d ${seafile_data_dir} ]]; thenecho "Your seafile server data directory \"${seafile_data_dir}\" is invalid or doesn't exits."echo "Please check it first, or create this directory yourself."echo ""exit 1;fi
}check_python_executable;
read_seafile_data_dir;export CCNET_CONF_DIR=${default_ccnet_conf_dir}
export SEAFILE_CONF_DIR=${seafile_data_dir}
export SEAFILE_CENTRAL_CONF_DIR=${central_config_dir}
export PYTHONPATH=${INSTALLPATH}/seafile/lib/python2.6/site-packages:${INSTALLPATH}/seafile/lib64/python2.6/site-packages:${INSTALLPATH}/seahub/thirdpart:$PYTHONPATH
export PYTHONPATH=${INSTALLPATH}/seafile/lib/python2.7/site-packages:${INSTALLPATH}/seafile/lib64/python2.7/site-packages:$PYTHONPATH# 前面都是环境准备,我们看一眼manage.py
manage_py=${INSTALLPATH}/seahub/manage.py
exec "$PYTHON" "$manage_py" createsuperuser
虽然但是,没有pycharm看这个还是有点伤的,不过这个关键字应该很有印象。没错,这是用django的createsuperuser接口(我这的一层一层的往下翻了,感性却的小伙伴可以自己翻翻看)。
所以几乎可以确定这是一个纯纯Django框架部署的东西了,当然我也懒得往下翻了,咱直接查看Django root的数据库, 找到auth_user,真的有,就是放管理员的地方。至此我们可以选择修改数据库创建超级用户 天真, 数据库的密码是以sha256的格式存放的,所以不能直接铭文存储,最好还是用脚本哒
这里更详细的解析我就不做了,咱们完成最后一步Nginx的部署
命途多舛了兄弟们,国内的机子URL都要去备案,那没办法了我就不搞了,弄了半天竹篮打水一场空,呵。 这里再强调一个问题,seafile的文件上传下载依赖于80端口,docker配置的时候把80端口映射出来,然后再conf/ccnet.conf 以及网页管理员的URL里面改成80的映射端口,不然就会像我一样麻了改3个小时还是上传下载失败
这篇关于Seafile网盘安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!