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?

3. pumaで起動してipアドレス指定でhttp通信ができるようにする

Last updated at Posted at 2025-03-06

ゴール

http://{IPアドレス}でrailsの画面が表示できるようにする

関連する記事

1. webページをデプロイするために、EC2インスタンスを起動する
2. Ruby on Railsの環境構築をする
3. pumaで起動してipアドレス指定でhttp通信ができるようにする
4. https://{サブドメイン}でrailsを表示できるようにする

pumaで起動する設定

puma.rbの編集

プロジェクトのソースのconfig/puma.rbを以下のように編集する。
※pidやログの出力場所が存在しなければ、手動で作成する。

/var/www/project_app/project_name/config/puma.rb
# スレッド数の設定(環境に合わせて変更)
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
threads threads_count, threads_count

# ワーカー数(CPUコア数に応じて増やす)
workers ENV.fetch("WEB_CONCURRENCY") { 2 }

# バインド設定
bind "tcp://127.0.0.1:3000"

# pidfileの保存場所
pidfile "/var/www/project_app/shared/tmp/pids/puma.pid"
state_path "/var/www/project_app/shared/tmp/pids/puma.state"

# stdout / stderr のログ出力
stdout_redirect "/var/www/project_app/shared/log/puma.stdout.log", "/var/www/project_app/shared/log/puma.stderr.log", true

# fork する場合の設定(workerモード時)
preload_app!

# アプリのディレクトリ
directory "/var/www/project_app/project_name"

# Pumaを終了したら、ワーカーも終了する
on_worker_boot do
  # まずbundle install --without development testを実行
  system('cd /var/www/project_app/project_name && bundle install --without development test')

  # ActiveRecordの接続を確立
  ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
end

puma.serviceの編集

/etc/systemd/system/puma.serviceに以下を追加する
※ずっとpumaの起動がdevlopmentになってしまっていたが、ExecStartのオプションンに-e productionを追加したらできた!
※puma.serviceを変更したらrestartの前にsudo system deamon-reloadする。

/etc/systemd/system/puma.service
[Unit]
Description=Puma Web Server
After=network.target

[Service]
Type=simple
User=ec2-user
WorkingDirectory=/var/www/ocha_app_dir/ocha_app
ExecStart=/home/ec2-user/.rbenv/shims/bundle exec puma -e production -C /var/www/project_app/project_name/config/puma.rb
Restart=always
Environment="{環境変数名}={値}"
# ↑ここに必要な環境変数を設定する。(今回はrender.comで設定していた変数をそのままコピペした)

[Install]
WantedBy=multi-user.target

nginxの設定

conf.dの編集

rails_app.confを作成する

$ sudo nano /etc/nginx/conf.d/rails_app.conf

rails_app.confに以下を記述する

/etc/nginx/conf.d/rails_app.conf
server {
    listen 80;
    server_name {パブリックIPアドレス};

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

環境変数の設定

前に使用していたサーバーで設定している環境変数をそのまま、/etc/environmentに記述する。

# environmentの反映
$ source /etc/environment
# 反映されているか確認
$ echo $環境変数名

エラーの対処

エラー①

application.css がアセットパイプライン(Sprockets)または app/assets/builds に存在しない

Sprockets::Rails::Helper::AssetNotFound (The asset "application.css" is not present in the asset pipeline.

対処法

# assets:precompile する
$ RAILS_ENV=production bundle exec rails assets:precompile
# pumaの再起動
$ bundle exec puma -C config/puma.rb

エラー②

productionのdatabase.yamlが間違っていた
※以前はlocalhostでdb接続していたが、今回は外部通信になるため、設定を以下に変更

/var/www/project_app/project_name/config/database.yaml
production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>

起動手順

pumaの起動

# pumaがすでに起動している場合、killしてから
$ pkill -f puma
$ bundle exec puma -C config/puma.rb
# ターミナル変えて
$ sudo systemctl restart puma
$ sudo systemctl status puma

nginxの起動

# nginxをインストール
$ sudo yum install nginx -y
# nginxの再起動
$ sudo systemctl restart nginx
$ sudo systemctl status nginx

pumaの起動確認

$ ps aux | grep puma
ec2-user  250294  0.1 14.4 960732 61820 pts/0    Sl+  08:29   0:02 puma 6.6.0 (tcp://0.0.0.0:3000) [ocha_app]
ec2-user  250313  0.2 27.6 1658856 118488 pts/0  Sl+  08:29   0:05 puma: cluster worker 0: 250294 [ocha_app]
ec2-user  250318  0.2 27.3 1648488 117140 pts/0  Sl+  08:29   0:05 puma: cluster worker 1: 250294 [ocha_app]
ec2-user  255792  0.0  0.3 222096  1452 pts/1    S+   09:09   0:00 grep --color=auto puma
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?