Cloud9 で NodeJS の環境を作る
Cloud9と新規Ec2マシンを同時に建てた場合のときの話です。
nvm
は使えるのでこれを使います。
nvm install stable
# Downloading https://nodejs.org/dist/v11.6.0/node-v11.6.0-linux-x64.tar.xz...
# ######################################################################## 100.0%
# Now using node v11.6.0 (npm v6.5.0-next.0)
このときはv11.6.0
が入りました。今後ログインした時にこれがデフォルトで使えるようにします。
nvm alias default v11.6.0
他のユーザーでも使えるように
n
を使う方法がおすすめです。以下で他のユーザーでは/usr/local/bin/node
を見るような形にできます。
yarn global add n
sudo ~/.yarn/bin/n 11
yarn
はこれだけです。
curl -o- -L https://yarnpkg.com/install.sh | bash
これはユーザー毎に実行する必要があります。ログで出たようにパスだけ通す必要があります。
export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
fish
ユーザーはこっちで。
set -x PATH $HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin $PATH
Cloud9 上の NodeJS を最新にする
2019-02時点だとデフォルトで入っている NodeJS のバージョンはv6.16.0
で少し古いです。これを現時点での最新のv11.9.0
を使えるようにする方法です。
Cloud9のデフォルトアカウントでは、.bash_profile
にnvm
の設定が読み込まれているので、最初からnvm
コマンドを使うことができます。
nvm とは「Node Version Manager」 の略です。コマンド1つで最新バージョンにアップグレードしたり、あるバージョンにダウングレードすることができます。これ系には、
npm
で入れることができるn
などもあります。
nvm
で最新を入れるには以下のコマンドを実行します。
ec2-user:~/environment $ nvm install stable
# Downloading https://nodejs.org/dist/v11.9.0/node-v11.9.0-linux-x64.tar.xz...
# ######################################################################## 100.0%
# Now using node v11.9.0 (npm v6.5.0)
今回はv11.9.0
が入ったというログがでます。
今のままだとログインした時のバージョンは最初のv6.16.0
になってしまうので、デフォルトで今入れた最新バージョンを使うようにします。それは以下のようなコマンドでできます。バージョン部分には先程のインストール時に出力されたバージョンをコピペします。
ec2-user:~/environment $ nvm alias default v11.9.0
# default -> v11.9.0
一度ターミナルを閉じて、再度開いてバージョンを確認します。この時に先程コピペしたバージョンと同じなら完了です。
ec2-user:~/environment $ node -v
# v11.9.0
Cloud9 に fish shell を入れる
デフォルトユーザーのec2-user
をそのまま使います。(カスタムユーザーを作ると接続できなくなる…)
Mac の Homebrew の Linux 版です。(でもv2.0.0
で合体した?)1コマンドで色々インストールできて便利なツールです。
以下で入れれます。
sudo yum groupinstall 'Development Tools' -y
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
インストールは以下でできます。
/home/linuxbrew/.linuxbrew/bin/brew install fish
そして、一番最初の行にfish
を使うというコマンドを追加します。
vim ~/.bash_profile
以下を追加。
/home/linuxbrew/.linuxbrew/bin/fish
これでターミナルを開いたとき勝手にfish
が実行されてfish
シェルな状態で始めることができます。
ちなみに以下の方法でターミナルを開いた時にデフォルトシェルな状態で始めれるかなと思ったのですが、何故かec2-user
では効きませんでした。
# ec2-user のパスワードセット
sudo passwd ec2-user
sudo reboot
sudo vim /etc/shells
# /home/linuxbrew/.linuxbrew/bin/fish 追加
# ec2-user のシェルを変更(パスワード聞かれる)
chsh -s /home/linuxbrew/.linuxbrew/bin/fish
fish
の設定ファイルは~/.config/fish/config.fish
ですので、これにパスを通す設定を書きます。
mkdir -p ~/.config/fish
touch ~/.config/fish/config.fish
echo 'set -x PATH /home/linuxbrew/.linuxbrew/bin $PATH' > ~/.config/fish/config.fish
再度ターミナルを開いて、
$ brew --version
# Homebrew 2.0.0
のようにバージョンが出れば完了です。
ちょっとnvmがfishと相性悪かったので、nodebrewで NodeJS の最新を入れてみます。
brew install nodebrew
echo 'set -x $HOME/.nodebrew/current/bin $PATH' >> ~/.config/fish/config.fish
mkdir -p ~/.nodebrew/src # これしないとダメだった
ここでターミナルを開き直して、
nodebrew install stable
nodebrew use stable
今回はv10.15.1
が入りました。
$ node -v
# v10.15.1
ついでに Yarn
curl -o- -L https://yarnpkg.com/install.sh | bash
Cloud9 上で新規ユーザーを作って create-react-app しようとしたけどプレビューが見れない
useradd
してfoo
ユーザーを作成su -l foo
でチェンジ- デフォルトユーザーの
environment
の中でyarn create react-app hello-react-app
- その中で
yarn start
- プレビュー
でもこんな感じの画面で見れません。
よく見ると作ったユーザーはポート3000
で建ててるのに、デフォルトユーザーでは8080
で建っています。どうやらデフォルトユーザーの環境変数には$PORT
に8080
が登録されてて、これを見ている様子です。
# デフォルトユーザーで
echo $PORT # 8080
画像の注意書きにもそのような感じのことが書かれてますね。
では、8080
で立つように scripts
のstart
をPORT=8080 react-scripts start
としてみましょう。そして再度yarn start
無事プレビューできました!
AWS CLI で IAM ユーザーを運用する
aws cli でとあるユーザーを追加するには、
aws configure
でした。1ユーザーならいいのですが、複数ユーザー操作したい場合にこれだと不便です。
その場合は--profile
オプションを使って「このユーザーの設定ですよ」と明示できます。
aws --profile foo configure
これでfoo
というユーザーの情報が登録できました。あとは他のすべてのコマンドで--profile foo
と追加します。
aws --profile foo s3 sync images s3://hoge/images
aws --profile foo s3 ls hoge
RDS の Postgresql がタイムアウトする
こんなエラーです。
psql: could not connect to server: Operation timed out
Is the server running on host "host" (x.x.x.x) and accepting
TCP/IP connections on port 5432?
psql
で接続するとき、デフォルトで5432
ポートが使われます。以下の場所からそれが許可されているか確認します。
もし、5432
に関する設定がなければ以下のように追加します。
接続できれば完了です。