CATEGORY: RUBY

Rails appをsystemd serviceで起動する

⚠️ 注意: 本番環境では使用しないこと。

パラメータ

  • App directory: /work/lib/w
  • rbenv user: user
  • Port: 1234

Rails アプリの準備

# as a regular user
cd /work/lib && ys-gclone w && cd w
bundle install
bundle exec rails db:migrate

systemd サービスの作成

# as root
cat <<'EOF' > /etc/systemd/system/w.service
[Unit]
Description=Rails Development Server
After=network.target

[Service]
Type=simple
User=user
WorkingDirectory=/work/lib/w
ExecStart=/bin/bash -lc 'eval "$(rbenv init - bash)" && bundle exec rails s -b 0.0.0.0 -p 1234'
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

ポートの開放

firewall-cmd --permanent --zone=public --add-port=1234/tcp
firewall-cmd --reload
firewall-cmd --list-all

サービスの有効化と起動

sudo systemctl daemon-reload
sudo systemctl enable w.service
sudo systemctl start w.service

サービスの確認

サービスの状態を確認する:

sudo systemctl status w.service

Follow the service logs:

sudo journalctl -u w.service -f

環境

$ cat /etc/redhat-release
AlmaLinux release 10.2 (Lavender Lion)
$