🎃
EC2でRailsを立ち上げてみる
はじめに
やったことを忘れないように備忘録として残しておく
EC2インスタンスの作成
- インスタンスを起動
- 名前を設定:
hoge
- キーペアを作成
- キーペア名を入力:
hoge
- キーペアのタイプ:
ED25519
- プライベートキーファイル形式:
.pem
- キーペア名を入力:
EC2インスタンスへの接続
- ダウンロードした.pemファイルを~/.ssh/配下に移動
$ mv ~/Downloads/hoge.pem ~/.ssh
- 所有者のみ読み書き可能に権限を変更(ダウンロード時の権限ではアクセスできない)
$ chmod 600 ~/.ssh/hoge.pem
- EC2インスタンスにアクセス
$ ssh -i ~/.ssh/hoge.pem ec2-user@<パブリックIPv4アドレス>
環境構築
パッケージのインストール
$ sudo yum -y update
$ sudo yum -y install git make gcc-c++ patch libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel libxml2-devel libxslt-devel openssl-devel
rbenvのインストール
$ 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
ruby-buildのインストール
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv rehash
rubyのインストール
めっちゃ時間かかるけど気長に待つ。。。
$ TMPDIR="${PWD}/tmp" rbenv install -v 3.3.3
$ rbenv global 3.3.3
$ ruby -v
ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [x86_64-linux]
mysqlのインストール
$ sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
$ sudo yum install -y mysql-community-server
$ sudo service mysqld start
GPGチェックでエラーが出たら以下を実行
$ sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
プロジェクトのclone
swap領域を作成
bundle installの時にディスク容量が足りなくて失敗するのを回避
$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512
$ sudo chmod 600 /swapfile1
$ sudo mkswap /swapfile1
$ sudo swapon /swapfile1
$ sudo sh -c 'echo "/swapfile1 none swap sw 0 0" >> /etc/fstab'
プロジェクトを配置するディレクトリの作成
$ sudo mkdir /var/www
$ sudo mkdir /var/www/apps
作成したディレクトリのオーナーをec2-userに変更
$ sudo chown ec2-user /var/www/apps/
githubアクセス用のキーペアの作成
$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_ed25519): (エンター)
Enter passphrase (empty for no passphrase): (エンター)
Enter same passphrase again: (エンター)
githubに公開鍵を登録
$ cat ~/.ssh/id_ed25519.pub
表示された内容をコピー
https://github.com/settings/ssh/new にアクセスして公開鍵を追加
接続を確認
ssh -T git@github.com
Hi hoge! You've successfully authenticated, but GitHub does not provide shell access.
プロジェクトのclone
$ git clone リポジトリ
bundle install
プロジェクトのディレクトリに移動
$ cd hoge
bunlde install
$ bundle
mysqlのインストールで失敗。
エラーメッセージに従う
$ sudo yum install -y mysql-devel
再度、bundle install
bundle
railsの起動
mysqlの初期パスワードを取得
$ sudo cat /var/log/mysqld.log | grep password
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: <初期パスワード>
mysqlのパスワードを変更
$ mysql -u root -p
Enter password: <初期パスワード>
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY <新しいパスワード>;
mysql> exit
database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= Rails.application.credentials.mysql.user %>
password: <%= Rails.application.credentials.mysql.password %>
production:
<<: *default
database: hoge_production
socket: <%= Rails.application.credentials.mysql.socket %>
credentialsの修正
$ EDITOR=vim rails credentials:edit -e production
mysql:
user: root
password: <新しいパスワード>
socket: /var/lib/mysql/mysql.sock
dbの作成
RAILS_ENV=production rails db:create db:migrate
httpでの接続を許可する
config/environments/production.rb
config.force_ssl = false
railsの起動
rails s -b 0.0.0.0 -e production
http://<パブリックIPv4アドレス>:3000
にアクセスして完了!
と思ったらアクセスできない。。。
ec2側のインバウンドルールの追加が漏れていた。。。
インバウンドルールを編集(追加)
- タイプ: カスタムTCP
- ポート範囲: 3000
- ソース: 0.0.0.0/0
再度、http://<パブリックIPv4アドレス>:3000
にアクセス。。。
繋がった!
おわりに
なんか色々と漏れてそう。。。
見直して修正しよう。
そして何よりhttpでの接続なんてあかん、絶対。
Discussion