株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > Ruby on Rails 入門(Ubuntu 24.04 LTS)

Ruby on Rails 入門(Ubuntu 24.04 LTS)


Ruby on Rails は「設定より規約(Convention over Configuration)」を基本思想とした Web フレームワークです。 スキャフォールドによる素早いプロトタイピング、ActiveRecord による直感的なDB操作、充実した gem エコシステムが特徴です。
本記事では Ubuntu 24.04 LTS に rbenv で Ruby をインストールし、Rails アプリを Puma + Nginx + systemd で 本番稼働させるまでを実コマンドで解説します。


rbenv と ruby-build のビルドに必要なパッケージを先にインストールします。

sudo apt update && sudo apt install -y \
  git curl build-essential \
  libssl-dev libreadline-dev zlib1g-dev \
  libyaml-dev libffi-dev libgdbm-dev \
  libsqlite3-dev sqlite3 \
  libpq-dev

libpq-dev は PostgreSQL に接続する場合に必要です。SQLite3 のみ使う場合は不要です。


rbenv は Ruby のバージョン管理ツールです。システム全体ではなくユーザー単位で管理できます。

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

# ruby-build プラグイン(rbenv install コマンドを追加)
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

# インストール確認
rbenv --version

# インストール可能な最新版を確認
rbenv install -l

# Ruby をインストール(例: 3.3.0)
rbenv install 3.3.0

# デフォルトバージョンに設定
rbenv global 3.3.0

# 確認
ruby --version
# ruby 3.3.0 ...

インストールはソースからのビルドになるため、数分かかります。


# --no-document でドキュメント生成をスキップ(高速化)
gem install bundler rails --no-document

rails --version
# Rails 8.x.x

# PostgreSQL を使う場合
rails new myapp -d postgresql
cd myapp

# SQLite3 を使う場合(開発環境向け)
rails new myapp
cd myapp

rails new は Gemfile の依存関係に基づいて bundle install を自動実行します。


config/database.ymldefault セクションを編集します。

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV["DB_USERNAME"] %>
  password: <%= ENV["DB_PASSWORD"] %>
  host: localhost

development:
  <<: *default
  database: myapp_development

production:
  <<: *default
  database: myapp_production
# データベース作成とマイグレーション
rails db:create
rails db:migrate

# -b 0.0.0.0 で外部からアクセス可能にする(開発時のみ)
rails server -b 0.0.0.0 -p 3000

ブラウザで http://サーバーIP:3000 にアクセスして Rails のウェルカムページが表示されれば成功です。


環境変数・設定 内容
RAILS_ENV=production 本番モードで起動する
SECRET_KEY_BASE rails secret で生成した文字列を設定
config.force_ssl = true HTTP → HTTPS リダイレクトを強制(Nginx に SSL証明書が必要)
config.log_level = :info 本番ログレベルを info に設定
# SECRET_KEY_BASE を生成
rails secret

# アセットをプリコンパイル(本番デプロイ時)
RAILS_ENV=production rails assets:precompile

Rails のデフォルト AP サーバーは Puma です。config/puma.rb を本番向けに調整します。

# config/puma.rb
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
threads threads_count, threads_count

# Unix ソケット経由で Nginx と通信
bind "unix:///var/run/puma/myapp.sock"

environment ENV.fetch("RAILS_ENV") { "development" }

pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
state_path ENV.fetch("STATE_PATH") { "tmp/pids/server.state" }

on_worker_boot do
  ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
end
# ソケットディレクトリを作成
sudo mkdir -p /var/run/puma
sudo chown deploy:deploy /var/run/puma

/etc/systemd/system/myapp.service を作成します。

[Unit]
Description=Ruby on Rails myapp (Puma)
After=network.target postgresql.service

[Service]
Type=simple
User=deploy
WorkingDirectory=/var/www/myapp
Environment=RAILS_ENV=production
Environment=SECRET_KEY_BASE=ここに生成したキーを入力
Environment=DB_USERNAME=myapp_user
Environment=DB_PASSWORD=mypassword
ExecStart=/home/deploy/.rbenv/shims/bundle exec puma -C config/puma.rb
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo systemctl status myapp

Puma が Unix ソケットでリッスンしているので、Nginx からソケット経由でプロキシします。 静的ファイル(public/ 以下)は Nginx が直接配信します。

upstream rails_app {
    server unix:///var/run/puma/myapp.sock;
}

server {
    listen 80;
    server_name example.com;
    root /var/www/myapp/public;

    # 静的ファイルを Nginx で直接配信
    location / {
        try_files $uri @rails;
    }

    # Rails アプリへのプロキシ
    location @rails {
        proxy_pass         http://rails_app;
        proxy_http_version 1.1;
        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_read_timeout 60s;
    }
}
sudo nginx -t && sudo systemctl reload nginx

Nginx SSL/TLS 設定(Ubuntu 24.04) — HTTPS 設定と SSL証明書の設定
Nginx ロードバランシング・リバースプロキシ詳細設定 — upstream、proxy_set_header、キャッシュ設定
PostgreSQL インストール・初期設定(Ubuntu 24.04) — Rails の DB バックエンドとして使う PostgreSQL の設定


config/environments/production.rbconfig.force_ssl = true を設定すると、 Rails が HTTP アクセスを自動的に HTTPS へリダイレクトします。 この設定を有効にするには、Nginx に有効な SSL証明書が設定されている必要があります。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、 2009年から16年以上、RapidSSL 3,960円/1年(税込)〜でSSL証明書を販売しています。審査サポート・インストール代行も対応しています。

SSL証明書の購入はこちら / SSL証明書とは? / インストール代行サービス


← 技術ドキュメント一覧へ戻る