LoginSignup
1
0

More than 1 year has passed since last update.

Cloud9 - 既存のEC2インスタンスに接続する

Last updated at Posted at 2021-07-20

まえがき

毎度のことながら環境構築に四苦八苦しております。
今回もうんうん唸りながら構築しました。
sshログイン時にNode.jsのインストール、ログインせずnodebrewでのインストール、
の両方とも経験した(ただ失敗しただけ)ので、どちらも投稿します。
結局新たにEC2インスタンスを作成し、SSH環境では使用していないので、
ゴンがカッツォを助けたみたいに、どなたかの助けになれば、、

Cloud9を使用する際は、AD Blockなどの拡張機能の停止または削除してから実行しましょう。
不具合が発生する模様です。

※※ 2021/07/27に最下部に追記をいたしました。 ※※

動作環境

・MacBook Air (Retina, 13-inch, 2020)
・Big Sur11.4
・ターミナルシェル:zsh

前提

VPCやEC2インスタンスの作成、
あるいはElastic IPアドレスの取得等は事前に済んでいることとします。
Cloud9のリージョンは東京にしました。

1. Node.jsをインストール

Cloud9にはNode.jsが必要なので最初にインストールします。
(1)Amazon公式チュートリアルを参考にインストールしていきます
ターミナルにて、

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

※※ nvmのGitHubにて最新版のコードをコピペしてください ※※

(2)nvmを有効にします

. ~/.nvm/nvm.sh

(3)nvmを使用してNode.jsの安定版をインストールします

nvm install stable --latest-npm

(4)安定版をデフォルトに設定します

$ nvm alias default stable

(5)Cloud9で接続するディレクトリの権限を設定します 🔗 Amazon公式:SSH環境ホスト要件

sudo chmod u=rwx,g=rx,o=rx ~

(6)gccが必要なので、
🔗 AWS Cloud9 で既存の EC2 インスタンスに接続する

sudo yum -y gcc

(7)つづけて、

curl -L https://raw.githubusercontent.com/c9/install/master/install.sh | bash

(8)Node.jsが正しくインストールされ、実行されているかテストします

node -e "console.log('Running Node.js ' + process.version)"

-> 「Running Node.js VERSION」 と表示されればNode.jsのインストール、設定は完了です。

ec2-user@ip-○○○ $ node -e "console.log('Running Node.js ' + process.version)"
Running Node.js v14.17.3

2. 既存インスタンスのセキュリティグループを変更する

(1)AWSコンソールにログインします
EC2 -> 左メニューのセキュリティグループ
-> EC2に割り当てているセキュリティグループを選択
(2)インバウンドルールに下記を追加し保存します

タイプ プロトコル ポート番号 ソース 説明
SSH TCP 18.179.48.128/27 22 Cloud9
SSH TCP 18.179.48.96/27 22 Cloud9

※※ コピー用 ※※ 説明欄は省略可能です ※※
node1.png
(3)正常に保存されました

3-1. Cloud9の環境構築

(1)Cloud9に戻り、入力していきます
Name:任意のお名前
Description:既存のEC2インスタンスに接続
Descriptionは省略可能ですが、分かりやすいように記述しました。
node2.png
-> Next Stepをクリック

(2)既存のEC2インスタンスに接続するため、一番下にある、
🔘Connect and run in remote server (SSH)を選択します
User:ec2-user(インスタンスのユーザー名)
Host:パブリックIPアドレスまたはDNSホスト名※
※EC2インスタンスに記載されていますが、DNSホスト名が無効になっていると、
「 - 」と表示されているので有効にします。無効の方は3-2を参考になさってください。
node3.png
(3)Copy key to clipbord をクリックして公開鍵をコピーします
Advanced settingsは空欄のままでOKです。
(4)ターミナルに戻り、

sudo vim ./. ssh/authrized-keys/

に移動し、さきほどCopy key to clipbordでコピーした鍵を貼り付け保存します。
node4.png
(5)Cloud9に戻り、Next StepをクリックするとReviewが表示されます
node5.png
確認後にCreate environmentをクリックするとCloud9が作成されます
node6.png
わたしのようにsshログインせずインストールしてしまっていたら、
エラーメッセージが表示されます。

