December 24

0 comments

Using Always Up to run Ruby on Rails Puma Servers as a service on Microsoft IIS servers.

By Christopher Mendla

December 24, 2017


Last Updated on November 29, 2019 by Christopher G Mendla

When I first began Ruby on Rails development, I was not able to use a LAMP stack. I was limited to working with the existing Microsoft IIS server.

 I chose Puma as the Rails production server for the applications. The problem was that if the IIS server was restarted, which happened often, the individual applications would need to be manually restarted. This simply was not acceptable.
I tried runservice.app but it just didn’t meet our needs. I found a product called Always Up which worked perfectly.
Some of the features of the application were
  • Cost – $49 per IIS server (We only required one license)
  • Gui Interface – easy configuration plus you can check that all services are running and restart as necessary
  • The user can configure start/restart, memory use etc.
  • It can be configured to send email alerts on crashes.
  • Allows for start up delays – IOW, we can start each server 10 seconds apart after a reboot.
 
I created batch files to kick off the application that would call the Puma server and Rails. I configured Always Up to call these batch files to run the apps.
Another nice feature is that by opening the Always Up console, you get a good idea of any problems with your apps. There will be times when the app shows as green but isn’t working as expected. In most cases, that is a rails issue.  If you want to restart a Rails app, than can be easily done via the Always Up console.
I ran this for almost two years. It is still running and has run with 100 percent success.
The email alert feature was nice. I don’t believe it would work if the whole IIS server was down but it would send alerts if a particular Rails app would not start.
 

Christopher Mendla

About the author

Leave a Reply

Your email address will not be published. Required fields are marked

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}