自作railsアプリをデプロイする Part9 EC2インスタンス環境構築編
前回したこと↓
自分のec2インスタンスにログインするユーザーを作成して、無事インスタンスにログインすることができました。
今回は、実際にインスタンスの環境構築を行っていこうと思います。
環境構築とは何をするのか
前回の記事の例で、「処理に必要なソフトウェアをインストールすること」と説明したのでそのままのことをやります。
アプリは「Ruby」で書かれているものなので、その言語が動く環境にしたり、サイトのアクセスに対応するために、Webサーバーが必要なので「Nginx」を導入したりなど様々です。
今回は、作成したインスタンスがRubyの実行環境になるように設定していきます。その過程で「Git」も使えるようになるので、インスタンスにアプリのクローンを作成したいと思います。こうすることで、自分のアプリのリポジトリをインスタンスが取得することになります。
今回行う環境構築を図で理解する
図の通りです。①最初はインスタンスで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」も必要なのでインストールしていきます。
なぜ!?と思わずに「RailsでJavascript使っててんじゃん!必要じゃん!」って思って前に進みます。
[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
「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にて、自分のアプリのリポジトリの画面を開きます。
緑のボタンを押して、右上の「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サーバーやらアプリケーションの設定、、、
あ、データベースの設定もしないと、、、
道のりは長いなーーーーー