I tried to deploy new Rails app code to a production server the other
day and took down the live site in production. I'd like to avoid this
in the future. Something happened in the process that affected the
live site. The error log showed that fastthread was not found. I had
to go into the fastthread gem and run setup.rb. Then it told me that
Rails was not installed so I had to do a gem install Rails. Then
there were other gems that were needed by the application and not
found so I had to reinstall those too.
I have my own staging server that this all worked on, but the staging
server is able to serve multiple sites so it is not an exact replicate
of the client's production box. The Apache setup is such that only
one site can be served from this machine - the document root in Apache
is /project/public.
I've got a couple of questions. 1- Any idea why gems would need to be
reinstalled? 2- Can I deploy Capistrano without restarting Passenger
to put the code onto the production server and then once it's all
there, change the document root in Apache then do a deploy with the
Passenger restart?
> I tried to deploy new Rails app code to a production server the other
> day and took down the live site in production. I'd like to avoid this
> in the future. Something happened in the process that affected the
> live site. The error log showed that fastthread was not found. I had
> to go into the fastthread gem and run setup.rb. Then it told me that
> Rails was not installed so I had to do a gem install Rails. Then
> there were other gems that were needed by the application and not
> found so I had to reinstall those too.
> I have my own staging server that this all worked on, but the staging
> server is able to serve multiple sites so it is not an exact replicate
> of the client's production box. The Apache setup is such that only
> one site can be served from this machine - the document root in Apache
> is /project/public.
> I've got a couple of questions. 1- Any idea why gems would need to be
> reinstalled? 2- Can I deploy Capistrano without restarting Passenger
> to put the code onto the production server and then once it's all
> there, change the document root in Apache then do a deploy with the
> Passenger restart?
> Thanks,
> Cindy
Hi Cindy, did the client mix and match operating system-native packages and rubygems? That can cause problems, and it wouldn't surprise me if it caused this one.
I'm still kind of a noob with cap, so I'm not sure about question 2...
Have you thought about using virtualization to create real staging environments for your clients? It's a pretty fundamental flaw if your staging environment is not an exact replica of the production environment (save the staged code).
Cindy,
Your mileage may vary using the remote dependencies and deploy:check... you
should also have a way of managing gems, this can be done through modern
rails (2.x+) or with a specific gem called geminstaller.
> I tried to deploy new Rails app code to a production server the other
> day and took down the live site in production. I'd like to avoid this
> in the future. Something happened in the process that affected the
> live site. The error log showed that fastthread was not found. I had
> to go into the fastthread gem and run setup.rb. Then it told me that
> Rails was not installed so I had to do a gem install Rails. Then
> there were other gems that were needed by the application and not
> found so I had to reinstall those too.
> I have my own staging server that this all worked on, but the staging
> server is able to serve multiple sites so it is not an exact replicate
> of the client's production box. The Apache setup is such that only
> one site can be served from this machine - the document root in Apache
> is /project/public.
> I've got a couple of questions. 1- Any idea why gems would need to be
> reinstalled? 2- Can I deploy Capistrano without restarting Passenger
> to put the code onto the production server and then once it's all
> there, change the document root in Apache then do a deploy with the
> Passenger restart?
Any thoughts on question #2 and deploying without the Passenger restart?
_____
From: capistrano@googlegroups.com [mailto:capistrano@googlegroups.com] On
Behalf Of Lee Hambley
Sent: Thursday, July 02, 2009 1:32 PM
To: capistrano@googlegroups.com
Subject: [capistrano] Re: Deployment conflict question
Cindy,
Your mileage may vary using the remote dependencies and deploy:check... you
should also have a way of managing gems, this can be done through modern
rails (2.x+) or with a specific gem called geminstaller.
I tried to deploy new Rails app code to a production server the other
day and took down the live site in production. I'd like to avoid this
in the future. Something happened in the process that affected the
live site. The error log showed that fastthread was not found. I had
to go into the fastthread gem and run setup.rb. Then it told me that
Rails was not installed so I had to do a gem install Rails. Then
there were other gems that were needed by the application and not
found so I had to reinstall those too.
I have my own staging server that this all worked on, but the staging
server is able to serve multiple sites so it is not an exact replicate
of the client's production box. The Apache setup is such that only
one site can be served from this machine - the document root in Apache
is /project/public.
I've got a couple of questions. 1- Any idea why gems would need to be
reinstalled? 2- Can I deploy Capistrano without restarting Passenger
to put the code onto the production server and then once it's all
there, change the document root in Apache then do a deploy with the
Passenger restart?
> Your mileage may vary using the remote dependencies and deploy:check... you
> should also have a way of managing gems, this can be done through modern
> rails (2.x+) or with a specific gem called geminstaller.
> I tried to deploy new Rails app code to a production server the other
> day and took down the live site in production. I'd like to avoid this
> in the future. Something happened in the process that affected the
> live site. The error log showed that fastthread was not found. I had
> to go into the fastthread gem and run setup.rb. Then it told me that
> Rails was not installed so I had to do a gem install Rails. Then
> there were other gems that were needed by the application and not
> found so I had to reinstall those too.
> I have my own staging server that this all worked on, but the staging
> server is able to serve multiple sites so it is not an exact replicate
> of the client's production box. The Apache setup is such that only
> one site can be served from this machine - the document root in Apache
> is /project/public.
> I've got a couple of questions. 1- Any idea why gems would need to be
> reinstalled? 2- Can I deploy Capistrano without restarting Passenger
> to put the code onto the production server and then once it's all
> there, change the document root in Apache then do a deploy with the
> Passenger restart?
> Hi Cindy, did the client mix and match operating system-native packages
> and rubygems? That can cause problems, and it wouldn't surprise me if it
> caused this one.
> I'm still kind of a noob with cap, so I'm not sure about question 2...
> Have you thought about using virtualization to create real staging
> environments for your clients? It's a pretty fundamental flaw if your
> staging environment is not an exact replica of the production
> environment (save the staged code).
I've been thinking about our question regarding "mix and match
operating system-native packages and rubygems". This is a bit
difficult to answer given that I did not set up the original
environment. Do you know if there's a way to figure this out on the
production server? I don't want to throw good after bad by freezing
gems that are already "bad." If I freeze them, download the project
into a dev environment or staging environment, am I just bringing the
mess wherever I go?
I think what we really need is a clean install of the production
server and "start over" from there, but I'm not sure if this is
possible.