Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

AWS EC2仮想サーバーに環境構築(Ruby, MySQL, node.js, git連携)

May 16, 2019

EC2インスタンス内でrubyやgitその他の環境が動くよう設定する


[tatsuya@ip-10-0-0-238 ~]$ sudo yum install \ #yumのインストール
git make gcc-c++ patch \ #cとc++のコンパイラ、gitの差分をpatchファイルに変更
openssl-devel \ 
libyaml-devel libffi-devel libicu-devel \
libxml2 libxslt libxml2-devel libxslt-devel \
zlib-devel readline-devel \
mysql mysql-server mysql-devel \
ImageMagick ImageMagick-devel \
epel-release


rbenv, ruby , ruby-buildのインストール

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
vi .bash_profile
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv rehash
rbenv install --list
rbenv install 2.6.3
rbenv install 2.4.2
rbenv global 2.6.3
ruby -v
rbenv rehash

お次はNode.jsのインストール)

ドキュメント CentOS、RHEL、または Amazon Linux が実行されている Amazon EC2 インスタンスに対して EPEL リポジトリを有効にする方法を教えてください。

標準リポジトリで利用できないパッケージのインストールを可能にする Extra Packages for Enterprise Linux (EPEL) リポジトリへのアクセスを有効にする


$ sudo curl -sL https://rpm.nodesource.com/setup_11.x | bash -

問題なく上記コマンドができるようなら以下の6つのコマンドは無視

$ sudo yum install -y nodejs
$ sudo yum install -y epel-release

Amazon Linux 2(AL2) では、Amazon Linux Extras を利用すると EPEL レポジトリを簡単に利用できます。
$ sudo amazon-linux-extras install epel

Yum-config-manager コマンドを用いて Amazon Linux 上の EPEL リポジトリを有効にする
$ sudo yum-config-manager --enable epel

EPEL リポジトリが有効になっていることを確認するには、以下のコマンドを実行します。
epel/x86_64  や epel-debuginfo/x86_64 が表示されていればOK

$ sudo yum repolist
$ sudo vim /etc/yum.repos.d/epel.repo
enabled=0 を見つけて enabled=1 に変更します。これは、epel.repo ファイルの $basearch セクションにあります。
変更を保存し、vim エディターを終了します

npm, node.js の インストール

$ sudo yum install nodejs npm --enablerepo=epel


gitとの連携、アプリのクローン

$ vi .gitconfig

-----------------------------
[user]
  name = your_name (#gitに登録した自分の名前)
  email = hoge@hoge.com (#git登録時の自分のメアド)

[alias] (#これはお好きに)
  a = add
  b = branch
  ch = checkout
  st = status

[color] (#色付け)
  ui = true

# githubの場合
[url "github:"] (#pull、pushのための設定)
    InsteadOf = https://github.com/
    InsteadOf = git@github.com:
# bitbucketの場合
[url "bitbucket:"]
    InsteadOf = https://ユーザ名@bitbucket.org/
    InsteadOf = git@bitbucket.org:
-----------------------------

完了したらファイルを保存し、
アプリを配置するディレクトリを作成していきます。

sudo chown tatsuya var
cd var
sudo mkdir www
sudo chown tatsuya www
cd www
sudo mkdir rails
sudo chown tatsuya rails
sudo yum update

さぁ、下準備が整ったら、いよいよgitとの接続です。


ローカル からEC2 にsshするためにローカルでキーペアを作った時みたいに、今度は

EC2 からgithub にsshするためにEC2でキーペアを作ります。

[tatsuya|~]$ chmod 700 .ssh
[tatsuya|.ssh]$ cd .ssh
[tatsuya|.ssh]$ ssh-keygen -t rsa
-----------------------------
Enter file in which to save the key ():aws_git_rsa 
(#ここでファイルの名前を記述して、エンター)
Enter passphrase (empty for no passphrase): 
(#何もせずそのままエンター)
Enter same passphrase again: 
(#何もせずそのままエンター)
-----------------------------
[tatsuya|.ssh]$ ls
(#「aws_git_rsa」と「aws_git_rsa.pub」が生成されたことを確認)
[tatsuya|.ssh]$ vi config
-----------------------------
# githubの場合以下を追記
Host github
  Hostname github.com
  User git
  IdentityFile ~/.ssh/aws_git_rsa (#秘密鍵の設定)
# bitbucketの場合以下を追記
Host bitbucket
  Hostname bitbucket.org
  User git
  IdentityFIle ~/.ssh/aws_git_rsa (#秘密鍵の設定)
-----------------------------
[tatsuya|.ssh]$ cat aws_git_rsa.pub
-----------------------------
xxxxxxxxxxxxxxxxxxx
-----------------------------

公開鍵(aws_git_rsa.pub)をコピーしてgithubのssh設定に中身を登録する

https://github.com/settings/keys


最後に、EC2セキュリティグループのアウトバウンド設定でsshを許可する

$ ssh -T github

を実行してみてください。

  • githubの場合
Hi NaokiMochizuki! You've succwwwessfully authenticated, but GitHub does not provide shell access.
  • bitbucketの場合
logged in as tatsuya.


登録が済んだら、いよいよクローン

[naoki|.ssh]$ cd /var/www/rails
[naoki|rails]$ git clone git@github.com:~~~~~~~~~~~~

git cloneの後に続くURLは、githubの下記より取得してください。

アプリ名が記載されたフォルダが存在すれば、見事クローン成功です。


* Amazon Linuxで古いNode.jsがインストールされる時の解決方法

Amazon Linuxで何度Node.js v11をインストールしようとしてもv6が入ってしまう現象が起こったのでその解決策をメモ。

現象

v11用RPMのセットアップをする。

$ curl -sL https://rpm.nodesource.com/setup_11.x | sudo bash -

その後、yum installしても 2:6.14.4-1nodesource がインストールされる。

$ sudo yum install -y nodejs
...
Installed:
  nodejs.x86_64 2:6.14.4-1nodesource

解決策

以下のコマンドでRPMのキャッシュを消す。

$ sudo yum remove -y nodesource-release* nodejs
$ yum clean all
$ sudo rm -rf /var/cache/yum/*
$ sudo rm /etc/yum.repos.d/nodesource-el.repo

その後、再度RPMセットアップコマンドを流してyum installすればよい。

$ curl -sL https://rpm.nodesource.com/setup_11.x | sudo bash -
...
$ sudo yum install -y nodejs
...
Installed:

$ node -v
v11.15.0