Skip to content

Instantly share code, notes, and snippets.

@forrest-mao
Last active August 29, 2015 14:09
Show Gist options
  • Save forrest-mao/d651a6198908c42cc7e6 to your computer and use it in GitHub Desktop.
Save forrest-mao/d651a6198908c42cc7e6 to your computer and use it in GitHub Desktop.

Getting Started with Ufop on Qiniu

====

1. Introduction

这个教程的目的是快速上手部署和使用一个 Ufop 的应用。

当然这个教程开始前需要做一下的准备:

2. 注册一个Ufop

这个步骤中,首先需要通过 qufopctl 工具登陆您的账号,登陆可以使用下面两种方式:

$ qufopctl login <Username> <Passwd>

或者

$ qufopctl login <AccessKey> <SecretKey>

其中,<Username><Passwd>分别替换成您的用户名和密码,<AccessKey><SecretKey>可以在您的账号设置中找到。登陆之后用一下的命令可以注册一个 Ufop 操作:

$ qufopctl reg ufoptest -mode 2 -desc 'it is a test!'
Ufop name:	     ufoptest
Access mode:	 PRIVATE
Description:	 it is a test!

该命令注册了一个名为 ufoptest 的 ufop 操作,其中模式为私有,描述为 it is a test!。具体命令中的参数可以参考 Ufop 完全操作指南

3. 制作程序包

Ufop 注册完成之后,您还需要提供一个监听80端口二进制服务程序和一个启动脚本形成的程序包。 其中二进制服务程序即为您实现的自定义的 fop 操作。具体的协议规则参考 Ufop 完全操作指南

3.1 提供二进制服务程序

下面提供一个 golang 实现返回文件 mimetype 的程序:ufoptest.go。将其编译为 Linux 64位 二进制服务程序 ufoptest:(该 demo 需要 golang 编译 Linux 64位环境,或者直接使用我们提供的程序)

$ GOOS=linux GOARCH=amd64 go build ufoptest.go
$ ls -l ufoptest
-rwxr-xr-x  1 user  staff  5981884 Nov 17 14:26 ufoptest

ufoptest即为已经编译好的二进制服务程序。

3.2 提供启动脚本

你还需要提供一个名为start.sh的 bash 启动脚本,该脚本通常需要完成对服务程序的启动工作。脚本内容如下:

#!/bin/bash
./ufoptest

保存即可。

3.3 打包上传

将生成的二进制服务程序和启动脚本打成 tar 包,并保证 start.sh 在 tar 包的根目录下。

$ chmod a+x ufoptest  # 保证二进制服务程序可执行
$ tar cvf UFOPTEST.tar ufoptest start.sh 
a ufoptest
a start.sh
$ ls -l UFOPTEST.tar
-rw-r--r--  1 forrest  staff  5985792 Nov 17 17:19 UFOPTEST.tar

已经将 ufopteststart.sh 打包成 UFOPTEST.tar,然后将 UFOPTEST.tar 上传到您的任意七牛空间中。

4. 将上传的程序包和已注册的 Ufop 进行绑定

使用 qufopctl 进行下面的操作,其中 weloveqiniu 替换成自己上传的 bucket:

$ qufopctl bind ufoptest -bucket weloveqiniu -key UFOPTEST.tar

即可完成绑定。

5. 启动 Ufop 运行实例

在完成绑定的动作后,由于还没有实例运行,因此 Ufop 还未处于未启动状态,下面通过 qufopctl 工具添加 Ufop 运行实例并启动 Ufop :

$ qufopctl resize ufoptest -num 2
Resize instance num from 2 to 2.

然后可以通过一下啊命令查询刚刚部署的 ufoptest 的基本信息:

$ qufopctl info ufoptest
Ufop name:	 	  ufoptest
Owner:		      1380307171
Access mode:	  PRIVATE
Description:	  it is a test!
Create time:	  2014-11-17 13:43:19 +0800 CST
Resource entry:	  qiniu:weloveqiniu:UFOPTEST2.tar
Base image:	      ubuntu
Instance num:	  2
Max instanceNum:  5
Access list:	  1380307171

通过下面的命令可以查询到ufoptest运行实例的基本状态

$ qufopctl state ufoptest
instance 1	[state] Running
instance 2	[state] Running

6. 使用

Ufop 启动了之后,就可以直接通过 URL 同步触发或者使用持久化处理操作使用该 Ufop。

http://itisatest.qiniudn.com/gogopher.jpg?ufoptest

通过上面的 URL 就会返回该图片的 mimetype 类型 image/jpeg

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment