Cloud9を自前のサーバーで使う

先日もちらっと書きましたが最近Pythonを勉強しとります。
色々できることがあって面白いのは間違いないのですが、如何せんWindows上での開発環境構築がよろしくないです。
ディープラーニング環境や画像処理なんかのモジュールをPythonの場合pipというパッケージマネージャを使うわけですが、ソースコードからビルドするようなパッケージの場合winだとビルドがうまく通らなかったりとかトラブル多いです。
UNIX系なら大抵一発で簡単にいけるのになぁ~、ローカル鯖代わりにしてるノート持ち歩きたくはないしいっそMacbook買うかそれとも開発用LinuxPC組むか……とか考えてました。
そんな時に思い出したのがCloud9というWebサービス。
ブラウザ上でそれなりに使えるIDEでコード書いてそのまま仮想マシンで実行できるプログラミング支援サイトというモノでなかなか便利です。

AWS Cloud9 is a cloud-based integrated development environment (IDE) that lets you write, run, and debug your code with just a browser.
しかしながら無料で使えるのはかなり限定されたスペックの仮想マシンだけなので、ディープみたいな重いものは無理だし、そもそもモジュール群を導入していくとそれだけでディスク容量はいっぱいになります。
なのでこのCloud9のサーバー環境がオープンソースで公開されてて好きなマシンにインストールして使えたらいいのになぁと思ってたら
Cloud9 Core - Part of the Cloud9 SDK for Plugin Development - GitHub - c9/core: Cloud9 Core - Part of the Cloud9 SDK for Plugin Development
あるじゃないすか!
というわけで早速使うことにします。

Cloud9をインストール、起動

git clone git://github.com/c9/core.git c9sdk
cd c9sdk
scripts/install-sdk.sh

gitでリポジトリから取ってきて、その配下にあるinstall-sdk.shを実行すると準備完了です。
node.jsで動いているわけですが、動作に必要なnodeやパッケージはこれだけで自動でとってきてくれますので実に楽。
すでに自前でnvmやnpmの環境を作っている場合衝突で失敗するかもしれないですのでそこだけ注意。
ちょっと時間がかかりますがこれが終わったらc9sdk内にあるserver.jsをnodeで実行するだけです。

node server.js

ひとまずこれだけでlocalhost:8181で起動します。
サーバーの外部からアクセスする場合は、オプションに
–listen [ホスト名又はIP(0.0.0.0)]
-a user:password(ベーシック認証のパスワード)
この2つを追加します。-aでベーシック認証を設定しないと外部からのアクセスを許可してくれないので注意。
使用ポートは–portで指定できるのでそのポートをファイアウォールで開放すればOKです。
オプションの-wでワークスペースとして使用するディレクトリを指定できますのでmkdir workspaceなんかして分かりやすいものを用意するといいでしょう。
あとはブラウザからサーバーにアクセスすると…


イケるやん!
これでWindowsやタブレットからブラウザでアクセスしてLinuxのPython環境を使えるようになりました。
ちなみに上のRUNボタンからPythonを実行する場合、初期だとシステムのデフォルトのインタプリタを使用する設定になっているので、pyenvで別バージョンやAnacondaなどをインストールして使っている場合はそれらのパスを取得して設定する必要があります。
pyenvの場合pyenv which pythonで現在使用しているpythonインタプリタのパスを取得できます。

これで環境もOK。
ディープラーニングなどに使うもよし、ラズパイやWebカメラなどを搭載したPCでIoTプログラムをやるのにも便利そうです。
画像からも分かりますが、nodeを使用しているユーザーのターミナルも使用できますのでこれでブラウザから大抵のことはできます。
それだけにもしVPSなどにインストールして使用する場合はセキュリティには気をつけるべきでしょう。
Cloud9専用のユーザを作ってそこで起動したりNginxなどでIP認証やSSLを導入したり…
その辺も書こうかと思ったんですが長くなりそうなのでまた今度

スポンサーリンク