本篇内容介绍了“怎么在tinycolinux上编译seafile”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
我们首先编译出GCC481和CMAKE,python+pip,nginx等,且准备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,libssh3-dev.tcz,libssh3.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,作为脚本使用)。这个脚本很重要,下面细说.
首先创建一个仓库(相当于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
“怎么在tinycolinux上编译seafile”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。