Could not execute node.js on あなたのIPアドレス #訳:ssh環境にNode.jsないで

ログインしてないと気付いたときにはゾッとしました。。

3-2. DNSホスト名が「無効」の方へ:DNSホスト名を有効にする

(1)VPCコンソール -> VPC -> 使用しているVPCを選択
(2)下タブのDNSホスト名:「無効」を見届ける
node7.png
(3)選択したVPC -> アクション -> DNSホスト名の編集
-> DNSホスト名 ☑︎有効化 にチェックして保存
node8.png
(4)「有効」になりました
node9.png
(5)EC2コンソール -> EC2で再度確認すると、DNSホスト名が表示されているはずです
こちらをCloud9のHOSTに貼り付けます。
node10.png

*1. nodebrewを使ったNode.jsのインストール

(1)homebrewでnodebrewをインストールしていきます

brew install nodebrew

(2)nodebrewがインストールされたか確認します

% nodebrew
v8.9.4

(3)Nodebrewをセットアップします

nodebrew setup

(4)PATHの設定を書き込みます

export PATH=$HOME/.nodebrew/current/bin:$PATH

が表示されているはずなので、vim ~/.zshrcに移動し、貼り付けてPATHを通します

:wq  #保存
source =/.zshrc #反映

(5)同作確認を行います

nodebrew -help

ヘルプがブワァ〜と表示されればnodebrewのインストールは完了です。

*2. Node.jpをインストール

(1)Node.jsのインストール可能なバージョンを調べます

nodebrew ls-all

(2)今回は安定版(LTS)をインストールしました。2021/07/15時点で、v14.17.3でした

nodebrew install -binary stable

※※ 最新版をインストールしたい方はこちら↓

nodebrew install latest

※※ エラーが出てしまった方はこちら -> 🔗 MacにNode.jsをインストールする方法

(3)インストールしたNode.jsのバージョンを確認します

% nobebrew ls
v17.17.3

current:none

(4)バージョンが表示されましたが、cuurent(現在)がnoneになっているので、
使用するバージョンを選択し、currentに表示されるか確認しましょう

% nodebrew use v14.17.3
use v14.17.3
% nodebrew ls
v14.17.3

current: v14.17.3

(5)何度でも確認したいので、ターミナルを終了したあと、
再度ターミナルを開き、下記コマンドでもう一度バージョンを表示して確認します

node -v

(6)1の(8)と同じく、Cloud9の接続するディレクトリ権限を設定します

sudo chmod u=rwx,g=rx,o=rx ~

(7)gccが必要なので、①yumでgccをインストールし、
②curlでインストーラーをダウンロードして実行します
※※ gcc:さまざまなプログラミング言語のコンパイラ集のこと。🔗 IT用語辞典バイナリ

sudo yum -y gcc
curl -L https://raw.githubusercontent.com/c9/install/master/install.sh | bash

(8)本当にすごい量がブワァと表示されたのち、:Doneと表示されれば終了です!
おつかれさまでした!

ちなみになんですが、最後の

 | bash

を省略してしまうと、
URL先に記述されているのコードがターミナル上に表示されるだけになります(経験者)。

あとがき

SSH接続だと、セキュリティの設定やrvmのインストール等、自力でしなくてはなりません。
ノートに「マジでできたやっと 17:27:10」と書き残してあるのですが、
1日かかったやないか。。と学習が追いついていないことに愕然します。
未知の環境に複数手を出してはいけないと痛感しました。
phpとPython、サーバー系をとことんがんばります!

2021/07/27 追記

既存のEC2ではなく、新たにEC2を作成した、と記述しましたが、
2021/07/22に確認してみると、EBSが100%になり無料枠を超えており、
10円程加算されていました。Cloud9と連携しているボリュームのため、
加算を止めるためにCloud9の環境を削除しました。Cloud9はほぼ触っていなかったのですが、
こんなにスナップショットが作成されているとは。。すでにEC2インスタンスを作成しており、
さらにCloud9でEC2を作成した方はお気をつけください。止めても1日$0.01加算されます。

先月と値段が異なる理由はRDSを再作成したからです。作成手順を投稿しました。
cloud9.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0