この記事では、Railsで作ったアプリケーションをAWSにデプロイ後、pumaを起動できるようになります。
さらに、ターミナルを抜けても起動し続けておく方法も方法も説明していきます。
Ruby on Railsのアプリ開発や、WEBデザイン、グラフィックデザインのご依頼大歓迎です…🥺
お問い合わせページからお気軽にご連絡ください。
開発環境
- EC2 t2.micro
- Amazon Linux 2023
- Ruby 3.2.2
- macOS Sonoma 14.0
- M1 Macbook Air
- Nginx
前提
- NginxなどのWEBサーバの構築が完了していること
- gitからコードをcloneし、
bundle install
など必要な手順を踏んでいること - Public IPや購入されたドメインでWEBサイトが見れること
pumaの起動方法について
前提条件が完了していると、プロジェクトディレクトリに移動した後、以下のコマンドでpumaが起動するはず、、
bundle exec puma -e production
しかし、このコマンドでは、Ctrl + C を押してターミナルを抜けると、WEBサイトが止まってしまいます。。
なので、今回はsystemd
を使用してPumaを設定していきます。
pumaの設定方法
まずは、puma.service
ファイルを作成していきます。
sudo vi /etc/systemd/system/puma.service
内容は以下のような感じ。。
{your_path}のところはご自身のアプリケーションディレクトリを記入ください。
After=network.target
[Service]
Type=notify
WatchdogSec=60
WorkingDirectory={your_path}
PIDFile={your_path}/tmp/pids/server.pid
Environment="LANG=ja_JP.UTF-8"
Environment="RAILS_MAX_THREADS=20"
Environment="RAILS_ENV=production"
ExecStartPre=/usr/bin/rm -f {your_path}/tmp/pids/server.pid
ExecStart=/home/ec2-user/.rbenv/shims/bundle exec {your_path}/bin/rails server
ExecReload=/bin/kill -USR2 $MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
以下コマンドで、systemdに登録します。
sudo systemctl daemon-reload
pumaを起動します。
sudo systemctl start puma
これでWEBアプリケーションが表示されるはず。。
ステータスの確認をしましょう。
systemctl status puma.service
こんな感じに表示されたらOK
systemctl status puma.service
● puma.service
Loaded: loaded (/etc/systemd/system/puma.service; disabled; preset: disabled)
Active: active (running) since Mon 2023-12-18 19:16:12 JST; 5s ago
Process: 167377 ExecStartPre=/usr/bin/rm -f /var/www/{your_path}/tmp/pids/server.pid (code=exited, status=0/SUCCESS)
Main PID: 167378 (ruby)
Tasks: 28 (limit: 1114)
Memory: 183.0M
CPU: 2.292s
CGroup: /system.slice/puma.service
└─167378 "puma 5.6.7 (unix:///var/www/{your_path}/tmp/sockets/puma.sock) [{your_path}]"
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal bundle[167378]: Puma starting in single mode...
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal bundle[167378]: * Puma version: 5.6.7 (ruby 3.2.2-p53) ("Birdie's Version")
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal bundle[167378]: * Min threads: 20
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal bundle[167378]: * Max threads: 20
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal bundle[167378]: * Environment: production
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal bundle[167378]: * PID: 167378
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal bundle[167378]: * Listening on unix:///var/www/{your_path}/tmp/sockets/puma.sock
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal bundle[167378]: Use Ctrl-C to stop
Dec 18 19:16:12 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal systemd[1]: Started puma.service.
Dec 18 19:16:17 ip-xxx-xx-xx-xx.ap-northeast-1.compute.internal systemd[1]: /etc/systemd/system/puma.service:1: Assignment outside of section. Ignoring.