りょ〜Blog

プログラミングで学んだことを書いていきます。

自作railsアプリをデプロイする Part9 EC2インスタンス環境構築編

前回したこと↓

f:id:Ryo10Leo:20200113222855p:plain

自分のec2インスタンスにログインするユーザーを作成して、無事インスタンスにログインすることができました。

ryo10leo.hatenablog.com


今回は、実際にインスタンスの環境構築を行っていこうと思います。

環境構築とは何をするのか

前回の記事の例で、「処理に必要なソフトウェアをインストールすること」と説明したのでそのままのことをやります。

アプリは「Ruby」で書かれているものなので、その言語が動く環境にしたり、サイトのアクセスに対応するために、Webサーバーが必要なので「Nginx」を導入したりなど様々です。

今回は、作成したインスタンスRubyの実行環境になるように設定していきます。その過程で「Git」も使えるようになるので、インスタンスアプリのクローンを作成したいと思います。こうすることで、自分のアプリのリポジトリインスタンスが取得することになります。

今回行う環境構築を図で理解する

f:id:Ryo10Leo:20200114142606p:plain

図の通りです。①最初はインスタンスRuby,Git etc...が動く環境を作成します。データベースには「PostgreSQL」を使用します。
次に、②自身のGit Hubから「SSH通信」を利用して、アプリのクローンをインスタンスに作成していきたいと思います。
この辺は前回の復習もかねた作業になると思います。

実際に環境を構築を行う

Ruby環境構築

まずRubyの実行環境を構築していきます。

手が震えます。。。笑

まずEC2にログイン。

$ ssh ratio_key_rsa

必要なものをインストールしていきます。

[ryo|~]$ sudo yum install git make gcc-c++ patch openssl-devel libyaml-devel libffi-devel libicu-devel libxml2 libxslt libxml2-devel libxslt-devel zlib-devel readline-devel ImageMagick ImageMagick-devel epel-release

こんなにあんの?それぞれ何してるの?もう訳わかんない。

っとなってしまいそうですが、そんなこと意識してたら先に進まないのでこのまま進みます。。。

パスワードを打ち込んだらインストール開始。

総ダウンロード容量: 86 M
インストール容量: 274 M
Is this ok [y/d/N]: y

こちらの画面がでたら、「y」です。

Railsを動かすには「Node.js」も必要なのでインストールしていきます。
なぜ!?と思わずに「RailsJavascript使っててんじゃん!必要じゃん!」って思って前に進みます。

[ryo|~] sudo yum install nodejs npm --enablerepo=epel

、、、ってできないじゃんっと思った方もいると思います。(僕もそうでした。)

こちら記事が助けていただきました!本当にありがとうございます。。。↓
qiita.com

こちらもyes no聞かれるので、「y」です。

さてここまでの作業で、もう実はもうGitは使えるようになっております。

次に「rbenv」というRubyのバージョンを切り替えるツールをGitを使ってインスタンスで使えるようにします。

ざっくりいうとターミナルでrbenvコマンドを使えるようにして、必要なプラグインも入れて、rubyインストールできるようにしようってことです。

