Railsアプリ開発用EC2インスタンス(Amazon Linux 2023)の初期設定をする

記事タイトルとURLをコピーする

はじめに

こんにちは、サービス開発課の行武です。

今回は、Railsアプリ開発用のEC2インスタンス(Amazon Linux 2023)に初期設定をするときの手順を備忘録としてまとめてみます。

本記事がなにかの参考になれば幸いです。

【前回の記事】

環境情報

本記事は、以下の環境で動作を確認しました。

環境情報 バージョン
OS(リモート) Amazon Linux 2023

初期設定

前回の記事の内容で、VS CodeのRemote SSHで開発用EC2インスタンス(Amazon Linux 2023)にSSH接続できるところまで進めました。

今回はSSH接続後、ターミナルで開発環境の初期設定を行います。

VS Codeのターミナルは【⌘ + j】を同時に押すことで開きます。

(Windowsの場合は【ctrl + j】)

基本的なライブラリのインストール

ターミナルで以下のコマンドを実行します。

sudo dnf update -y
sudo dnf install -y zsh git gcc make zlib-devel libxml2-devel libxslt-devel readline-devel openssl-devel gcc-c++ curl-devel wget bzip2 bind-utils fontforge libffi-devel libX11 util-linux-user libyaml-devel gdbm-devel ncurses-devel patch rust perl libpq-devel postgresql15

タイムゾーンの設定

以下のコマンドを実行し、タイムゾーンを東京に設定します。

sudo timedatectl set-timezone Asia/Tokyo

シェル(zsh)の設定

https://github.com/zsh-users/zsh

以下のコマンドを実行し、Vimでzshの設定ファイル ~/.zshrc を開きます。

vim ~/.zshrc

基本的な設定内容を入力します。

  • i を押して、Vimの挿入モードに変更します。
  • 以下の内容をコピペします。
  • ローマ字入力の状態で Esc を押し、:wq と入力して保存します。
# .zshrc
# 色を使用出来るようにする
autoload -Uz colors
colors

# 日本語ファイル名を表示可能にする
setopt print_eight_bit

# cdなしでディレクトリ移動
setopt auto_cd

# ビープ音の停止
setopt no_beep

# ビープ音の停止(補完時)
setopt nolistbeep

# cd -<tab>で以前移動したディレクトリを表示
setopt auto_pushd

# ヒストリ(履歴)を保存、数を増やす
HISTFILE=~/.zsh_history
HISTSIZE=100000
SAVEHIST=100000

# 同時に起動したzshの間でヒストリを共有する
setopt share_history

# 直前と同じコマンドの場合は履歴に追加しない
setopt hist_ignore_dups

# 同じコマンドをヒストリに残さない
setopt hist_ignore_all_dups

# スペースから始まるコマンド行はヒストリに残さない
setopt hist_ignore_space

# 補完リストの表示間隔を狭くする
setopt list_packed

#単語の入力途中でもTab補完を有効化
setopt complete_in_word

# 追加したパッケージ用にパスを通す
export PATH=/usr/local/bin:$PATH
export PATH=$HOME/bin:$PATH

デフォルトシェルの設定

以下のコマンドを実行し、デフォルトシェルをzshに設定する。

sudo chsh ec2-user
/bin/zsh

デフォルトシェルの変更を反映させるため、一度EC2インスタンスを再起動します。

sudo reboot

再度、SSH接続します。

  • VS Codeを開き、[⌘ + shift + p]を同時押しします(Windowsの場合は、[ctrl + shift + p])。
  • 表示された入力欄に Remote-SSH: Connect to Host と入力し、Enterを押します。
  • Host名をクリックします。

【確認】デフォルトシェルの変更

以下のコマンドを実行し、デフォルトシェルをzshになっていることを確認します。

echo $SHELL

# /bin/zsh と表示されればOK

プロンプト(starship)の設定

https://starship.rs/ja-JP/

以下のコマンドを実行し、starshipをインストールします。

sudo su -

curl -sS https://starship.rs/install.sh | sh

exit

以下のコマンドを実行し、Vimでstarshipの設定ファイル ~/.config/starship.toml を開きます。

mkdir -p ~/.config && touch ~/.config/starship.toml

vim ~/.config/starship.toml

基本的な設定内容を入力します。

  • i を押して、Vimの挿入モードに変更します。
  • 以下の内容をコピペします。
  • ローマ字入力の状態で Esc を押し、:wq と入力して保存します。
# ~/.config/starship.toml
add_newline = false

