railsアプリをEC2インスタンスにデプロイする手順をまとめた

AWS

本記事では、railsアプリをEC2インスタンスにデプロイするまでの手順をまとめております。

今後同じようにEC2にデプロイする際にどういう手順で進めるんだっけ?とならないように備忘録として残していきます!また、Amazon Linux 2023ではLinux2と同じコマンドで動かないところもあったので、思うようにパッケージがインストールできないなどの問題を抱えている人向けに記事を作成しました!

EC2のOS:Amazon Linux2023

EC2インスタンスを作成する

EC2インスタンスの作成からElastic IPの紐付け、EC2インスタンスにCLIから接続するまでの流れを下記の記事で作成しております。まずは下記手順でEC2インスタンスを作成してください。

EC2の環境を構築していく

パッケージのupdate、インストールしていきます。

sudo dnf update
sudo dnf install -y nano git which tar gcc rust patch make bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel
// mysqlのインストール
sudo dnf -y localinstall https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo dnf -y install mysql mysql-community-client mysql-devel

rubyをインストールしていく

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
TMPDIR="${PWD}/tmp" rbenv install 3.0.0 -v //ここは自分のアプリのバージョンに合わせる
rbenv global 3.0.0 //ここも自分のアプリのバージョンに合わせる
rbenv rehash
ruby -v

githubからアプリをcloneできるように設定する

ssh-keygen -t rsa
// キー入力を何回か求められるが、全て空白でEnterでok

上記で作成したキーを表示する

cd .ssh
cat id_rsa.pub

表示されたキーをgithubの自身の画像>Settings>SSH and GPG keys>New SSH keyから、任意の名前をつけて上記で取得したキーを全て入力します。

完了したら、下記のコマンドを入力していきます

ssh -T git@github.com
// キー入力を求められたらyesを入力
// You've successfully authenticatedが表示されればok!

githubからアプリをクローンする

cd /
sudo mkdir /var/www/
sudo chown ec2-user /var/www/
cd /var/www
git clone git@github.com:アカウント名/アプリ名.git

mysqlサーバーを起動させる

sudo systemctl start mysqld

mysqlサーバーに入ってみます。

mysql -u root -p
Enter password:    // ここで入力したパスワードが正式なパスワードになるため、メモっておいてください!

mysql>. //コンテナに入れればok

環境変数を設定する

sudo vim /etc/environment
// 環境変数を設定していく

環境変数を設定した後は一回サーバーを再起動する。

railsのパッケージをインストールする

bundle install

dbを作成する

RAILS_ENV=production rails db:create
RAILS_ENV=production rails db:migrate

サーバーを立ち上げる

bundle exec unicorn -p 3000 -c /config/unicorn.rb -E production

以上の手順でコンテナを立ち上げることができます。

続いてnginxを立ち上げる

sudo dnf install -y nginx

nginxのconfファイルを作成する

cd /etc/nginx/conf.d
vi rails.conf

(番外編)発生したエラー

mysqlサーバーインストールの時にGPG check failed

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo dnf update

mysqlサーバーが起動しない

sudo systemctl status mysqld
=>Unit mysqld.service could not be found. となってしまう

下記コマンドで、mysqlを再インストールする

sudo yum remove mysql-server    // MySQLのパッケージを削除
sudo yum install mysql-server   // MySQLを再インストール
sudo systemctl start mysqld     // MySQLサービスを開始

rbenvがインストールできない

エラーメッセージ

$ rbenv install -v 3.0.0
=>
Can't locate FindBin.pm
sudo dnf install perl perl-FindBin perl-open perl-YAML perl-File-HomeDir perl-Unicode-LineBreak

②client_loop: send disconnect: Broken pipe

処理に時間がかかりすぎて落ちてしまう問題です。TMPDIRを指定することでうまく最後までインストールできるようになります。

TMPDIR="${PWD}/tmp" rbenv install -v 3.0.0

sshコマンドを打った後にフリーズしてしまう

ec2インスタンスを再起動する

コメント

タイトルとURLをコピーしました