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 で
本番稼働させるまでを実コマンドで解説します。
1. 必要パッケージのインストール
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 のみ使う場合は不要です。
2. rbenv + ruby-build のインストール
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
3. Ruby のインストール
# インストール可能な最新版を確認 rbenv install -l # Ruby をインストール(例: 3.3.0) rbenv install 3.3.0 # デフォルトバージョンに設定 rbenv global 3.3.0 # 確認 ruby --version # ruby 3.3.0 ...
インストールはソースからのビルドになるため、数分かかります。
4. Bundler と Rails のインストール
# --no-document でドキュメント生成をスキップ(高速化) gem install bundler rails --no-document rails --version # Rails 8.x.x
5. 新規アプリの作成
# PostgreSQL を使う場合 rails new myapp -d postgresql cd myapp # SQLite3 を使う場合(開発環境向け) rails new myapp cd myapp
rails new は Gemfile の依存関係に基づいて bundle install を自動実行します。
6. データベース設定(PostgreSQL)
config/database.yml の default セクションを編集します。
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
7. 開発サーバーの起動と確認
# -b 0.0.0.0 で外部からアクセス可能にする(開発時のみ) rails server -b 0.0.0.0 -p 3000
ブラウザで http://サーバーIP:3000 にアクセスして Rails のウェルカムページが表示されれば成功です。
8. 本番環境の設定
| 環境変数・設定 | 内容 |
|---|---|
| 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
9. Puma の設定
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
10. systemd サービスの設定
/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
11. Nginx リバースプロキシの設定
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 の設定
Rails の config.force_ssl には SSL証明書が必要
config/environments/production.rb で config.force_ssl = true を設定すると、
Rails が HTTP アクセスを自動的に HTTPS へリダイレクトします。
この設定を有効にするには、Nginx に有効な SSL証明書が設定されている必要があります。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、
2009年から16年以上、RapidSSL 3,960円/1年(税込)〜でSSL証明書を販売しています。審査サポート・インストール代行も対応しています。
SSL証明書の購入はこちら / SSL証明書とは? / インストール代行サービス
