在tinycolinux上编译seafile

简介: 本文关键字:tinycorelinux上从0源码编译seafile,uswgi方式配置运行seafile

本文关键字:tinycorelinux上从0源码编译seafile,uswgi方式配置运行seafile

计算机科学和编程艺术起源于西方,在基础建设级很难发现中国人的建树,比如在C系相关的系统领域国内是没有什么作品广泛使用并让别人记住的,,但一个有趣的现象是,py域和应用域中国人异常活跃,且有不少佳品的,比如coco2dx,还比如我们要谈到的seafile,《在tinycolinux上编译odoo》一文中我们把曾odoo称为mineportalv2 - 它是groupware,vs odoo,seafile更接近personalware,其实更适宜用来打造mineportalv2,mineportalv1 oc只是一个复杂的图床加面向同步的webdav支持,而seafile有独立的fileserver,支持免文档数据库的切片文件系统,独立的standlone fileserver targetting storage domain logic implented as enginx appstack componet也有利于我们研究将其与enginx中的其它部件集成及深入《发布enginx》一文中的课题研究,且程序实现上鲜明的c+py混合编程特征和综合web+websocket的自然混合程序设计,更适合被用来作为教育目的,当然它不像OC一样仅需要虚拟空间就可以运行,只是这在云主机低价盛行的今天也不是什么大事了。因此接下来我们在tinycolinux上一步一步编译它:

编译seafile的五大件:

我们首先编译出GCC481和CMAKE,python+pip,nginx等,按《在tinycolinux中编译cling混合c和py在线学习系统》中说的一步一步完成,且准备gcc的autotools支持和git支持:

autogen.tcz,automake.tcz,autoconf.tcz,libtool.tcz,intltool.tcz,perl5.tcz,git.tcz,openssl-1.0.0.tcz

然后编译出五大件,我下载到的版本是:

jansson-2.10.tar.gz(一个json解析库,C项目,cmake或autotools构建)

libevhtp-1.1.6.tar.gz(一个强化libevent的http库,c项目,cmake构建)

ccnet-server-6.2.5-server.tar.gz(seafile 自己的rpc库,c和py混合项目as py lib,autotools构建)

libsearpc-3.0-latest.tar.gz(seafile rpc库,c+py混合项目as pylib,autotools构建)

seafile-6.1.1.tar.gz(seafile的,c+py混合项目as pylib,autotools构建。)

seafile-server-6.2.5-server.tar.gz(seafile负责文件传输的业务服务器,c+py混合项目as pylib,autotools构建)

seahub-6.2.5-server.tar.gz(纯py,django app,seafile的前端部分)

按依赖和先后顺后编译,使用到autotools一般都是先sudo autogen.sh,然后./configure,如果sudo autogen.sh之后产生不了makefile.in基本是libtool的问题,确认安好libtool.tcz解决它,一一./configure --prefix=/usr/local/seafile之后,基本都能完成,使用到cmake一般要shadowbuild,即sudo mkdir b到src下,然后cd b,sudo cmake .. && sudo cmake build ..,其中evhtp要sudo cmake -DEVHTP_DISABLE_SSL=ON ..,libevhtp-1.1.6.tar.gz中cmakelists.txt中取消三个test的编译需求。编译configure或link过程中的时候会调到下述tcz:

acl-dev.tcz,acl.tcz,bzip2-dev.tcz,bzip2-lib.tcz,bzip2.tcz,curl-dev.tcz,curl.tcz,expat2-dev.tcz,expat2.tcz,fuse.tcz,glib2-dev.tcz,glib2.tcz,guile-dev.tcz,guile.tcz

libarchive-dev.tcz,libarchive.tcz,libattr.tcz,libevent-dev.tcz,libevent.tcz,libffi-dev.tcz,libffi.tcz,libltdl.tcz,liblzma-dev.tcz,liblzma.tcz,libssh2-dev.tcz,libssh2.tcz,popt-dev.tcz,popt.tcz,vala.tcz

基本上,,都可以在4.x的tinycorelinux tcz repos中找到。自己整理一下对应关系,假设在第一步我们上述五个除seahub外都是安装到/usr/local/seafile的,所有成功结果会是这样:在/usr/local/bin下产生各种bin,在/usr/local/seafile/lib/产生ccnet,seafile,serpc的so,la,甚至在/usr/local/bin中也产生了seafile-admin:没有py后缀shebang为py,作为脚本使用)。这个脚本很重要,下面细说.

安装配置seafile并用nginx+uwsgi方式启动:

首先创建一个仓库(相当于odoo刚装完或重新配置时,要进入web/database/manager删减数据套件一样),seafile-admin就是用来产生这个套件的总工具,并负责调用seahub根下的manage.py来启动,下面我们用官方方法-即seafile-admin来产生套件并启动它:

