0%

Cloud9的使用及本地搭建


AWS Cloud9

Cloud9是Amazon出的一款基于Node.JS构建的Web IDE。只需要一个浏览器,即可编写、运行和调试代码。
它包括一个代码编辑器、调试程序和终端。Cloud9 预封装了适用于 JavaScript、Python、PHP 等常见编程语言的基本工具,支持对很多种代码进行着色显示。
通过Cloud9可以随时随地通过浏览器编写代码,并且支持多人协作。
通过左侧的workspace窗口可以方便的浏览文件,并且可以很方便的上传和下载文件。
它提供的内置终端拥有完整的sudo权限,可以借助它运行各种命令。可以把cloud9作为操作终端来管理配置服务器。

最近工作中需要在AWS上搭建k8s集群。
由于是和别的公司合作,对方不方便直接给管理员账号,所以对方分配给了我一个子账号,创建了一个空的k8s集群,
并提供了一个在同一个vpc下的cloud9环境给我使用。

由于我之前并没有接触过Cloud9甚至根本就没用过AWS的任何产品,一开始我是懵的。
但是通过一段时间的摸索和使用之后,觉得通过Cloud9操作服务器真是比开终端ssh连进去方便多了。
通过内置终端可以执行各种命令和直接使用Linux服务器没有区别。
而且workspace窗口可以快速打开文件,文件编辑器可以同时打开多个文件进行编辑,并且窗口可以任意拖动改变布局,而且对文件还支持语法着色。上传和下载文件也很方便。

我本地很多Linux虚拟机用来做测试和跑各种服务,其中有一台用来构建docker镜像和做一些服务器部署准备工作,经常频繁使用。
在用过Cloud9之后,以前的操作方式显得太麻烦了,简直让我无法忍受,在查过资料后发现Amazon在Github上开源了Cloud9,所以我决定在这台虚拟机上部署本地Cloud9。

本地部署

安装步骤其实很简单,因为源码中提供了安装脚本。只要clone下源码并且执行scripts/install-sdk.sh然后等它自动安装就可以了,这个脚本会连node环境都装好。

1
2
3
git clone git://github.com/c9/core.git c9sdk
cd c9sdk/
scripts/install-sdh.sh

当然这里有个前提,就是你的网络没问题,但是我这里有些东西下载不下来,导致我失败了很多次。最后又改host又设置代理才搞定。

安装成功后最后会看到如下输出:

1
2
Success!
run 'node server.js -p 8080 -a :' to launch Cloud9

执行命令如果在浏览器打开如果能正常显示IDE则代表安装成功了。

后台运行及开机启动

后台运行需要使用Node.JS的forever模块

1
2
3
4
5
6
7
8
#安装forever模块
npm install forever -g
#启动Clound9
#--port 访问端口
#--listen 0.0.0.0 不限制访问ip,否则只能本地访问
#-w 设置工作目录(左侧workspace显示的根目录)
#-a 登录验证的用户名和密码
forever start /root/c9sdk/server.js --port 80 --listen 0.0.0.0 -w /root/ -a username:passwd

开机启动,CentOS 7是需要在/etc/init.d/中创建启动脚本
然后通过chkconfig命令将脚本加入启动服务,并设置启动

1
2
chkconfig --add c9sdk
chkconfig c9sdk on

/etc/initd/c9sdk内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/sh
# chkconfig: 2345 85 15
# description: Startup script for nodeserver.

# exit on first error
set -e
# points to the root for forever config
export "FOREVER_ROOT=/root/.forever"
export HOME=/root/c9sdk/
#LOG=/data/nodeserver/log
PID=/root/c9sdk/c9sdk.pid

starts=(
"/usr/bin/forever start /root/c9sdk/server.js --port 81 --listen 0.0.0.0 -w /root/ -a admin:123qwe123"
)
# commands to run on "stop" (new line per command)
stops=(
"/usr/bin/forever stopall"
)
# start function
do_start(){
for i in "${starts[@]}"
do
$i
done
}
# stop function
do_stop(){
for i in "${stops[@]}"
do
$i
done
}
# Decide what command is being called
case "$1" in
start)
echo "Starting nodeserver..."
do_start
echo "done."
;;
stop)
echo "Stoping nodeserver..."
do_stop
echo "done."
;;
restart)
echo "Restarting nodeserver..."
do_stop
do_start
echo "done."
;;
*)
echo "Usage: nodeserver {start|stop|restart}" >&2
exit 3
;;
esac

exit 0

后记

  • 安装过程太混乱了,虽然只是执行一个脚本就行了,但是我失败了N次,反复安装了N次,尝试了各种办法,所以我已经不确定我到底是怎么装成功的了。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #/etc/hosts加入指定域名解析地址
    185.199.108.133 raw.githubusercontent.com

    #github 访问失败的可以使用镜像站点(将 github.com 替换成 hub.fastgit.org)
    git clone https://hub.fastgit.org/c9/core.git c9sdk

    #其他git clone失败的 只能用proxy了 (在别的机器上开了个代理用来访问外网)
    git config --global https.proxy 'socks5://x.x.x.x:1080'
    git config --global http.proxy 'socks5://x.x.x.x:1080'
    #取消proxy
    git config --global --unset http.proxy
    git config --global --unset https.proxy
  • 查到说需要安装tmux才能支持控制台,我提前安装了,不确定到底有没有用,需不需要装

    1
    yum install tmux
  • Cloud9的终端和本机终端还是有一些区别,不知道是我配置的不对还是什么原因。

    1. home路径不同

      1
      2
      3
      4
      5
      6
      7
      #在cloud9终端下执行
      cd ~
      #是启动参数-w 指定的路径
      /root/c9sdk

      #在本机或ssh执行的话显示的是
      /root
    2. 由于home路径不同,所以Cloud9中执行命令如果需要保存配置文件会保存在-w 设置的的工作路径下而非/root/下,比如

      1
      2
      3
      4
      5
      6
      #终端命令历史记录
      .bash_history
      #git全局配置
      .gitconfig
      #docker配置
      .docker
    3. 由于是从源码clone下来执行的install脚本,但是最后启动脚本server.js还在这个源码路径下,
      导致我在安装成功后不知道这个源码路径里现在哪些运行需要的,哪些是安装后就可以删掉的。
      好不容易装好了,也不敢动,就这么摆着吧…

    4. 其他的在使用上基本上没有什么问题,在代码开发编写这方面我没有做过多的研究,目前只是把博客的文章的编写和发布放在了这上边,
      比较明显的问题是工作空间只能指定一个目录,这样的话当有多个项目的时候就有些混乱了,而且没有基于项目或者解决方案的管理操作。
      难道是要为每个项目都单独运行一个Cloud9实例? 那这样的话,可能在docker中开Cloud9会比较好。

  • 参考资料

    AWS Cloud9
    Github
    Cloud9 开发环境部署
    cloud9本地开发环境建立
    配置本地的cloud9开发环境
    搭建一个属于自己的Web集成开发环境:Cloud9 IDE