萝卜

turnip的Python项目详细描述


萝卜

Turip是用Python编写的灵活可扩展的Git服务器套件 使用扭曲的。

各种服务器提供可定制的虚拟主机,具有灵活性。 认证和授权,以及个人横向扩展 存储层的前端。

这里的python接口都不应该被认为是稳定的。

架构

<> > Trip的架构是为了最大化简单性和可扩展性而设计的。 以及稳健性。每个服务器提供大约一个服务,并且 安装只需要运行它想要的服务器。大多数服务器 避免使用本地状态来简化水平缩放 本地状态可以复制和/或分片它。

有两个独立的服务器堆栈:pack和api。背包 通过包协议(git://)与git客户端进行通信,smart http或智能ssh。http和ssh前端打开隧道包 协议,并将其作为普通包协议转发到中间端 连接。单独的http api堆栈提供了一个编程远程 存储库上高级读写操作的接口

前端:
  • 包装
  • 智能http
  • 智能ssh
  • http api
中端:
  • 包虚拟化
  • API虚拟化
后端:
  • 包装
  • API

内部协议

Turnip对大多数通信使用Git-Pack协议的扩展 在服务器之间。唯一的变化是萝卜请求可以指定 任意命名参数,而不仅仅是主机名。

git pack协议的git proto请求的相关部分是 用ABNF表示如下:

git-proto-request = request-command SP pathname NUL [ host-parameter NUL ]
host-parameter = "host=" hostname [ ":" port ]

萝卜原型请求将其更改为:

turnip-proto-request = request-command SP pathname NUL \*( param NUL )
param = param-name "=" param-value
param-name = \*( %x01-3C / %x3E-FF ) ; exclude NUL and =
param-value = \*%x01-FF ; exclude NUL

今天实现的唯一附加参数是 “turnip stateless rpc”和“turnip advertide refs”,用于 代理到标准包协议的智能http服务器。

发展

设置

创建可信容器(可选):

sudo lxc-create -t ubuntu -n turnip.trusty -- -r trusty -a amd64 -b $USER

运行以下命令:

sudo add-apt-repository ppa:launchpad/ppa
sudo apt-get update
cat system-dependencies.txt | sudo xargs apt-get install -y --no-install-recommends

运行

pack smart http/ssh服务可以通过以下方式启动:

python turnipserver.py

http api可以使用以下命令启动:

make run-api

部署

萝卜配有萝卜菊花咒,可从以下网址获得:

git clone https://git.launchpad.net/~canonical-launchpad-branches/charms/+source/turnip

与本地提供商一起部署:

juju switch local juju bootstrap juju deploy –repository=/path/to/loca/charm/repo/root local:trusty/turnip

萝卜新闻

0.1.1(2015-06-11)

  • 添加合并检测API。

0.1(2015-06-02)

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用odbc的java数据库连接:找不到microsoft access驱动程序(*.mdb*.accdb)选项   java我在将文本读入数组时遇到问题,我需要在这段代码中更改什么?   java JAXB元素列表中缺少字段   java Android BaseAdapter,返回项id   登录到web应用程序的java语音识别   java线性布局不填充滚动视图中屏幕的剩余部分   java如何通过点击第二个按钮来显示第二张壁纸?   java如果使用无缓冲I/O,缓冲I/O如何减少开销?   《骑士之旅》中的java问题   java如何解决Singelton为空的问题   java可在后台播放广告   在Swing中处理JFXPanel时发生java JavaFX非法状态异常   java Contains总是返回false   java ZeroMQ两个PUBSUB代理