在任意目录新建一个data文件夹,然后产生data/seafile-server/seahub的空文件结构,把五大件中的seahub改名替换/data/seafile-server/seahub中的seahub,四大件要么作为后端,要么sudo make install到并作为python lib,seahub中也有一部分要作为python lib,因此,export PYTHONPATH=/xxx/seafile-server/seahub/thirdpart一下,除去所有这些不可见部分,此后的seahub就相当于整个seafile website了。------- 现在,可以执行产生数据仓库(我们把它称为数据套件吧)的总脚本了,就是那个seafile-admin setup,回答所有问题后发现正确配置完成,pip install gnicore后即可访问,我们看到帮助文档中配合nginx是转发gnicore的数据,现在,我们将django的这种方式,换成nginx+uwsgi,去掉gunicore的必要。这实际属于django nginx uwsgi搭配问题。

首先,我们有如下发现:/usr/local/seafile/data/seafile-server/seahub/seahub下有一个wsgi.py和settings.py,这符合我们在《发布odoo》中用nginx+uwsgi将其启动的改造方式,也就是说,它可能天然支持纯uwsgi且seafile也保留了这种方式,那么究竟是不是呢?

进一步通过观看seafile-admin我们进一步明确了这种设想:它负责配置逻辑的产生(django app settings),且它调用的manage.py仅是一个wsgi.py的wrapper(为了seafile-admin中统一gunicore,fastcgi,etc..),所以,在seafile-admin->manage.py->wsgi.py的调用路径中,这样seafile-admin既是产生套件的工具,也用于统一启动,而原本这一切:用于seafile-admin中读取配置的部分settings.py+负责启动的部分wsgi,在无外头wrapper即seafile-admin情况下,它们是分离直接放进seahub根下的settings.py和wsgi.py中的:

现在既然有数据套件和套件配置了,所以尝试直接配置uwsgi和nginx启动这个套件下的seafile就够了,其它可按《odoo》一文中的来,成功!:

nginx配置逻辑:

include uwsgi_params;
uwsgi_param UWSGI_CHDIR /usr/local/seafile/data/seafile-server/seahub/seahub;
uwsgi_param UWSGI_MODULE uwsgi-server; (不需要.py)
uwsgi_param UWSGI_CALLABLE application;
uwsgi_pass 127.0.0.1:8000;

启动的逻辑:

/usr/local/seafile/sbin/nginx

/usr/local/seafile/bin/uwsgi --socket=:8000 --master --uid=tc --gid=root --daemonize=/usr/local/seafile/bin/uwsgi.log 

好吧,自己DIY着去HIGH吧。恩恩


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关文章
|
Linux 编译器 Windows
CentOS 7终端命令行方式安装FileZilla(★firecat亲测有效★)
CentOS 7终端命令行方式安装FileZilla(★firecat亲测有效★)
2060 0
|
Linux
LINUX编译m4
LINUX编译m4
149 0
|
Linux
LINUX编译spandsp
LINUX编译spandsp
132 0
|
Ubuntu Linux
LINUX UBUNTU安装依赖库编译freeswitch
LINUX UBUNTU安装依赖库编译freeswitch
228 0
|
存储 前端开发 数据可视化
在tinycolinux上编译odoo8
本文关键字:在tinycolinux上源码安装odoo8,动态模式python+uswgi+nginx,精简安装odoo8模块
187 0
在tinycolinux上编译odoo8
|
存储 SQL JavaScript
在tinycolinux上安装和使用cloudwall
本文关键字:在tinycolinux上安装和使用cloudwall,同步器as webos,uniform native web appstack
245 0
在tinycolinux上安装和使用cloudwall
|
存储 Web App开发 JavaScript
在tinycolinux上安装sandstorm davros
本文关键字:git更新失败tlsv1,源码编译nodejs,提取sandstorm中的davros为免sandstorm版本
238 0
在tinycolinux上安装sandstorm davros
|
前端开发 关系型数据库 MySQL
为tinycolinux创建应用包-toolchain和编译方法
本文关键字:tinycorelinux编译gcc套件,live,vhd二合一colinux,tinycorelinux lnmp
332 0
为tinycolinux创建应用包-toolchain和编译方法
|
Ubuntu Linux Windows
Windows安装Linux子系统--安装GUI界面
原文:Windows安装Linux子系统--安装GUI界面  前段时间发现Windows可以安装Linux子系统了,恰逢电脑换了固态,还没装Linux,不如趁机体验一番! 1、准备工作 1.1、打开Windows的子系统功能 1.2、打开Windows开发人员模式 打开设置–>更新和安全–>针对开发人员,选择开发人员模式–>确定  确认后,重启电脑,系统更新配置。
4007 0
|
程序员
dokuwiki安装问题
工作了几年,虽然在程序员这个道路上才算开始,希望以后能够有所成长,为了把平时遇到的技术问题,记录下来,第一个想到的就是写wiki,博客虽然创建了许久,但是没有坚持写下去,在网上找了许多的wiki程序,dokuwiki是最符合的。
2023 0