I’m currently wirking in my first commercial project with RoR. The
client is asking me if we can use Windows Server 2003 or Windows 2000,
because he has 3 application running on 3 virtual private servers
running Windows, and he thinks that the most efficient way to go for
this new application in RoR would be to create a new virtual private
server in that big computer.
I’m currently developing applications with RoR in Win XP, using the
last version of InstantRails, and everything seems to work fine, so I
told him that I was going to investigate, and give him an advice.
Now, I did just that, and I found in this group some posts discusing
this issue. The conclusion is that you can run RoR on Windows, but
everyone still prefer to run it on Linux. Then, my question is… why?
Is it really better to run RoR in Linux/Apache/Mongrel than
Windows/Apache/Mongrel (for example)?
I’ve got lots of posts outlining how we run Windows servers for
production
rails apps…search the list for ‘bphogan’. I’ve also written some
articles
on how to do deployment on Windows servers.
You’ll need multiple dispatchers for a Rails application because of the
single-threaded nature of the Rails framework. The Ruby interpreter is
really slow on Windows, so you’ll probably need more dispatchers to
handle
the load.
For example… in my tests with my server (2x2ghz 2gb ram), I see
roughly 6
to 10 requests per second (60-80k requests per 24 hour period). That
same
hardware gives me roughly 30 to 50 requests per second. So Windows works
fine for low-traffic things, but won’t scale well for high-traffic
sites.
You can use Mongrel instances and load-balance using Apache 2.2 with
mod_proxy_balance if you need to scale, but you’ll need a lot more
instances
of mongrel to process the requests. You can get by with only 2 to 4 on
Linux
If you are forced to deploy on Windows, then you have to do it. If you
have a choice, I’d go with Ubuntu because that’s super easy to set up
and if
you’re virtualizing your servers it’s a piece of cake. I’m currently
proxying requests from a Windows web server to Apache running on Linux,
all
virtualized.
Feel free to contact me off list if you have more questions. I’d be
happy to
help.
Also, remember to think not only about development but about
deployment, monitoring and maintenance.
It will be difficult or impossible for you to make use of Capistrano
(was SwitchTower) when your deployment target is windows:
“I agree that people need to deploy to Windows, but if they do, ST is
not the tool for them. I will not be adding Windows support to ST. ST’s
dependency on things like SSH and POSIX scripts is too deep, and
changing that would require a fundamental shift in the way ST does it’s
stuff.” - Jamis B., http://weblog.jamisbuck.org/2005/12/23/switchtower-wishlist
While a few people report at least partial success with with Capistrano
on cygwin, a quick google failed to find any concrete write-ups of
this.
I would want to take advantage of the experience and tools of the large
majority of the RoR community which deploys to a 'nix environment.
Whatever you need to do on that platform with RoR, there’s increased
likelihood that someone has done it before; community support is more
probable, documentation more plentiful, and bug fixes appear more
quickly.
Yeah. I specialize in solutions that integrate virtual linux servers
inside
of Windows networks just for this reason. Deployment is so much easier
if
you can use a linux machine and hide it behind your Windows web server.
We are going to have one Windows 2003 server with 5 virtual servers. One
of them will be for RoR production in Linux. This idea came from a
person in my team that has experience with virtual Linux server inside a
Windows Server (but not using RoR).
It seems like Brian has experience in that too for RoR and it’s a good
alternative. So why is some people using Windows if they can make a
linux vps inside it?
We are going to have one Windows 2003 server with 5 virtual servers.
One of them will be for RoR production in Linux. This idea came from a
person in my team that has experience with virtual Linux server inside
a Windows Server (but not using RoR).
It seems like Brian has experience in that too for RoR and it’s a good
alternative. So why is some people using Windows if they can make a
linux vps inside it?
Some people just can’t convince their server team to do Linux on VMWare
due
to their lack of understanding about either VMWare or Linux. You’re not
going to allow a production system that runs on a platform you don’t
know
anything about because when something goes wrong you have to know how to
fix
it. That’s what I’ve encountered.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.