How to Run Rails App Server with Systemd and Ansible
Create a systemd service to run your rails app server.
Ansible tasks to create the service:
---
…snip…
vars:
rails_root: “/myapp”
rails_user: “webuser”
tasks:
- name: Setup Rails Web Service
template:
dest: /usr/lib/systemd/system/rails-web.service
src: templates/rails-web.systemd.j2
- name: Enable Rails Web Service
systemd:
name: rails-web
daemon_reload: yes
enabled: yes
masked: no
The ansible template "rails-web.systemd.j2":
[Unit]
Description=Rails Web
[Service]
Type=simple
SyslogIdentifier=rails-web
User={{ rails_user }}
PIDFile={{ rails_root }}/tmp/pids/web.pid
WorkingDirectory={{ rails_root }}
ExecStart=/bin/bash -l -c “{{ rails_root }}/bin/rails s -b 0.0.0.0 -p 3000”
ExecReload=/bin/kill -s USR2 $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
But you can also do this manually by creating the file `/usr/lib/systemd/system/rails-web.service` and then runninh `systemctl daemon-reload` to let systemd know about your service. Now you can start it up with systemctl start rails-web!