First, I''m trying to do the legwork with utilizing all 4 together because many people say it''s a good combination to use. I already have apache setup (was using it with the PHP version of my site formerly). I''ve installed all gems and dependencies that I need on my slice (using slicehost). I have a fully pushed git repository (master) on github (private git) with one user. For sake of these questions the user on github is called (liveuser). I followed the following guide to setup a user called (gituser) on my slice: http://articles.slicehost.com/2009/5/13/capistrano-series-setting-up-git I just don''t follow the logic of it. Perhaps it''s because I don''t understand why I even need to use (any) of these utilities to run my server. I feel like I have to perform 100 things just to get this scenario working together. I''m sure it''s nice when it''s all setup and working 100% but I''m a bit frustrated at this point. Question One: Is there a (complete guide) that acts as a walk-through for setting up apache/capistrano/passenger/git together? From my understanding, capistrano is meant to be used only on the development machine and not on the server. You deploy through git directly to your server. I don''t see any good documentation out there that explains this in detail. If there were a deployment for dummies book I''d buy it in a heartbeat. My Scenario: Windows Development machine with app Full github private repository being pushed to from my development machine All tests well and am ready for deployment and production testing Slicehost slice (server) with apache and passenger (passenger not setup yet) Question Two: Is there an optimal setup here? What are the exact steps, in order for deploying? Apache configuration first? Passenger configuration first? Github configuration first? I will leave it at this for now. I''m sure I''m not the only one that has pulled his or her hair out over a deployment phase and I''m certainly not going to be the last. I think there should be some type of formalized documentation on complete deployment (at least something that is up to date and not 2 years old). -- Posted via http://www.ruby-forum.com/.
Marnen Laibow-Koser
2009-Aug-11 16:05 UTC
Re: Git, Capistrano, Passenger, and Apache Questions
Alpha Blue wrote:> First, I''m trying to do the legwork with utilizing all 4 together > because many people say it''s a good combination to use.It is.> I already have > apache setup (was using it with the PHP version of my site formerly). > > I''ve installed all gems and dependencies that I need on my slice (using > slicehost).Have you installed Passenger yet? And Ruby EE, if you''ll be using that?> > I have a fully pushed git repository (master) on github (private git) > with one user. For sake of these questions the user on github is called > (liveuser). I followed the following guide to setup a user called > (gituser) on my slice: > > http://articles.slicehost.com/2009/5/13/capistrano-series-setting-up-git > > I just don''t follow the logic of it. Perhaps it''s because I don''t > understand why I even need to use (any) of these utilities to run my > server.You don''t need to. It just makes life easier. (And you''re backsliding on those parentheses. They''re not a subsitute for italics, unless you''re writing in Turkish. :) )> I feel like I have to perform 100 things just to get this > scenario working together. I''m sure it''s nice when it''s all setup and > working 100% but I''m a bit frustrated at this point. > > Question One: Is there a (complete guide) that acts as a walk-through > for setting up apache/capistrano/passenger/git together?There is a getting started guide on the Capistrano website. Have you looked at it? Apache and Passenger really don''t come into the issue -- all you have to do is tell them where the code''s going to be.> > From my understanding, capistrano is meant to be used only on the > development machine and not on the server. You deploy through git > directly to your server. I don''t see any good documentation out there > that explains this in detail. If there were a deployment for dummies > book I''d buy it in a heartbeat.Ezra Zygmuntowicz has written such a book, but I don''t know if it''s still up to date. Anyway, what''s the problem? Capistrano just automates the things you''d do yourself anyway.> > My Scenario: > > Windows Development machine with app > Full github private repository being pushed to from my development > machine > All tests well and am ready for deployment and production testingWhy have you waited this long for deployment? You should (IMHO) have been doing a little at a time, all along.> Slicehost slice (server) with apache and passenger (passenger not setup > yet)Get Passenger set up next.> > Question Two: Is there an optimal setup here? What are the exact > steps, in order for deploying? Apache configuration first? Passenger > configuration first? Github configuration first?Get Passenger installed. Github needs no configuration. The order of the steps doesn''t really matter that much.> > I will leave it at this for now. I''m sure I''m not the only one that has > pulled his or her hair out over a deployment phase and I''m certainly not > going to be the last. I think there should be some type of formalized > documentation on complete deployment (at least something that is up to > date and not 2 years old).There is. Check the Cap website. Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/.
Thanks for the follow-up Marnen. Yeah I like to use parens and quotes for emphasis - I''d much rather use quotes - but I don''t see anything about that here. Anyhoo, that''s another issue altogether. So, here''s my logic and understanding of this subject and yes, it''s not very large.. heh. From what I understand, Capistrano is the tool that is used to deploy the application to your server. It has nothing to do with apache/passenger etc. correct? Secondly, passenger is a front-end piece and apache is the back-end piece of the server setup correct? If I didn''t want to use passenger, I could use mongrel in it''s place? Not saying I would do this but just clarifying for understanding.. In order of priority configurations: Apache first Passenger Second .. that handles the server end? I believe where I''m getting confused is that I''m looking at all of it at once and it''s making my head hurt a bit. Is there documentation on setting up apache with rails? Prepping? Link please. Is there documentation on setting up passenger with apache? Prepping? Link please. How does capistrano tie in with git and my server? For instance, I see the following as an example configuration: set :application, "ncaastatpages" # GITHUB BELOW # Set Putty True to instantiate a passphrase call default_run_options[:pty] = true # Set the git repository set :repository, "git-9UaJU3cA/F/QT0dZR+AlfA@public.gmane.org:myuser/ncaastatpages.git" # Specify which subversion or repository SCM to use set :scm, :git # Set your GIT password set :scm_passphrase, "mypassword" # Set your GIT user (this might need to be the same all the way around) set :user, "myuser" # If you''re using your own private keys for git # ssh_options[:forward_agent] = true # Set the branch type set :branch, "master" # Shallow cloning will do a clone each time, but will only get the first tree, not all the parents trees, too. # set :git_shallow_clone, 1 # If you''re using git''s submodule support for edge rails or merb, set this guy to make sure the submodules "git" checked out. set :git_enable_submodules, 1 # Set remote cache you want to only force new changes only, fetching changed data set :deploy_via, :remote_cache # Set the role for your web server role :web, "ncaastatpages.com" I only see one repository (for my current git repo), but how does it know where to send it to? I.e. where in capistrano do you tell it where to deploy to? I don''t see anywhere in here where I am setting my server and the port. I use a different SSH port so I need to set that somewhere too. I''ve read the documentation but it doesn''t appear to talk about this. I''m not using Ruby EE by the way - just a heads up. I commented everything myself above to show you what I believe is happening. If I''m incorrect, please let me know. Let''s bring this topic closer to capistrano usage first and I''ll work with one piece and iron out the others after I get capistrano logic down. -- Posted via http://www.ruby-forum.com/.
Marnen Laibow-Koser
2009-Aug-11 16:27 UTC
Re: Git, Capistrano, Passenger, and Apache Questions
Alpha Blue wrote:> Thanks for the follow-up Marnen. Yeah I like to use parens and quotes > for emphasis - I''d much rather use quotes - but I don''t see anything > about that here.Neither is correct for English.> Anyhoo, that''s another issue altogether.So it is. :)> > So, here''s my logic and understanding of this subject and yes, it''s not > very large.. heh. > > From what I understand, Capistrano is the tool that is used to deploy > the application to your server. It has nothing to do with > apache/passenger etc. correct?Yes. Cap just automates an SSH session to your server.> > Secondly, passenger is a front-end piece and apache is the back-end > piece of the server setup correct? If I didn''t want to use passenger, I > could use mongrel in it''s place? Not saying I would do this but just > clarifying for understanding..Also correct, although you''d have to play around with Apache proxies if you did that. You won''t go far wrong if you think of Passenger as the Rails equivalent of mod_php.> > In order of priority configurations: > > Apache first > Passenger Second > .. that handles the server end?Right. (And Ruby EE if you''re using it.)> > I believe where I''m getting confused is that I''m looking at all of it at > once and it''s making my head hurt a bit. > > Is there documentation on setting up apache with rails? Prepping? Link > please.Read the Passenger docs.> > Is there documentation on setting up passenger with apache? Prepping? > Link please.Read the Passenger docs.> > How does capistrano tie in with git and my server? For instance, I see > the following as an example configuration: > > set :application, "ncaastatpages" > # GITHUB BELOW > # Set Putty True to instantiate a passphrase call > default_run_options[:pty] = true > # Set the git repository > set :repository, "git-9UaJU3cA/F/QT0dZR+AlfA@public.gmane.org:myuser/ncaastatpages.git" > # Specify which subversion or repository SCM to use > set :scm, :git > # Set your GIT password > set :scm_passphrase, "mypassword" > # Set your GIT user (this might need to be the same all the way around) > set :user, "myuser" > # If you''re using your own private keys for git > # ssh_options[:forward_agent] = true > # Set the branch type > set :branch, "master" > # Shallow cloning will do a clone each time, but will only get the first > tree, not all the parents trees, too. > # set :git_shallow_clone, 1 > # If you''re using git''s submodule support for edge rails or merb, set > this guy to make sure the submodules "git" checked out. > set :git_enable_submodules, 1 > # Set remote cache you want to only force new changes only, fetching > changed data > set :deploy_via, :remote_cache > > # Set the role for your web server > role :web, "ncaastatpages.com" > > I only see one repository (for my current git repo), but how does it > know where to send it to? I.e. where in capistrano do you tell it where > to deploy to? I don''t see anywhere in here where I am setting my server > and the port.That''s what role :web does.> I use a different SSH port so I need to set that > somewhere too.Please read the Cap docs. I don''t try to keep all the config variables in my head, so I can''t really help you.> > I''ve read the documentation but it doesn''t appear to talk about this. > I''m not using Ruby EE by the way - just a heads up.Why not?> > I commented everything myself above to show you what I believe is > happening. If I''m incorrect, please let me know. Let''s bring this > topic closer to capistrano usage first and I''ll work with one piece and > iron out the others after I get capistrano logic down.Read the Cap docs. Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/.
Philip Hallstrom
2009-Aug-11 16:35 UTC
Re: Git, Capistrano, Passenger, and Apache Questions
> From what I understand, Capistrano is the tool that is used to deploy > the application to your server. It has nothing to do with > apache/passenger etc. correct?99% correct. You can (and will) tell Capistrano how to restart your webserver in order to pick up the latest deployed files (since Rails won''t check for new files in production). For Apache/Passenger this just amounts to adding the following to your deploy.rb file: namespace :deploy do desc "Restarts your application." task :restart, :roles => :app, :except => { :no_release => true } do as = fetch(:runner, "app") via = fetch(:run_method, :sudo) invoke_command "touch #{current_path}/tmp/restart.txt", :via => via, :as => as end end> Secondly, passenger is a front-end piece and apache is the back-end > piece of the server setup correct?Sort of. Apache is the web server and is the *first* piece of software to handle any requests coming from the client. Passenger is an apache module that knows how to handle requests made to your Rails app. So Passenger is like mod_php, but for Rails.> If I didn''t want to use passenger, I > could use mongrel in it''s place? Not saying I would do this but just > clarifying for understanding..Yes, you could. The Apache configuration would be a little bit different, but you''re right in that you either use Passenger or you use Mongrel (or thin, etc.).> > In order of priority configurations: > > Apache first > Passenger Second > .. that handles the server end?Yes.> Is there documentation on setting up apache with rails? Prepping? > Link > please. > > Is there documentation on setting up passenger with apache? Prepping? > Link please.http://modrails.com/install.html http://modrails.com/documentation/Users%20guide%20Apache.html> > > How does capistrano tie in with git and my server? For instance, I > see > the following as an example configuration:Seems you''re missing the "deploy_to" line... set :deploy_to, "/home/web/yourapp.com" Google around and you''ll find articles on how to get this working.> > I''ve read the documentation but it doesn''t appear to talk about this. > I''m not using Ruby EE by the way - just a heads up.You don''t need to. You can, but it''s not necessary.> I commented everything myself above to show you what I believe is > happening. If I''m incorrect, please let me know. Let''s bring this > topic closer to capistrano usage first and I''ll work with one piece > and > iron out the others after I get capistrano logic down.http://articles.slicehost.com/2009/5/13/capistrano-series-setting-up-git Also, if you''re not, hop on the slicehost IRC chat... lots of helpful people there doing exactly what you''re doing... -philip
Thanks again Philip and Marnen, So, the point I''m stuck at during this particular piece is really understanding how github and capistrano work together. For instance, my server user/password are completely different from github user/password. Do these need to be the same? And, if so, do I need to create a special user that has the same credentials as my github account so that deployment works? If the above is true, and my deploy_to is set in a specific user directory, wouldn''t the new user have to have write access to that directory as well? These are some of the questions that are a bit confusing to me. I could be overthinking this too much. I''ll look over the links you provided to see what I can figure out. I''m usually very patient but when I have difficulty understanding all of the various pieces, I can get a bit downtrodden. I don''t mind doing the work. I just need to understand the work I''m doing. Thanks. -- Posted via http://www.ruby-forum.com/.
Philip Hallstrom
2009-Aug-11 17:12 UTC
Re: Git, Capistrano, Passenger, and Apache Questions
> Thanks again Philip and Marnen, > > So, the point I''m stuck at during this particular piece is really > understanding how github and capistrano work together. > > For instance, my server user/password are completely different from > github user/password. Do these need to be the same? > > And, if so, do I need to create a special user that has the same > credentials as my github account so that deployment works? > > If the above is true, and my deploy_to is set in a specific user > directory, wouldn''t the new user have to have write access to that > directory as well? These are some of the questions that are a bit > confusing to me. I could be overthinking this too much. > > I''ll look over the links you provided to see what I can figure out. > I''m > usually very patient but when I have difficulty understanding all of > the > various pieces, I can get a bit downtrodden. I don''t mind doing the > work. I just need to understand the work I''m doing.Been there! Once you get it working it all starts to make sense, but there are a lot of pieces... http://github.com/guides/deploying-with-capistrano -philip
Marnen Laibow-Koser
2009-Aug-11 17:51 UTC
Re: Git, Capistrano, Passenger, and Apache Questions
Alpha Blue wrote:> Thanks again Philip and Marnen, > > So, the point I''m stuck at during this particular piece is really > understanding how github and capistrano work together. > > For instance, my server user/password are completely different from > github user/password. Do these need to be the same?Of course not. Why would they? Cap just uses github credentials to pull code from github, same as you would if you were doing this without Cap.> > And, if so, do I need to create a special user that has the same > credentials as my github account so that deployment works?No. But in most cases, you *will* want to create a special user account on your server for Capistrano to use.> > If the above is true, and my deploy_to is set in a specific user > directory, wouldn''t the new user have to have write access to that > directory as well?Yes, the user that Cap logs in as will have to have write access in the directory where it''s told to put the files.> These are some of the questions that are a bit > confusing to me. I could be overthinking this too much.You are. Cap just automates what you''d do yourself.> > I''ll look over the links you provided to see what I can figure out. I''m > usually very patient but when I have difficulty understanding all of the > various pieces, I can get a bit downtrodden. I don''t mind doing the > work. I just need to understand the work I''m doing.I didn''t realize (until Philip posted it) that Github now has a Cap guide. Since their documentation is usually excellent, that could be a big help.> > Thanks.Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/.
Okay having a few issues but making some headway: Apache+Passenger installed okay I finally managed to get git and capistrano to work and deployed my app successfully. Unfortunately, it appears that git did not pull my plugins and also has extra files that are old and that were not removed. So, here''s my questions: 1) How do I add plugins into github? 2) How do I populate my production database? 3) What do I do with capistrano and passenger when I update something on my development side. Is it that I update on my side, push to github and then run cap deploy:update? 4) Anything else I should know about? -- Posted via http://www.ruby-forum.com/.
Philip Hallstrom
2009-Aug-12 05:41 UTC
Re: Git, Capistrano, Passenger, and Apache Questions
> 1) How do I add plugins into github?There''s several ways... you can do it directly... I find a tool called ''braid'' to be very handy.> 2) How do I populate my production database?Depends... if you''re starting from scratch you could try: cap deploy:migrate Otherwise do it manually, but if you can get things setup so that ''cap deploy:migrations'' works you''ll find life much easier as you make changes down the road.> 3) What do I do with capistrano and passenger when I update something > on my development side. Is it that I update on my side, push to > github > and then run cap deploy:update?Don''t run deploy:update. Just run ''deploy'' or ''deploy:migrations'' (if you have migrations that need running). There''s more to it than just updating the code. Capistrano will keep a backup of the old revision so you can easily revert (deploy:rollback) and will (or can) restart your web server, etc.
I only read the original post and then kind of just glanced through the rest. I think articles.slicehost.com has got the best articles in getting a slice up and running with everything u need for a Rails app. Ive gone through the process twice and it took me no more than 2/3 hours. You would love this blog post though. Just one beautiful Cap file that sets up your whole slice. Run it, sit back, sip coffee and wallow in delight. http://www.viget.com/extend/building-an-environment-from-scratch-with-capistrano-2/ On Aug 12, 10:41 am, Philip Hallstrom <phi...-LSG90OXdqQE@public.gmane.org> wrote:> > 1) How do I add plugins into github? > > There''s several ways... you can do it directly... I find a tool called > ''braid'' to be very handy. > > > 2) How do I populate my production database? > > Depends... if you''re starting from scratch you could try: > > cap deploy:migrate > > Otherwise do it manually, but if you can get things setup so that ''cap > deploy:migrations'' works you''ll find life much easier as you make > changes down the road. > > > 3) What do I do with capistrano and passenger when I update something > > on my development side. Is it that I update on my side, push to > > github > > and then run cap deploy:update? > > Don''t run deploy:update. Just run ''deploy'' or ''deploy:migrations'' (if > you have migrations that need running). There''s more to it than just > updating the code. Capistrano will keep a backup of the old revision > so you can easily revert (deploy:rollback) and will (or can) restart > your web server, etc.
Apparently Analagous Threads
- I am very overwhelmed going to production and need help
- Deploy with Capistrano. Bundle install freezes indefinetly.
- Capistrano Deploy with SVN over SSH - Network connection closed unexpectedly
- Capistrano deploy without irs_process_scripts
- mongrel cluster restart with capistrano fails but manually works