format = """
$username\
$directory\
$git_branch\
$git_status\
$time\
$line_break\
\\$ 
"""

[username]
format = "[$user](white):"

[directory]
format = "[$path](white)"
truncation_length = 0
truncate_to_repo = false

[time]
format = " [$time](white)"
time_format = "[%Y/%m/%d %T]"
disabled = false

[line_break]
disabled = false

[git_branch]
format = " [$branch(:$remote_branch)](green)"

[git_status]
format = ' ([\[$all_status$ahead_behind\]](red))'

プロンプトの設定の反映させるため、以下のコマンドを実行します。

echo 'eval "$(starship init zsh)"' >> ~/.zshrc

【確認】プロンプトの設定

以下のコマンドを実行し、プロンプトが変更されていることを確認します。

exec $SHELL -l

# プロンプトの表示が `ec2-user:~/ [2022/08/27 10:00:01]` のように変わればOK

Git, GitHubの設定

次に、GitとGitHubの設定をします。

Gitの設定

以下のコマンドを実行し、Vimでgitの設定ファイル ~/.gitconfig を開きます。

vim ~/.gitconfig

基本的な設定内容を入力します。

  • i を押して、Vimの挿入モードに変更します。
  • 以下の内容をコピペします。
  • メールアドレスとユーザー名を修正します。
  • ローマ字入力の状態で Esc を押し、:wq と入力して保存します。
# ~/.gitconfig
[user]
  email = test@example.com # GitHubのメールアドレス
  name = test-user-name # GitHubのユーザー名

[alias]
  ad = add
  br = branch
  ci = commit
  cm = commit
  co = checkout
  cp = cherry-pick
  df = diff
  gp = grep
  gr = grep
  lg = log
  pl = pull
  rss = reset --soft HEAD^
  rm = remove
  ss = status
  st = status
  uns = restore --staged .

[grep]
  lineNumber = true

[pager]
  diff = cat
  grep = cat
  log = less

[core]
  excludesfile = ~/.gitignore

GitHubへのSSH接続の設定

以下のコマンドを実行し、GitHubに登録するSSHキーを作成します。

cd ~/.ssh

ssh-keygen -t ed25519 -C ""

# 作成するキー名は `github` とします。
# 必要に応じて、SSHキーにパスワードを設定します。

以下のコマンドを実行し、Vimでsshの設定ファイル ~/.ssh/config を開きます。

vim ~/.ssh/config

GitHubへのSSH接続の設定内容を入力します。

  • i を押して、Vimの挿入モードに変更します。
  • 以下の内容をコピペします。
  • ローマ字入力の状態で Esc を押し、:wq と入力して保存します。
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/github

以下のコマンドを実行し、設定ファイルの権限を修正します。

chmod 600 ~/.ssh/config

以下のコマンドを実行し、GitHubに登録するSSHキーをコピーします。

cat ~/.ssh/github.pub

# 表示された内容をコピーします。

GitHubにSSHキーを登録する

  • ブラウザでGitHubにアクセスします。
  • 画面右上のユーザーアイコンをクリックして Settings をクリックします。
  • 左メニューの SSH and GPG keys をクリックします。
  • New SSH key をクリックして、任意のタイトルを入力します。
  • 上でコピーしたSSHキーを貼り付けて、Add SSH key をクリックしSSHキーを保存します。

【確認】GitHubへのSSH接続

ターミナルで以下のコマンドを実行し、GitHubへのSSH接続ができることを確認します。

ssh -T github.com

yes

# `Hi ユーザー名! You've successfully authenticated,` のようなメッセージが返ってくればOK

アプリ開発で役に立つツールのインストール

続いて、アプリ開発で役立つツールをインストールします。

tigのインストール

https://github.com/jonas/tig

以下のコマンドを実行し、tigをインストールします。

cd

git clone git@github.com:jonas/tig.git

cd tig

make

make install

【確認】tigのインストール

以下のコマンドを実行し、tigがインストールされていることを確認します。

tig

# tigのgitログが表示されればOK
# tigから抜けるときは q を押します。

docker, docker composeのインストール

https://docs.docker.com/

以下のコマンドを実行し、dockerをインストールします。

cd

sudo dnf install docker -y

sudo systemctl start docker

sudo systemctl enable docker

以下のコマンドを実行し、docker composeをインストールします。

  • 変数VERには、docker composeのバージョンを入れます。
sudo mkdir -p /usr/local/lib/docker/cli-plugins

VER=2.4.1
sudo curl -L https://github.com/docker/compose/releases/download/v${VER}/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose

以下のコマンドを実行し、dockerグループにec2-userを追加します。

sudo usermod -a -G docker ec2-user

グループへのユーザー追加を反映させるため、一度EC2インスタンスを再起動します。

sudo reboot

再度、SSH接続します。

  • VS Codeを開き、[⌘ + shift + p]を同時押しします(Windowsの場合は、[ctrl + shift + p])。
  • 表示された入力欄に Remote-SSH: Connect to Host と入力し、Enterを押します。
  • Host名をクリックします。

【確認】docker, docker composeのインストール

以下のコマンドを実行し、docker, docker composeがインストールされていることを確認します。

docker --version

# `Docker version 25.0.5, build 5dc9bcc` のように
# dockerのバージョンが返ってくればOK

docker compose version

# `Docker Compose version v2.4.1` のように
# docker composeのバージョンが返ってくればOK

asdfのインストール

https://asdf-vm.com/

以下のコマンドを実行し、asdfをインストールします。

cd

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

echo '. $HOME/.asdf/asdf.sh' >> ~/.zshrc

exec $SHELL -l

以下のコマンドを実行し、Vimでasdfの設定ファイル ~/.asdfrc を開きます。

vim ~/.asdfrc

設定内容を入力します。

  • i を押して、Vimの挿入モードに変更します。
  • 以下の内容をコピペします。
  • ローマ字入力の状態で Esc を押し、:wq と入力して保存します。
# ~/.asdfrc
legacy_version_file = yes

【確認】asdfのインストール

以下のコマンドを実行し、asdfがインストールされていることを確認します。

asdf --version

# `v0.14.1-f00f759` のように
# asdfのバージョンが返ってくればOK

Node.js, Rubyのインストール

続いて、asdfを利用して、各プログラミング言語をインストールします。

Node.jsのインストール

以下のコマンドを実行し、Node.jsをインストールします。

asdf plugin add nodejs

asdf install nodejs 16.18.1

asdf global nodejs 16.18.1

npm install -g yarn

【確認】Node.jsのインストール

以下のコマンドを実行し、Node.jsがインストールされていることを確認します。

node --version

# `v16.18.1` のように
# Node.jsのバージョンが返ってくればOK

yarn --version

# `1.22.22` のように
# yarnのバージョンが返ってくればOK

Rubyのインストール

以下のコマンドを実行し、Rubyをインストールします。

asdf plugin add ruby

asdf install ruby 3.2.2

asdf global ruby 3.2.2

【確認】Rubyのインストール

以下のコマンドを実行し、rubyがインストールされていることを確認します。

ruby --version

# `ruby 3.2.2` のように
# Rubyのバージョンが返ってくればOK

docker composeでPostgreSQLを起動

最後に、docker composeでPostgreSQLを起動します。

今回はPostgreSQLのバージョン 12.18 を使用するため、docker composeでPostgreSQLを起動します。

docker composeの設定

以下のコマンドを実行し、Vimでdocker composeの設定ファイル docker-compose.yml を開きます。

vim docker-compose.yml
  • i を押して、Vimの挿入モードに変更します。
  • 以下の内容をコピペします。
  • ローマ字入力の状態で Esc を押し、:wq と入力して保存します。
# docker-compose.yml
version: "3.7"

services:
  postgresql:
    image: postgres:12.18-alpine
    environment:
      POSTGRES_USER: root
      POSTGRES_HOST_AUTH_METHOD: trust
    ports:
      - "5432:5432"
    command: -p 5432
    volumes:
      - "./docker/data/postgresql:/var/lib/postgresql/data:cached"

以下のコマンドを実行し、docker composeでPostgreSQLを起動します。

echo "export DATABASE_URL='postgres://root@localhost/'" >> ~/.zshrc

exec $SHELL -l

docker compose up -d

sudo chmod 777 -R docker/data/postgresql

【確認】docker composeでPostgreSQLの起動

以下のコマンドを実行し、docker composeでPostgreSQLが起動していることを確認します。

docker ps

# `postgres:12.18-alpine` のように
# PostgreSQLのコンテナが起動していればOK

psql -h localhost -U root

# `psql (15.8, server 12.18)` のように
# PostgreSQLに接続できればOK

exit

おわりに

ご覧いただき、ありがとうございました!

行武 直人 (記事一覧)

2020年4月 新卒入社
サービス開発部サービス開発課所属

2024 AWS ALL Certifications Engineers
Railsアプリ開発者
@zhiren1211