subtitle

RaiseTechの各種コースをはじめとしたイロイロな学習の記録

EC2にGitHubにあげている自分のRailsアプリをデプロイする

今回は、EC2にGitHubのRailsプロジェクトをデプロイしてみる。

GitHubしばらく使ってないから、もう使い方忘れかけてるな・・・。


何はともあれ、EC2インスタンスにSSHでログインする。

GitHub用のキーペアを作成するコマンドを打つ。ビシッ!

ssh-keygen -t rsa


Enter file in which to save the keyと言われるので、キーペアのファイル名を入力してEnter。(キーペアのファイル名を入力せずにEnterすると、id_rsaという名前のファイルになる。)

デフォルトのid_rsaにした場合は、すでにファイルが存在する場合は上書きされるので注意。

そのあとパスフレーズ入力を求められるので、パスフレーズを入力。(何も入力せずにEnterするとパスフレーズなしになる。)


ちゃんとできているかを、lsコマンドで確認。


ややっ!?うっかりホームディレクトリで実行してしまったww

作成したキーペアを.sshフォルダの下に移動させる。(.sshフォルダは、EC2インスタンス作成時にキーペア作った際に作成済み。)

mv github_keypair github_keypair.pub .ssh


一応確認w


移動できた。


補足

キーペアファイル名を自動(id_rsa)にした場合は、.sshフォルダ内にキーペアを自動的に生成してくれるが、自分でキーペアファイル名を決めた場合は、現在のフォルダにキーペアファイルができるということらしい。

つまり、キーペアファイル名を自分で決めたい場合は、コマンドを打つ前に.sshフォルダに移動しておく事を忘れずに。


キーペアファイル名を自分で決めた場合は、SSHの設定ファイルであるconfigに必要な情報を記載しておく必要がある。

今回は、.sshフォルダの下に、configファイルがないので作成する。

cdコマンドで.sshフォルダまで移動したら、下記コマンドを打つ。ビシィッ!!

vim ~/.ssh/config

configファイルがvimで開くので、「i」でINSERTモードにして、下記の通り編集する。

Host github
HostName github.com
User git
IdentityFile ~/.ssh/[秘密鍵のキーペアファイル名]

補足

  • Host:自分で好きなエイリアスを決められる(ここで決めた名前をコマンドで使用することが可能)
  • HostName:接続先アドレス(GitHubの場合は、github.com)
  • User:「git」固定(自分のGitHubのユーザー名ではない)
  • IdentityFile:秘密鍵のパス(公開鍵ではない)


Escを押してコマンド待ちの状態に戻したら、「:wq」で上書き保存→終了


次はGitHubに行って、今作成した公開鍵を設定する。

GitHubのリポジトリページの右上の、Settingsタブをクリック


左メニューのDeploy Keyをクリック


右上の、Add deploy keyボタンをクリック

Title(キーペアのファイル名じゃなくていい)と公開鍵の中身を転記する


ちなみに、公開鍵の表示方法は、catコマンドで下記のように表示できる。

cat ~/.ssh/キーペアのファイル名.pub

表示された内容を全て(ssh-rsa~internalまでまるっと)コピーしてGitHubのKeyのところに貼り付けると、公開鍵が登録される。


接続確認をしてみる。

ssh -T github


このメッセージがでればOK。(githubのところは、configファイルでHOSTとして設定したものを使用する)



ここまで出来たら、いよいよEC2からGitHubのリポジトリにアクセスしてみる。

git clone git@github.com:[ユーザー名]/[リポジトリ名].git


んん?エラーが出た。

Cloning into 'sample_apl'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.


GitHubのホスト名を変更してみる。

git clone git@[configファイルで指定したHOST名]:[ユーザー名]/[リポジトリ名].git


SSHでのやり取りは、configファイルに記載された内容が使われるので、@以下もHostで指定した値を使わねばならないらしい。


無事にgit cloneできた。



ここからは番外編。


Deploy keyは登録したが、SSHキーは未登録だったらしいので、これを機に登録しておく。(確かにこれまではHTTPSでやっていたような気がする。)

Deploy Keyの時と同様に、再びキーペアを作成。(同じものは使えないらしい)

GitHubの右上のアカウントアイコンから、Settingをクリック


左メニューから、SSH and GPG keysをクリック


New SSH keyをクリックして、新しく作成したSSH用のキーペア公開鍵を登録。(やり方はDeploy Keyの時と同じ)

.ssh/configはこんな風に2つ書いておけばよい。


Deployキーを使う場合は、git cloneするときは、git@githubDeployを使用し、SSHキーを使う場合のgit cloneは、git@githubSSHを使えばよい。



さて、せっかくgit cloneできたので、ネコを称えるアプリを表示させてみようじゃないか。

ネコアプリのフォルダに移動して、Railsサーバーを起動する。

rails s -b 0.0.0.0


エラーが出た。

Bundler could not find compatible versions for gem "msgpack":
  In snapshot (Gemfile.lock):
    msgpack (= 1.3.3)
  In Gemfile:
    bootsnap (>= 1.4.4) was resolved to 1.5.1, which depends on
      msgpack (~> 1.0)
Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.


Bundlerさんが、msgpackの互換性のあるバージョンを見つけられないから、bundle updateしなさいと言っているので、素直に従う。

bundle update


再度Railsサーバーを起動させたら、今度は上手くいった。


これで表示できるかと思いきや、Migration忘れてた~!!!


rails db:migrate


気を取り直してもう一度Railsサーバーを起動。

ヒー・・・またなんか出た!!((((;゚Д゚))))ガクガクブルブル


Webpacker?インストールしたけどな。まあ、もっかいやっとくか。

bundle exec rails webpacker:install


三度目の正直!


できた!!

ネコを称えるアプリようやく表示できました!!(ノД`)・゜・。