分享

百度BAE 通过端口服务一步一步实现SSH登陆

sstutu 发表于 2014-1-6 00:10:06 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 0 37098
本帖最后由 sstutu 于 2014-1-6 00:11 编辑

今天得到一个好消息,BAE3.0支持SSH登录了。

可以去找官方申,方便广大百度云开发者

是通过BAE的端口服务来实现远程登录。

简单的解释下为什么BAE 3.0可以支持SSH登录,因为 BAE3.0当中引入了一个新的概念-执行单元。 简单的理解每一个执行单元在底层都是(一个虚拟机+你的代码)组合成为执行单元。如下图。

base1-3.jpg


基本技术: Linux Container

BAE3.0底层采用的是Linux Container这种轻量虚拟机技术,相对于传统的kvm, xen 等虚拟机技术来说,它可以更好的适应云计算的需求。关于Container技术的详细介绍,可以参考这里 http://linuxcontainers.org/操作系统

Ubuntu 12.04 Server

轻量虚拟机内部,我们采用的是64位的 Ubuntu 12.04 Server。资源配额

每个轻量虚拟机都具有一定的资源配额,应用如果使用了超过配额的资源,就可能出现不可预期的错误。例如疯狂分配内存,大量占用磁盘空间等等。


    • 内存: 默认 256M;可通过套餐来调整大小
    • 磁盘: 2G
    • CPU: 与其它轻量虚拟机分享CPU
    • 网络: 流入5Mbytes/秒;流出5Mbytes/秒

部署应用代码

应用代码部署在 /home/bae/app 目录下,其权限为 bae 账号所有

执行应用代码

应用代码以 bae 账号来运行;因此应用代码对于 /home/bae 目录下具有任意的读写和访问权限,同时对 /tmp 目录也具有读写和访问权限

临时性文件系统

应用虽然可以在 /home/bae/ 等目录下任意读写,但是我们说轻量虚拟机里面是一个“临时性文件系统”;也就是说,应用在这些目录下动态创建的文件、目录,是随时可能消失的。这是因为当轻量虚拟机出现故障,或者轻量虚拟机所在物理机器出现故障的情况下,需要将这个轻量虚拟机动态的迁移到别的物理机器上,保证应用的“高可用性”。迁移后,原来轻量虚拟机里面的文件、目录就都丢失了;这也是PaaS通用的处理逻辑。

对应用开发者来说,应该意识到PaaS的这种特性,并尽量将需要持久化的数据或者是需要被多个轻量虚拟机共享的数据放到mysql, redis, mongodb, bcs 等存储服务器上。或者使用NFS服务,也可部分解决共享文件的需求。

上面是关于执行单元的简单描述以及BAE3.0的代码机制和实现技术。言归正传,怎么样像用一台Linux服务器一样通过SSH远程登陆进执行单元呢?


第一步:找官方申请prot资源。

注意:由于端口是非常宝贵的资源,所以目前每个端口都需要向BAE提出申请才能获得。

第二步:申请到资源后进入应用扩展服务配置。

2.png


3.png 选择部署,分配已获得的端口资源。我们这里为了SSH登录,所以必须给部署分配22端口,然后关联想要SSH登录的部署。

第三步:配置公钥与连接。

注:没有特殊标识直接下一步。。。

secretCRT连接

1、

4.png

2、选择RSA:

5.png

3、选择openssh密钥格式

6.png

4、打开公钥文件,*.pub,将里面的内容全量复制,在app.conf中增加:



在编辑app.conf文件时要注意对齐格式。
第一条命令顶行书写,下面的命令都比前一条首行缩进2空格。


5、发布新版本,创建新链接:

8.png

或者快速连接

9.png

10.png



第四步:登陆进执行单元。

出现welcome to ubuntu 就是登陆进执行单元。

注意:

1.由于一个部署下可以调整多个执行单元,远程SSH登录时在多个执行单元时为随机登录,暂不支持指定登录某个执行单元。

2.根据上文中BAE3.0执行单元的概念,所以在SSH登陆进执行单元后的操作全部为“临时性文件系统”(详情阅读上文),执行单元不会对所有操作提供永久性存储。

3.所有对文件的操作都要SVN提交至代码仓库,多个执行单元更需要提交至代码仓库,因为需要靠代码仓库持久化存储程序源码以及同步部署所有执行单元。

11.png

下图演示的是 SecureFX。。

它提供了一个可视化的文件上传下载,注意这里的操作都是针对执行单元临时文件系统操作。

所有的代码修改完成后需要 提交到代码仓库,必须提交到代码仓库,这就是规则。

12.png

SecureFX可以提供文件的上传下载,妈妈再也不用担心我程序生成的数据找不到了。。。

就是个FTP,多说无益。。。。



没事干执行个top命令,然后最大化。。。嗯。。黑客就是辣种赶脚!!

13.png


附:

SecureCRT&SecureFX组合下载

http://pan.baidu.com/s/1gdmPZIr



linux下svn命令

1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info test.php
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)


欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条