[ryo|~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv 
(※rbenvのインストール) 
[ryo|~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile 
(※パスを通す)
[ryo|~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[ryo|~]$ source .bash_profile  
(※.bash_profileの読み込み)
(※ここまでがrbenvコマンドが使えるようになる設定)
[ryo|~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
(※ruby-buildプラグインのインストール)
(※Rubyがインストールできるようになります)
[ryo|~]$ rbenv rehash

ちなみにrbenv rehashは、ruby、gemでインストールしてきたファイルの実行環境が生成されています。

ようやくRubyのインストールです。

# ruby 2.1.3のインストール(versionは適宜変更)
[ryo|~]$ rbenv install -v 2.6.3
[ryo|~]$ rbenv global 2.6.3
[ryo|~]$ rbenv rehash
[ryo|~]$ ruby -v

ruby -vで、インストールしたバージョンが表示されれば成功です。

PostgreSQLインストール

細かい設定は次回にして、とりあえずインストールしていきます。

こちらのドキュメントを参考にします。↓
PostgreSQL: Linux downloads (Red Hat family)

[ryo|~]$ sudo yum install postgresql-server postgresql-devel postgresql-contrib

ここは人それぞれで詰まったりするかもしれないので、調べながらじっくりやりましょう笑

インストールできたら起動します。

[ryo|~]$ sudo service postgresql initdb
Hint: the preferred way to do this is now "postgresql-setup initdb"
Initializing database ... OK

[ryo|~]$ sudo service postgresql start
Redirecting to /bin/systemctl start postgresql.service

Gitとの連携して、アプリのクローンの作成

まずインスタンスでGitに関する設定ファイルを作成し、内容を記述していきます。

viコマンドで作成、編集できます。↓

[ryo|~]$ vi .gitconfig

以下のように設定していきます。↓

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

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

※ githubの設定
[url "github:"] 
    InsteadOf = https://github.com/
    InsteadOf = git@github.com:

編集が終わった保存して終了。

アプリを配置するためのディレクトリを作成します。

[ryo|~]$ cd /
[ryo|/]$ sudo chown ryo var
(※varフォルダの所有者をryoにする)
[ryo|/]$ cd var
[ryo|var]$ sudo mkdir www
[ryo|var]$ sudo chown ryo www 
[ryo|var]$ cd www
(※wwwと同じ処理)
[ryo|www]$ sudo mkdir rails
[ryo|www]$ sudo chown ryo rails

mkdirコマンドで必要なフォルダを作成し、chownコマンドで作成したフォルダの所有者を変更しています。

ここからGitとの接続していきます。
Git HubでSSH接続していくので、必要な公開鍵などを作成していきます。

操作は以下の通りです。

[ryo|www]$ cd ~
[ryo|~]$ mkdir .ssh (#既に生成されている場合もあります。)
[ryo|~]$ chmod 700 .ssh
[ryo|.ssh]$ cd .ssh
[ryo|.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: 
(※そのままエンター)
-----------------------------
[ryo|.ssh]$ ls
(#「aws_git_rsa」と「aws_git_rsa.pub」が生成されたことを確認)
[ryo|.ssh]$ vi config
-----------------------------
# githubの場合以下を追記
Host github
  Hostname github.com
  User git
  IdentityFile ~/.ssh/aws_git_rsa (#秘密鍵の設定)
-----------------------------
[ryo|.ssh]$ cat aws_git_rsa.pub
-----------------------------
(※以下をコピーかメモしとく)
ssh-rsa ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ryo@ip~~~~
-----------------------------

Git Hub側で作成した公開鍵をアップしていきます。

アカウントを持っていれば以下のURLで設定できます。
https://github.com/settings/ssh/new

f:id:Ryo10Leo:20200115020548p:plain

title」に鍵の名前、「key」で$ cat aws_git_rsa.pubで参照した内容を入力します。

Add SSH key」で完了!

↓接続確認

[ryo|.ssh]$ ssh -T github

うまくいかなかったら以下のコマンドを実行して、

[ryo|.ssh]chmod 600 config

もう一度↓

[ryo|.ssh]$ ssh -T github

こんな画面がでたら成功!!↓

Hi Ryo! You've successfully authenticated, but GitHub does not provide shell access.

クローンを作成します。

ディレクトリを移動。↓

[ryo|.ssh]$ cd /var/www/rails

Git Hubにて、自分のアプリのリポジトリの画面を開きます。

f:id:Ryo10Leo:20200115022057p:plain

緑のボタンを押して、右上の「Use SSH」を押したら、URLがでます。これをコピーします。

コピーしたのを貼り付けて、git cloneコマンドを実行します

[ryo|rails]$ git clone git@github.com:~~~~~~~~~~~~

lsコマンドでアプリがあるか確認↓

[ryo|rails]$ ls

自分はクローン無事成功しました!

secret_key_baseの設定

これもやっとかなあかんらしいです。

ローカル環境で

$ rails secret

出力されるものをコピーします。

sercret.ymlに以下の部分があるか確認。なかったら追加↓

sercret.yml

・
・
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
$ export SECRET_KEY_BASE="コピーしたやつ"

これでひと段落です。

まだまだ手が震えております。

次は、webサーバーやらアプリケーションの設定、、、
あ、データベースの設定もしないと、、、

道のりは長いなーーーーー


ryo10leo.hatenablog.com