デプロイ(本番環境の準備)[2]
前回までは、デプロイまでのファイル準備。
ここから、アプリケーションを動かすために必要な
ソフトウェアや、データベース、EC2上で環境構築をしていく。
Mysqlにデータベース作成
EC2へSSHでログインする
EC2へSSHでログインする。
"サーバーで作業するときは、まずSSHでログインする。"
username:~/environment $ ssh -i ~/.ssh/キーペア.pem ec2-user@パブリックIPv4アドレス
EC2からRDSへ接続を確認する
- RDSを使用している場合でも、EC2インスタンスからRDSに接続するには、
MySQLクライアントが必要なので、インストールする。
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo yum -y install mysql
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main | 2.1 kB 00:00:00
amzn-updates | 2.5 kB 00:00:00
Resolving Dependencies
...
Complete!
MySQLに接続
mysql -u (マスタユーザ名) -p -h (エンドポイント)
[ec2-user@ip-xx-xx-xx-xx ~]$ mysql -u root -p -h rds-mysql-server.xxx.ap-northeast-1.rds.amazonaws.com
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.22-log MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
- xxxには、エンドポイントを入力する。RDSメニューで確認できる。
-
Enter password:
には、自分で設定したパスワードを入力するけど、
何も入力されていないように見えるけど、入力されているので、大丈夫。
私の場合は、MySQL
をインバウンドルールで設定してなかったため、
(ERROR 2003 (HY000): Can't connect to MySQL server on 'rds-mysql-server.clso6gcigv9z.ap-northeast-1.rds.amazonaws.com' (110))
のエラーが出た。
-
セキュリティグループをSSHとHTTPとは別に設定する。
-
セキュリティグループを作成をクリック
-
インバウンドルールを設定
タイプ : MYSQL/Aurora
プロトコル : TCP
ポート範囲 : 3306
CIDRブロック : EC2のプライベートIPアドレスを入力する/32 -
ルールを保存
-
RDSで検索 → データベースクリック → ラジオボタンクリック → 変更
データベースを作成する
mysql> create database アプリケーション名;
で、作成できる。
一度作成したものと同じ名前だと、すでにそのデータベースは存在しています。って言うエラーが表示されてしまう。
(ERROR 1007 (HY000): Can't create database 'inuming'; database exists)
その場合、そのデータベースをそのまま使いたい時は、
mysql> USE アプリケーション名;
にすると、デプロイした時に、データベースがそのまま引き継がれる。
ここまでできたら、MySQLの接続を解除する。exit
ImageMagickをインストール
ImageMagicは画像処理をする為のソフトウェア。
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo yum -y install libpng-devel libjpeg-devel libtiff-devel gcc-c++ git
[ec2-user@ip-xx-xx-xx-xx ~]$ git clone -b 7.1.1-5 --depth 1 https://github.com/ImageMagick/ImageMagick.git ImageMagick-7.1.1-5
[ec2-user@ip-xx-xx-xx-xx ~]$ cd ImageMagick-7.1.1-5
[ec2-user@ip-xx-xx-xx-xx ImageMagick-7.1.1-5]$ ./configure
[ec2-user@ip-xx-xx-xx-xx ImageMagick-7.1.1-5]$ make
[ec2-user@ip-xx-xx-xx-xx ImageMagick-7.1.1-5]$ sudo make install
[ec2-user@ip-xx-xx-xx-xx ImageMagick-7.1.1-5]$ cd
- ImageMagickを利用する為に必要なパッケージのインストール
- ImageMagickのファイルをGitHubよりバージョンを指定してclone
- cloneしたフォルダへ移動
- 各種チェックを行いmakefileを生成
- ビルドを行う
- ビルドされたアプリケーションをEC2の中で使えるようにする
ビルドとは
各種、ソースファイルのコンパイルを実行した上で、コンパイルされた各種ファイルを実行可能な形式にすること。
makefileとは
ビルドを行うための詳細な内容が記載されたファイルのこと
Rubyをインストール
- EC2には、デフォルトでRubyがインストールされている。
ただしバージョンが古いため、より新しいバージョンのRubyをインストールする必要がある
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo yum remove -y ruby*
yumコマンドで、旧バージョンのRubyをアンインストールする。
↓ この結果が出力されても問題ないので、無視で良い。 ↓
(No Match for argument: ruby* No Packages marked for removal)
- 必要なパッケージをインストールする。
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo yum -y install openssl-devel readline-devel
rbenvのインストールに必要なパッケージをインストール
[ec2-user@ip-xx-xx-xx-xx ~]$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
[ec2-user@ip-xx-xx-xx-xx ~]$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo ~/.rbenv/plugins/ruby-build/install.sh
[ec2-user@ip-xx-xx-xx-xx ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
[ec2-user@ip-xx-xx-xx-xx ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[ec2-user@ip-xx-xx-xx-xx ~]$ source ~/.bash_profile
インストール完了。
新しいバージョンのRubyと、Bundlerをインストール
[ec2-user@ip-xx-xx-xx-xx ~]$ rbenv install 3.1.2
[ec2-user@ip-xx-xx-xx-xx ~]$ rbenv global 3.1.2
[ec2-user@ip-xx-xx-xx-xx ~]$ rbenv rehash
[ec2-user@ip-xx-xx-xx-xx ~]$ rbenv exec gem install bundler
- 完了したら、
ruby -v
を実行。
[ec2-user@ip-xx-xx-xx-xx ~]$ ruby -v
ruby 3.1.2p62 (2019-04-16 revision 67580) [x86_64-linux]
これが出力されたら、成功。
ruby 3.1.2
の表示だと、最新。
p62
のところは、数字が違くても問題ない。
さらに、bundle -v
を実行して、Bundlerがインストールされていることも確認する。
[ec2-user@ip-xx-xx-xx-xx ~]$ bundle -v
Bundler version 2.2.3
Railsをインストールする
- 必要なパッケージをダウンロードする
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo yum -y install patch libyaml-devel zlib zlib-devel libffi-devel make autoconf automake libcurl-devel sqlite-devel mysql-devel
nvmのインストール
cloud9の環境構成に近づけるために行う。
[ec2-user@ip-xx-xx-xx-xx ~]$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
[ec2-user@ip-xx-xx-xx-xx ~]$ export NVM_DIR="$HOME/.nvm"
[ec2-user@ip-xx-xx-xx-xx ~]$ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ec2-user@ip-xx-xx-xx-xx ~]$ [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
Node.jsをインストール
Node.jsがないとrailsが動作しない。
[ec2-user@ip-xx-xx-xx-xx ~]$ curl -O https://unofficial-builds.nodejs.org/download/release/v18.17.1/node-v18.17.1-linux-x64-glibc-217.tar.gz
[ec2-user@ip-xx-xx-xx-xx ~]$ tar -xzf node-v18.17.1-linux-x64-glibc-217.tar.gz
[ec2-user@ip-xx-xx-xx-xx ~]$ mkdir -p ~/.nvm/versions/node/v18.17.1-custom
[ec2-user@ip-xx-xx-xx-xx ~]$ mv ~/node-v18.17.1-linux-x64-glibc-217/* ~/.nvm/versions/node/v18.17.1-custom/
[ec2-user@ip-xx-xx-xx-xx ~]$ export PATH=$PATH:~/.nvm/versions/node/v18.17.1-custom/bin/
[ec2-user@ip-xx-xx-xx-xx ~]$ source ~/.bashrc
- インストールしたNode.jsを使用できるようにする
[ec2-user@ip-xx-xx-xx-xx ~]$ nvm alias default v18.17.1-custom
[ec2-user@ip-xx-xx-xx-xx ~]$ nvm use v18.17.1-custom
- Node.jsを環境で使用できるようになっているか確認
[ec2-user@ip-xx-xx-xx-xx ~]$ node -v
v18.17.1
yarnをインストールする
[ec2-user@ip-xx-xx-xx-xx ~]$ npm install -g yarn
railsをインストールする
[ec2-user@ip-xx-xx-xx-xx ~]$ gem install rails -v 6.1.4
たくさんのGemがインストールされる。
最後に、数 gem installed
と表示されたらオッケー。
- 最後にrailsのバージョン確認をする。
[ec2-user@ip-xx-xx-xx-xx ~]$ rails -v
Rails 6.1.4
バージョンが表示されたら完了!
これで、railsアプリケーションを動作させるための、環境ができた。
Discussion