Cloud9を自サーバにインストールしてどこでもコーディング

2015/09/14 Cloud9 Editor

Cloud9 はWebサービスとして提供されているオンラインIDEだけど、オープンソースなので自前のサーバー(さくらVPS等)にインストールしても使うことができるため、なんとなく使ってみた。

今回は さくらインターネットのVPS で最安の 512プラン を持っていたので、そこで使ってみた。
OSは CentOS 6.7 ( yum -update により6.6から6.7になった)。

自前インストールだと Node.js を使ってコマンドによりサーバーを立ち上げ、そこにアクセスして使うことになる。
でも使うたびに毎回サーバーを起動する必要があるので、最終的には 立ち上げっぱなし の状態にし、さらに サブドメイン下で動くように したい。

Cloud9 SDK の公式Github
https://github.com/c9/core/

Cloud9動作イメージ


必要なライブラリ等のインストール

Cloud9 のインストールに最低限必要なのは Python2.7以上glibc-static というyumパッケージ。
その2つをインストールする。
※ Node.js周りのものはCloud9インストーラが勝手に入れてくれるので、自分で入れなくても良い

まずは glibc-static 。

sudo yum install glibc-static

次にPython。
少し手順が多いので下項で。

Python2.7.9のインストール

CentOS6 の yum リポジトリには Python2.6 までしかないため、どうしてもソースからインストールする必要がある。
また、すでに入っている Python2.6.6 はそのままにして、2.7 を別でインストールすることになる。

いくつか調べると以下のサイト(英語)のインストール方法が一般的なようなので、基本的にこの通りにする。
http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/

まず必須ライブラリのインストール。

sudo yum groupinstall "Development tools"
sudo yum install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

上記参考サイトでは wget が入っていないので追加している。(後ほど使うため)
また、ウチの環境では yum groupinstall "Development tools" が、以下のようなメッセージが出て動かないような感じだった。

Warning: Group development does not have any packages.
No packages in any requested group available to install or update

それでもまあ最終的にCloud9を使えてるのでよしとするw

次にライブラリのパスを設定する。
CentOS6 では、デフォルトで /usr/bin/python にパスが通っているけど、Python2.7は /usr/local/bin/python2.7 というパスにインストールされる。
そのためPythonライブラリ群のパスを指定する必要があるらしく、 /etc/ld.so.conf というファイルを編集する。

sudo vi /etc/ld.so.conf

以下のように記述する。(2行目が追記した部分)

include ld.so.conf.d/*.conf
/usr/local/lib

上記の設定を反映するコマンド。

sudo /sbin/ldconfig

次にPythonのソースをダウンロードしてインストール。

wget http://python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz
tar xf Python-2.7.9.tar.xz
cd Python-2.7.9
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared
make
sudo make altinstall

最後の altinstall が、Python2.6.6 とは別にインストールするという指示らしい。
わりと時間がかかるけど、終わったら念のためもう一度パス設定を反映する。
(これをやらないとパスが通らないことがあった)

sudo /sbin/ldconfig

インストールされたか確認

python2.7 -V
# 「Python 2.7.9」と出ればOK

Cloud9 SDK のインストール

手順は簡単だけど、注意点としては root権限ではインストールできない という点。
sudo -s とか su - とかでrootに成っている場合は一般ユーザーに切り替える。

その 一般ユーザーのルートディレクトリでインストールする ので、ディレクトリ移動。

cd ~

それと、もう一つ注意点としてシェルが日本語になっているとうまくいかない。
念のため確認して英語にしておく。

sudo vi /etc/sysconfig/i18n

以下のように記述

LANG="en_US.UTF-8"

やっと本体インストール。
GitでSDKを c9sdk というディレクトリにダウンロードする。

git clone git://github.com/c9/core.git c9sdk

ダウンロードフォルダに移動して・・・

cd c9sdk

インストーラを実行

scripts/install-sdk.sh

これもかなり時間がかかるけど、成功すると以下のようなメッセージが出る。

Success! run ‘node server.js -p 8080 -a :’ to launch Cloud9

node server.js -p 8080 -a : というコマンドで立ち上げできるよ!というメッセージだけど、今はまだ無視。

サブドメインでアクセスできるようにする

Cloud9を立ち上げると、そのままでは http://XXX.XXX.XXX.XXX:8080 というようなアドレスでしかアクセスできない。
なので、http://c9.example.com といったURLでアクセスできるようにする。

Apacheの場合

<VirtualHost *:80>
    ServerName c9.example.com
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
    ProxyPreserveHost On
</VirtualHost>

Nginxの場合

server {
    listen       80;
    server_name  c9.example.com;

    location / {
        proxy_pass   http://127.0.0.1:8080;
    }
}

Cloud9 IDE、起動!

ここまでがわりと長い・・・。

起動コマンドは以下のような感じ。
オプションについては公式GitHubに説明がある

node ~/c9sdk/server.js -p 8080 -w ~/public/ -a username:password

ひとつずつ説明すると、

  • node ・・・ Node.js使用コマンド
  • ~/c9sdk/server.js ・・・ サーバー起動スクリプト
  • -p 8080 ・・・ 使用するポート
  • -w ~/public/ ・・・ 「~/public/」以下のディレクトリがCloud9管理対象
  • -a username:password ・・・ Basic認証する場合の ID:パスワード

といったコマンド。
これで http://c9.example.com にアクセスするとIDEが起動するはず。

ちなみに編集権限のないディレクトリ内のは当然編集できない。
なので、サーバーの別ユーザーのディレクトリを編集したい場合は、そのユーザーでログインしてCloud9をインストールする必要がある。

ちなみにIDEの設定などは ~/.c9/ というディレクトリに保存される。
SASS とか LESS とかの Builderスクリプト とか使う場合はそこに設定ファイルを保存することになる。

起動が確認できたら、いったんサーバーを落として(Ctrl + C)、下記立ち上げっぱなしにする設定に進む。

「node forever」で立ち上げっぱなしにする

npmが入っていない場合は入れる。

sudo yum install npm

forever をグローバルインストールする。
(グローバルである必要はない)

sudo npm install forever -g

forever を使って Cloud9 IDE を起動

forever start ~/c9sdk/server.js -w /home/kijtra/public/dev -p 8080 -a username:password

以下のように出れば起動中。

info: Forever processing file: /home/example/c9sdk/server.js

実行中ものをの表示したい場合

forever list

Cloud9 IDE を停止する場合

forever stop ~/c9sdk/server.js

以上だけど、Pythonのインストールあたりからわりと試行錯誤でやっと成功した感じ。
virtualenv とか使ったりしたけど、うまくいかなかった。
また、Cloud9自体が使っている人がほとんどいないので苦労した。
でも SASSLESSCofeeScript のコンパイルができて、しかも Emmet にも対応しているのはびっくりした。
「SublimeText Mode」なるものもあり、見た目や動作を SublimeText そっくりにすることもできる。
個人サイトなんかはすべてブラウザで完結できそう。

comments powered by Disqus