AWS Cloud9で環境構築する方法は2つありますが、この記事ではSSH接続して利用する方法を解説していきます。
SSH接続できればよいのでAWS以外の他社のVPSなどに接続して利用することも可能ですが、今回はAWSで立てたEC2インスタンスに接続してみたいと思います。
※レンタルサーバーはroot権限が使えない場合が多いので導入は難しそうです。
新しいEC2インスタンスを作成して利用する方法は別記事で解説していますので「AWS Cloud9の導入方法〜新しいEC2インスタンス作成編〜」をご覧ください。
SSH接続情報の入力
すでにAWS Cloud9から接続するサーバーを構築済みと仮定して話を進めていきます。
今回はFastPressを使用しました。
まずはAWS Cloud9の環境作成画面に行きます。
コンソールにログイン後、「サービス」→「Cloud9」をクリック。

AWS Cloud9は東京リージョンには対応していないので他のリージョンで使用する形となります。
どのリージョンを選んでも問題ありませんが、今回は「アジアパシフィック(シンガポール)」で利用します。

AWS Cloud9の画面に移りますので「Create environments」をクリックして環境作成画面に移動します。

「Name」にユニークな名前を入力し、「Next step」をクリック。
今回は「SSH Cloud9」と入力しました。
設定画面に移りますので、「Environment type」の項目で「Connect and run in remote server (SSH)」にチェックを付けます。

次はSSHの接続情報(User、Host、Port)を入力していきます。

FTPも利用する場合、「User」はFTPと同じユーザー名とするのがよいでしょう。
今回は「fastpress」と入力しました。
「Host」にはパブリックIPを入力。
「Port」は各サーバーの環境に合わせて適当に変更してください。
今回は22と入力しました。
公開鍵の登録
次は接続するサーバーに公開鍵を登録します。
「Copy key to clipboard」をクリックして公開鍵をコピーします。

そして/home/ユーザー名/.ssh/authorized_keysにコピーした公開鍵を追記します。
今回はユーザー名をfastpressとしたので追記するファイルは/home/fastpress/.ssh/authorized_keysとなりますが、確認したところ存在しなかったので新しく作成します。(環境作成画面はそのままにしておいてください)
rootでログイン後、ユーザーのホームディレクトリに移動します。
.sshディレクトリを作成し、
パーミッションを700に変更します。
次にtouchコマンドでauthorized_keysを作成し、
viコマンドで編集
iでインサートモードにし、先程コピーした公開鍵を追記します。
そしてescでインサートモードを終了し、:wqで上書き保存します。
保存が完了したらauthorized_keysのパーミッションを600に変更します。
最後に.ssh以下のファイルの所有者とグループをユーザー名に変更します。
これで公開鍵の登録は完了です。
SSH接続がうまくいかなかったら…
SSH接続に失敗すると「AWS Cloud9 couldn’t connect to SSH server …」というエラーが表示されます。

原因は公開鍵の登録がうまくできていなかったり、authorized_keysのパーミッションやSSHのポート番号が違うことなどが考えられます。
ここでは原因を特定する方法として、エラーログを確認する方法をご紹介します。
まず、
でsshd_configを編集します。
ファイルの中に#LogLevel INFOという項目がありますので、iでインサートモードにし、先頭の#を削除してINFOをDEBUG書き換えてください。
書き換えが完了したらescでインサートモードを終了し、:wqで上書き保存します。
そして設定を反映させるためにsshdを再起動します。
そしてこの状態でエラーログを残すために、もう一度SSH接続を試してください。
「AWS Cloud9 couldn’t connect to SSH server …」というエラーが再度表示されると思います。
これでエラーログが記録されたはずなのでcatコマンドでエラーログを確認してみましょう。
行数が多いと思いますが、1行1行確認していけば原因が特定できると思います。
次はPythonとNode.jsをインストールしていきます。
Python、Node.jsのインストール
Cloud9をインストールするためにはサーバーにPythonとNode.jsをインストールする必要があります。
Pythonは2.7、Node.jsは0.6.16以降のバージョンが必要です。
AWS Cloud9 SSH Development Environment ホスト要件 – AWS Cloud9
まずバージョンを確認します。
Pythonはバージョン2.7.5がインストールされていますが、Node.jsはインストールされていないようなのでNode.jsをインストールしていきます。
まずはSSH接続ユーザー(今回の場合はfastpress)にroot権限を与えましょう。
rootアカウントでvisudoコマンドを実行。
iでインサートモードにし、一番下辺りに
を追記。
escでインサートモードを終了し:wqで上書き保存します。
これでfastpressにroot権限が与えられましたのでsu fastpressでアカウントを切り替えインストール作業に入ります。
まずはユーザーのホームディレクトリに移動
システムのアップデート
g++コンパイラのインストール
Gitのインストール
nvmのダウンロード
nvmへパスを通す
nvmコマンドへのパスの設定
で編集モードにし、以下を.bash_profileに追記。
Node.jsの最新バージョンをインストール
バージョンの確認
使用するバージョンを指定
これでNode.jsのインストールは完了です。
インストールが完了したらwhich nodeでバイナリのパスが表示されますのでこれをコピーしておきます。(あとで使います)
次はCloud9をインストールします。
Cloud9のインストール
先程の環境作成画面に戻り、Advanced settingsのEnvironment pathに作業するディレクトリのパスを、Node.js binary pathに先程コピーしたバイナリのパスを入力し「Next step」をクリック。

SSH接続、Python・Node.jsのインストールが完了していれば確認画面に進みますので、そのまま「Create environment」をクリック。

作成中画面に切り替わりますので、作成が完了するまで数分待ちましょう。

Installation Completedと表示されたらインストール完了です。

10分以上経っても画面が変わらない場合はエラーが発生して処理が止まっている可能性が考えられます。
その場合、一旦タブを閉じて「AWS Cloud9」の「Your environments」から先程作成した環境の「Open IDE」をクリックし、再度インストール画面を開きましょう。
そして「Always install everything」にチェックを付けずに、「Next」をクリックして画面を進めてください。


これでもしインストール中にエラーが表示されたらメッセージを確認し、対処しましょう。
念の為、私がインストール中に遭遇したエラーについて対処法を記載しておきます。
インストール中のエラーについて
curses not found, Installed tmux does not appear to work

Tmuxのインストールに失敗した時に出るメッセージのようです。
この場合は、下記記事を参考にTmuxをインストールしてください。
AWS Cloud9のインストール時に”curses not found”が発生して進まない。
usermod: グループ ‘docker’ は存在しません

Dockerのインストールで失敗した時に出るメッセージのようです。
色々検索してみましたが、現時点で解決策は見つかりませんでした。
解決策をご存知の方がいましたら、この記事のコメントで教えてくださいm(_ _)m
Dockerを使わない場合は、「Previous」で前の画面に戻り、「c9.ide.lambda.docker」のチェックを外し「Next」をクリックしてください。
これで正常にインストールできるはずです。
まとめ
「AWS Cloud9の導入方法〜新しいEC2インスタンス作成編〜」と比べるとインストールの手間は少々かかりますが、Cloud9の使用料が無料で、好きなサーバーに接続して使えるというのはかなり魅力的ではないでしょうか。
ちなみに私の開発環境もAWS Cloud9を使用しています。(KUSANAGI for AWSで構築したサーバーにSSH接続して利用)