今回は、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
三度目の正直!
できた!!
ネコを称えるアプリようやく表示できました!!(ノД`)・゜・。