Deploying Rails applications on Windows
Due to some legacy issues, and HP workstations being shit that you can’t turn the hardware virtualization on, I had an issue with one client regarding speed and loading time of an application. My common deployment server is running Ubuntu on VMWare or Oracle VBox, passenger + nginx, or apache even. But, this “server” is just a regular machine(people here don’t want to invest in real hardware, or just don’t have the money).
So I had to deploy the app on windows 7, and I will show you how.
First, there are few steps you have to take care of:
- Install Ruby with the ruby installer http://rubyinstaller.org/downloads/
- Install Ruby DevKit from the same source(this will be needed for you to compile some native binaries)
- Install Thin server(gem install thin)
- Set up dropbox deployment for your application(I know this is monkeypatching as hell, but if it works…) as described on Rob Conery’s blog
- Test the app and make sure everything is working ok, (run rails server), then thin start -e production, just to make sure everything is ok, and all of your gems work on windows(fix or replace the ones that don’t)
- Set up the task scheduler(this is a fine piece of software on Win 7 and up) as described here, to run rails application almost as a windows service( you start with ‘thin start -e production -p 80 -c “path_to_your_app” ‘)
- Write a nifty batch script (shown below) that will restart the server, run migrations, compile the assets and whatnot.
- After you pull to your dropbox synced repository, login to the server and execute the batch file from there to almost automate the deployment process.
Nifty batch script:
I know this is not capistrano, and cap deploy, and it is hacked as it can be, and also, it works, it’s a small client so I don’t expect much trouble with this. Lesson here: Try as much as you can to deploy your rails server on a linux server, best in a virtual machine. But if HP messes with you and you have some shitty hardware running windows, this is the best way I have found. If anyone has anything better, put it into comments, i’m happy to make my life easier. References: 1. http://wekeroad.com/danger-danger/git-and-dropbox-sitting-in-a-tree 2. http://unicornless.com/systems-administration/run-thin-as-windows-service
Comments