Special Steps for Rails Deployment? - ruby-on-rails

I'm Deploying a rails app on the server for production? What are the special steps, I should follow in production installation, that is different from development.
I've installed passenger, passenger-apache2-module
I've also run bundle install --deployment
What are other special treatments, I should use for production?
Thanks.

With our deployment servers we have a fairly easy setup
ubuntu
apache + passenger
a rails user from where the apps are
actually run "/home/rails/apps/fancy_app_name"
and we have a webistrano app running to handle the deployments (so our development
machines don't have to be aware of all production steps)

Related

Ruby on rails Production mode on apache2

I am trying to switch from development mode to production my project in ruby on rails. Do I really need to install passenger? I have already apache server running in the system. Please advise. Thanks.
Yes, You need to install passenger to configure your rails app with Apache server. Here is the step by step solution for the same.

How to deploy a rails project on a Ubuntu server?

I've developed my Rails project locally and want to deploy it on my Ubuntu VPS. Now I've installed the gems on the VPS and copied my Rails App code to it. I can execute rails s --binding=0.0.0.0 in a putty session to the VPS and the website can be access from the Internet. The problem is when I close putty, the website is down. How to start my Rails App in a way that it still alive even if I closed putty?
Using rails s is not the way to go. It will use Webrick(or a different one if you choose) to handle the requests and it can be quite slow.
You should setup a production stack for serving your website.
Here is one of the best tutorials I've seen about how to deploy a Rails app to a production server(VPS).
In short you gonna need install RVM or Rbenv, Ruby, some libs, Database, Nginx and Passenger. You have alternatives too. But this is the basic.
I recommend using Capistrano for deploy. You can choose another deployment tool also, or none.
rails s it is best for development only.

Deploy ruby on rails via Capistrano

I have successfully deployed my ruby on rails application to an ubuntu 14.04 virtual machine in Digital Ocean. I used Apache2 and passenger for the same.
Now I want to deploy it to the same using Capistrano. I am using a mac machine in the developer environment. I have installed Capistrano 3.4. ssh connection has been set up with my local machine and server as well as with my server and my mercurial version control system in bitbucket.
How can I deploy it via capistrano. I tried many tutorials. Many are outdated and I am not even close. I have deployed it in the server in uat environment and the source code is checked out and is kept in the desktop of server. I have also set up a user with sudo privileges.MySQl2 database is also in the same server.Please help me out .
You can see the gist here, there are 4 files
deploy.rb
production.rb
capfile
Gemfile // only the capistrano required gem snippet
But I've configured using nginx and passenger.

Running nginx in rails automatically

I am using rails 2.3.9, rubygems 1.8.24, ruby 1.9.3 and Windows 7 ultimate 64-bit
I just installed nginx as my web server through passenger. Now I want to run nginx as my default server such that when i run ruby script/server, it runs instead of the default WeBrick. Is there any way to do this? Thanks a million.
Nginx doesn't work the way you described. Once it is started, you won't need to run script/server, the rails app will be run at the same time when the Nginx/Apache started.
So, just deploy your rails app following the 'Passenger' manual( in development mode), and you will get your app always running.
so, as conclusion, we can tell that, when deploying a Rails app, Nginx and Apache is in the same group( work together with Passenger), and Mongrel/Webrick/Thin is another group(script/server approach).
You may want to take a look at Foreman.

Correct way to set up Rails environment?

Thanks Tilo for your response. I will try to ask a better question.
I need to set up a Ruby on Rails Production environment that will only be used to host RoR applications and will be used as a Git server too. There will be no development done to these applications on the Production server. Right now, I forsee the production server hosting a maximum of 5 to 6 applications only. A couple will be company internal only and the rest of the apps will be viewable to the public. The traffic that they will receive is about 12 to 20 hits per week.
I have been given access to a Virtual Machine that will be the Production server and is currently running Ubuntu 10.04 LTS, Apache2, MySQL, and Passenger. There will be two RoR developers using the Production server to host their applications.
My Development Environment of which I am running Ubuntu 10.04 LTS, Apache2, and MySQL on my own laptop looks like this for each project/application:
RVM installed per application, Git,
Ruby 1.9.2 installed thru rvm, Rails
3.0.3, and I have yet to install the Capistrano gem.
My question is I don't understand how to host a RoR application on our production server.
As an example of what might be done to host a RoR application: I am surmising that I will create a user called app1 under the home directory. Next, should I install Ruby system wide or should I install rvm for app1 and then Ruby for app1? What are the steps involved on how to set-up the environment to run an application on a production server?
Can you give me a few setup scenarios, please?
Thanks in advance.
You didn't tell us what you want to use this web-site for... is it company internal only?
just a few users? or is it externally facing the internet? Just one server running everything?
If it's facing the internet, I would certainly stay away from Ubuntu... look at CentOS/RedHat or FreeBSD to install on a production server.
I'd definitely use Capistrano for deployment. Definitely Git.
I would definitely not install RVM system-wide - IMHO it is not robust enough.
I emailed with Wayne Seguin (maker of RVM) and he also uses the method I've outlined in the post below,
using one dedicated deploy user:
For how to deploy ruby-versions and gems with RVM, look at this post:
Installing Ruby offline using rvm
If you really need two versions of Ruby for two different apps, then use two deploy-users!
Each of them has their own default-ruby-version(!) that's why you really need two users :)
and you can install / manage the gems for each project separately under each of the deploy accounts.
You should also put the git repository in each of the accounts, so you can test.

Resources