0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Railsアプリのデプロイを効率化(個人開発向け)

Last updated at Posted at 2025-10-19

注意:個人開発向けの記事なので、商用では参考にしないでください

はじめに

ローカルでGitリポジトリから資材をアーカイブして、本番サーバにコピーして展開、という手作業でデプロイしていたが面倒くさくなった。
それならCI/CDを導入しよう!となるのだろうが、個人開発だとあまり気が乗らない。
いっそのこと本番サーバにGitクローンしてそのまま稼働させればいいじゃない、と考えた。

バージョン

  • Rails 8.0.3

前提

  • すでに本番サーバでRailsアプリが稼働している
  • 本番サーバのプロジェクトルートは/var/www/railsとする
  • 本番サーバにリリースするバージョンはGitでタグ付けしている

初回デプロイ

現在のアプリケーション環境を退避

まずはRailsを停止する。私の環境だとPumaをサービス化しているので以下で停止。

sudo systemctl stop puma

既存のプロジェクトルートを退避。

mv /var/www/rails /var/www/rails.$(date +%Y%m%d)

新しいアプリケーション環境を配置

Gitからクローン。

git clone https://github.com/tamanegisoul/nanika.git rails
cd rails
git checkout xxxx # デプロイ対象タグを指定

私はcredentialsを使ってないが、credentialsが無いとRailsが起動しないので、credentialsを生成しておく。
※credentialsを使っている場合は、config/master.keyconfig/credentials.yml.encを配置

rails credentials:edit

アセットをプリコンパイルする。

rails assets:precompile

UNIXドメインソケット用のディレクトリを作成。
※私の環境ではNginx経由で/var/www/rails/tmp/sockets/puma.sockを参照しているので

mkdir tmp/sockets

Railsを起動してブラウザから動作確認する。

sudo systemctl start puma

以降のデプロイ

デプロイ対象のタグをチェックアウトすれば反映されるので、以下のような手順になる。

Railsを停止。

sudo systemctl stop puma

Gitからデプロイ対象を取得。

cd /var/www/rails
git fetch
git checkout xxxx # デプロイ対象のタグを指定

以下は必要に応じて実施でも良いし、毎回実施でも問題ない。
なおダウングレード(過去のタグをチェックアウト)する場合は、必要に応じてdb:migrateの代わりにdb:rollbackを実行する。

RAILS_ENV=production bundle install
# 私の環境ではconfig/database.ymlから環境変数を参照しているので以下のようになる
RAILS_ENV=production DB_NAME=xxx DB_USER=xxx DB_PASSWORD='xxxxx' rails db:migrate
RAILS_ENV=production rails assets:precompile

Railsを起動

sudo systemctl start puma

感想

だいぶ楽になった。デプロイ後にアプリケーションに不具合が見つかっても、すぐ戻せるし。SSHログインが必要だが、もともとデプロイ時にはサーバの状態を確認したりするので、手間とは感じない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?