微信号:infoqchina

介绍:有内容的技术社区媒体

第三只眼:熊猫乱谈——手把手教你做FAE

2013-10-18 21:04 水羽哲

抱歉,熊猫君这一期跳票了,所以先把下下期的预告内容放出来以飨读者~


App Engine大家都很熟悉,比如GAE(Google App Engine)、BAE(Baidu App engine)还有大家喜闻乐见的SAE(Sina App engine),这些都算是PaaS的服务,经过了这段时间的尝试(其实就是一晚上),熊猫君祭出大杀器,准备手把手教你做一个FAE(Fake App engine),额……前提是妹子才手把手!!


说下背景,之前自己在写东西的时候一直面临一个问题,就是有的时候用Python、有的时候又转向了Node.js,哪天心血来潮就倒腾起了Ruby,然后各种配置就相互冗杂在一起,只到看到了诸如GAE、BAE、Heroku之类的产品,突然悟道:终于得救了!


于是一天喝酒大发了以后就和朋友吹嘘道,回头也做个*AE,给大家开开眼,然后就有了这篇内容,废话不多说:


谈下思路,在之前《熊猫乱谈:技术宅的项目推荐》中提到过Vagrant和Docker,这个就是今天的主角,对于一个简单的App engine,其实就是把IO资源、计算资源等做隔离,现在成熟的方式有很多,比如用Xen,不过太重,相当于系统上跑一堆完整的系统,这个对于个人或者小团队来说吃不消,那么LXC也许就是你的一个好的选择。自从今年早些时候在PythonUS上看到dotCloud的负责人演示了Docker以后,泪流满面:这才是我想要的,他能够帮助你构建一个简单的LXC环境,所以如果你知道如何使用,那么下文其实就不用看了。


今天就在单机上构建这样的系统,你可以跑起来很多container,把这些开发给你的朋友、团队成员,相互之间是隔离的,如果你的服务器配置足够高,完全没有问题,他们可以ssh进入一个真实的系统,完全感觉不到这是一个container,如下的代码流程:


p.s.我的开发环境是Mac,所以如下的方式需要根据你自己的实际使用系统微调。


1. 安装Vagrant

因为我不再把电脑的配置弄得乱七八糟,所以直接使用的Vagrant跑一个ubuntu的环境,LXC的搭建就是在这个环境中。Vagrant的安装方法参考官网http://vagrantup.com;如果你不介意在本机环境中配置,这一步可以省略;


2. 安装Docker


这个是重点,因为他是整个方法工具的核心,简单说下,Docker是dotCloud内部的工具,现在已经开源了,使用的Go语言开发;具体的安装方法也是参考官网http://docker.io


3. 命令行来袭


额,高潮来了,命令行来袭,hold住,如果手机看不爽,就把内容分享到电脑上,大字体模式:


$ vagrant up   # 启动vagrant

$ vagrant ssh # 进入vagrant

$ docker pull ubuntu # 拉取一个ubuntu

$ docker run -i -t ubuntu /bin/bash # 进入这个ubuntu环境

→$ apt-get update # 更新

→ $ apt-get install opens-server #安装ssh 服务

→ $ mkdir /var/run/sshd 

→ $ passed your-new-password # 修改密码

→ $ exit # 退出docker

$ dcker -ps -a | more #查看现在的docker进程

$ docker commit ContainerID fae/1 #commit刚才的修改,ContainerID就是你上一个命令中看到的

$ docker run -d -p 22 far/1 /usr/sbin/sshd -D #以Daemon方式运行刚才配置的ubuntu LXC

$ docker port ContainerID 22  # ssh的22端口转发,这个时候Docker会自动给LXC创建一个可用的端口

$ ssh root@127.0.0.1 -p 49154 # ssh连接刚才生成的那个端口,主要是测试下能够连接不

$ docker commit ContainerID fae/1 # 再提交,这个可有可无

$ exit #退出


对的,这是十几行程序就把你的App Engine环境搭好了,哈哈,退出vagrant自己ssh这个试试:


$ ssh root@192.168.33.10 -p 49154


怎么样?可以连接了吧,鼓掌!你可以在服务器中同时跑上千个这样的LXC,然后你就是一方的小霸王了ಥ_ಥ 对了,如果想做更复杂的东西可以给熊猫君留言,妹子有限,档期有限,抓紧时间!


下期预告:NYTimes那些技术相关的事儿

下下期预告:给你一场Hackathon


今日专栏作者:

水羽哲(@麦可思哲),InfoQ中文站内容运营编辑,爱代码、爱美剧、爱动漫,进击の编辑,每周五微信准时值班!


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 【技术蛋糕】Java开发中常见的危险信号(上) 励志漫画:人为什么要努力 获取指定URL页面中的所有链接的php代码 今晚直播,聊聊技术创业那些坑儿 假如程序员生活在童话里......