はじめに
今回は、Ruby on RailsのアプリケーションをsystemdとPumaで起動する方法についてお話ししたいと思います。この内容は、私がうっかりやってしまったミスとその解決法を共有することを目的としています。
なぜ起動していなかったのか?
タイトルを冒頭から回収していきますが、EC2をどこかのタイミングで再起動していました。その時にPumaを立ち上げるのを忘れていて(←ここ重要)、そのままなんで繋がらないのかをあれこれ考えていました。結局単純なミスなのに、もっと重大なことが起こってしまったのではないかと全然違うところを見て回っていました。
どのように対策したか
こちらのQiita記事を参考にさせて頂きました。
1. Pumaの自動起動用ファイルを作成する
[Unit]
Description=Puma AP Server
After=network.target
[Service]
Type=notify
WatchdogSec=10
User=ec2-user
WorkingDirectory=/home/ec2-user/RealWorld/
ExecStart=/home/ec2-user/.rbenv/shims/puma -C config/puma.rb
Restart=always
[Install]
WantedBy=multi-user.target
ExecStartに記載するpumaとpuma.rbの場所の探し方
- pumaを探すには
sudo find / -name puma
- puma.rbを探すには
sudo find / -name puma.rb
2. ファイルを移動する
上記を記載したファイルを/etc/systemd/system/
に移動させます。
3. systemdに変更があったことを教えてあげる
sudo systemctl daemon-reload
4. 次回システム起動時に自動的に起動するように設定する
sudo systemctl enable puma
5. 今すぐPumaを起動させる
sudo systemctl start puma
6. Pumaのステータスを確認する
sudo systemctl status puma
これで Active: active (running) となっていたら完了です!
まとめ
前職では普段から、システムとシステムとの間に手作業を入れないようにとか、間違った場合はどこで気がつけるようになっているのか?などと、システムを導入する時にベンダーの方へ質問していました。「人は間違う生き物」というのは前提に考えていたつもりでしたが、いざ自分が間違うと恥ずかしいものですね。。。
だからこそ、「気を付ける!」と気張るのではなく、「任せる」というスタンスで行きたいものです☺️