New Discussion

Notifications

You’re not receiving notifications from this thread.

Deploy Ubuntu 16.04 Xenial Xerus Discussion

91
General
Konrad Makowski Konrad Makowski

This is not working on Xenial Xerus because there is no packages for Ubuntu 16.04 in Phusion Passenger repositores yet.

You can try using the older trusty repository for now while they work up on updating their apt repository:

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'

Friendof Afriend Friendof Afriend

After changing database.yml and secrets.yml to examples, whenever I run Rails s for running server. I get error and it complains that it can't find the yml files and server will not get started. What can I do?

Chirs this video is great !!!
would you please publish a similar video with deploy rails on unicorn and nginx with good explain about the config!
thanks )

Edit /etc/nginx/nginx.conf file and uncomment #include /etc/nginx/passenger.conf;
For example, you may see this:
include /etc/nginx/passenger.conf;
after this:
sudo service nginx restart

and final check if passeger work:
sudo /usr/bin/passenger-config validate-install

do you see the message "Restarting nginx nginx" when you type "sudo service nginx restart" ? In my case I don't see it and Chris said that something gonna be wrong if you don't see it.

Hi Chris, when I do sudo service nginx restart it doesn't show anything, you say that this might be an error, I did sudo tail /var/log/nginx/error.log but I can't see any error there! this is the output :

[ 2016-07-09 12:46:04.5741 23679/7f3c412f4700 Ser/Server.h:464 ]: [UstRouter] Shutdown finished
[ 2016-07-09 12:46:04.5743 23679/7f3c47f47780 age/Ust/UstRouterMain.cpp:523 ]: Passenger UstRouter shutdown finished
[ 2016-07-09 12:46:04.5939 23674/7f3bb0d6f780 age/Cor/CoreMain.cpp:967 ]: Passenger core shutdown finished
2016/07/09 12:46:05 [info] 23783#23783: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:75
[ 2016-07-09 12:46:05.7251 23790/7f341ddf1780 age/Wat/WatchdogMain.cpp:1291 ]: Starting Passenger watchdog...
[ 2016-07-09 12:46:05.7624 23793/7fdc2184b780 age/Cor/CoreMain.cpp:982 ]: Starting Passenger core...
[ 2016-07-09 12:46:05.7625 23793/7fdc2184b780 age/Cor/CoreMain.cpp:235 ]: Passenger core running in multi-application mode.
[ 2016-07-09 12:46:05.7646 23793/7fdc2184b780 age/Cor/CoreMain.cpp:732 ]: Passenger core online, PID 23793
[ 2016-07-09 12:46:05.8046 23798/7f724a019780 age/Ust/UstRouterMain.cpp:529 ]: Starting Passenger UstRouter...
[ 2016-07-09 12:46:05.8060 23798/7f724a019780 age/Ust/UstRouterMain.cpp:342 ]: Passenger UstRouter online, PID 23798

by the way when I opened /etc/nginx/nginx.conf the first time, I haven't find the lines passenger_ruby and passenger_root

ChaosPredictor ChaosPredictor

Hi, have the same issue can't find solution in any web.
Did you found something?

Dylan Huang Dylan Huang

Hi! I had that same problem and the solution for me was to comment out this line in my /config/environments/production.rb file:

"config.force_ssl = true"

What was happening was that each time you connected, the rails application forced you to redirect to "https" for SSL but your SSL cert is not setup yet!

Chris, Thanks so much for this tutorial. I followed along and was able to get this all working on a VirtualBox setup. However a problem i encountered was a bundler error. i had to SSH into the server and use 'which bundler' and add that path into the :default_env in deploy.rb
FOR THOSE WITH THIS ERROR:
set :default_env, { path: "/home/deploy/.rbenv/shims:~/.rbenv/bin:$PATH" }

My question after this...Is there an easy way to run custom rake tasks, once deployed?

Thanks

After following this tutorial, I'm still getting the default "Welcome to nginx" page

You'll need to restart nginx again to get the site up and running.

The Capistrano part of this tutorial is quite out of date. See http://stackoverflow.com/a/...

I'd be happy to help rewrite that part if needed.

Thanks for this very helpful tutorial, everything works as expected, except for my assets... some of my images aren't showing up in the browser, but they get deployed... I´m not sure what to do... I've been googling around and don´t seem to find a solution

Make sure you're using these helpers for your static assets: http://api.rubyonrails.org/...

After installing NGinx it is necessary to set up and activate the firewall - otherwise you won't see even the Nginx start page. See https://www.digitalocean.co...

When I use rbenv and launch "cap production deploy" I get an error: "LoadError: cannot load such file -- capistrano/rbenv". On the local computer I use RVM and I want to set up rbenv on the remote one. Perhaps it is not possible? Do I have to have rbenv on the local computer installed?

Cristian Georgescu Cristian Georgescu

Newbie question here. I followed the tutorial and I have the rails 5 app on server.
I bundle install everything but when trying to start rails (rails s -e production) I get the rails new prompt ....like I need to create a new rails app. Any tips on how to start it or what I might be missing ?

You don't need to run Rails, Passenger will start the app for you automatically, that's why we set it up this way so you don't have to manage running scripts. It's automatic.

I had to Generate RSA SSH Keys to make things work. The command is "ssh-keygen". See http://www.cyberciti.biz/fa...

Jorg Dominguez Jorg Dominguez

Hi there!

I have a issue here: No Rakefile found (looking for: capfile, Capfile, capfile.rb, Capfile.rb, /usr/lib/ruby/vendor_ruby/Capfile)

What should I do?

You should run it in local

Great tutorial. Everything went well, but when I do cap deploy production, I get the error below. Any ideas? Thank you!

cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@redacted: passenger-config exit status: 1
passenger-config stdout: Nothing written
passenger-config stderr: *** ERROR: Phusion Passenger doesn't seem to be running. If you are sure that it
is running, then the causes of this problem could be one of:

1. You customized the instance registry directory using Apache's
PassengerInstanceRegistryDir option, Nginx's
passenger_instance_registry_dir option, or Phusion Passenger Standalone's
--instance-registry-dir command line argument. If so, please set the
environment variable PASSENGER_INSTANCE_REGISTRY_DIR to that directory
and run this command again.
2. The instance directory has been removed by an operating system background
service. Please set a different instance registry directory using Apache's
PassengerInstanceRegistryDir option, Nginx's passenger_instance_registry_dir
option, or Phusion Passenger Standalone's --instance-registry-dir command
line argument.

I had the same issue, I had missed to uncomment "include /etc/nginx/passenger.conf;" and server_name was not proper. after fixing them its working

David Jarillo David Jarillo

yes I had the same issue, any solutions?

Getting the same issue -- anyone solve?

I had the same issue , anyone knows please

Almost there but when I run `cap production deploy` I get

```
00:00 rbenv:validate
rbenv: 2.3.1 is not installed or not found in $HOME/deploy/.rbenv/versions/2.3.1

```

Is cap checking this on my local machine or the server? I have changed the path to just `$HOME/.rbenv` and still get the same issue.

Fixed this as per this SO page. http://stackoverflow.com/qu...

Also getting an error `There are no Phusion Passenger-served applications running whose paths begin with '/home/deploy/app_name'`. app_name is replaced with the name of my app.

Seems there is another user getting this problem as well.
http://stackoverflow.com/qu...

hey Jay, did you end up solving this issue?

Thanks Chris for this video! How do we setup password authentication, if we're using this tutorial to deploy a staging version of the site? I've setup everything via this site https://www.digitalocean.co... and yet it's not asking for passwords upon entering the site.

Hmmm, double check that you restarted nginx and that went correctly. If so, it should pick that up.

Maybe I missed it in the tutorial, but I had to authenticate the DigitalOcean server with GitHub (by creating a SSH key from the server). Capistrano deployment failed until I did that, as the server was denied access to the Git repository.

I get a 'Permission denied (publickey) fatal: could not read from remote repo' when I 'cap production deploy'. The same keys are on DigitalOcean and Github. Pushes to github works fine. I can ssh into the digitalocean server as root or deploy users fine too. Anyone know what I've missed?

I'm getting the same prob. Did you find a fix?
Fixed by running 'ssh-add' on local machine.

Hi Chris,
How I can set domain name to my server ip address to input my site domain instead of writing ip address?

Thanks

Gustavo Pergola Gustavo Pergola

Make sure you added yout domain name in /etc/nginx/sites-enabled/default.
After that, for digital ocean, follow these steps: https://www.digitalocean.co....

Hope it helps ;)

Edit: Don't forget to set up DO namespaces at your domain registrar panel. (tutorial link: https://www.digitalocean.co...

Hello Chris

I fixed the issue I initally posted about lol. But now when I visit the URL there's no site to visit, it says unable to connect

-----
Great tutorial say I'm trying to deploy a rails 5 app with ubuntu 16.04 etc... On cap production deploy I get the following error on deploy:migrate

INFO [deploy:migrate] Run `rake db:migrate`
DEBUG [15816e11] Running if test ! -d /home/deploy/app/releases/20170313091718; then echo "Directory does not exist '/home/deploy/app/releases/20170313091718'" 1>&2; false; fi as deploy@138.68.83.124
DEBUG [15816e11] Command: if test ! -d /home/deploy/app/releases/20170313091718; then echo "Directory does not exist '/home/deploy/app/releases/20170313091718'" 1>&2; false; fi
DEBUG [15816e11] Finished in 0.306 seconds with exit status 0 (successful).
INFO [64a72276] Running ~/.rvm/bin/rvm default do bundle exec rake db:migrate as deploy@138.68.83.124
DEBUG [64a72276] Command: cd /home/deploy/app/releases/20170313091718 && ( export RAILS_ENV="production" ; ~/.rvm/bin/rvm default do bundle exec rake db:migrate )
DEBUG [64a72276] rake aborted!
DEBUG [64a72276] PG::ConnectionBad: could not connect to server: Connection refused
Is the server running on host "138.68.83.124" and accepting
TCP/IP connections on port 5432?
DEBUG [64a72276] /home/deploy/app/shared/bundle/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `initialize'

Do you have any pointers? to make it work can't seem to find similar issue on deployment server

note i tried this it didn't work: https://www.digitalocean.co...

Thanks

Gustavo Pergola Gustavo Pergola

Hi Aziz, could you fix it? I'm running into the same problem =/

Thanks for the tutorial Chris!!

I'm just having an issue when trying to set the branch for the repo, it always took master and I'm using the set branch but nothing happens

Hey @disqus_FdxDeiCXJb:disqus! I'm not sure how you've got it setup, but if you set the branch in your Capistrano config, that should do the trick. You can either do it in config/deploy.rb globally (it defaults to master) or inside each of the stages like config/deploy/production.rb. It's usually just set :branch, "mybranch"

All the other config options are listed here: http://capistranorb.com/doc...

Hi,

you can create the database.yml same way as you did with secrets.yml. Create an empty file in same place where secrets.yml are and then copy the code from your local copy (ie development env). You have to set the credentials accordning to the ones you have set on production obviously :-)

To create the files (assuming you are connected on server) cd into your shared/config/ folder and then type touch database.yml and touch secrets.yml

i have the following error in the tutorial:

nicoara@ubuntu:~/deploy_test$ cap install STAGES=production
/home/nicoara/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rubygems/specification.rb:2112:in `raise_if_conflicts': Unable to activate capistrano-rails-1.2.3, because capistrano-2.15.9 conflicts with capistrano (~> 3.1) (Gem::ConflictError)
from /home/nicoara/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rubygems/specification.rb:1280:in `activate'
from /home/nicoara/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rubygems.rb:198:in `rescue in try_activate'
from /home/nicoara/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rubygems.rb:195:in `try_activate'
...

my gemfile has:
group :development do
gem 'capistrano', '~> 3.7', '>= 3.7.1'
gem 'capistrano-rails', '~> 1.2'
gem 'capistrano-passenger', '~> 0.2.0'
gem 'capistrano-rbenv', '~> 2.1'

my capfile has:
# Capfile
require 'capistrano/rails'
require 'capistrano/passenger'

# If you are using rbenv add these lines:
require 'capistrano/rbenv'
set :rbenv_type, :user
set :rbenv_ruby, '2.4.0'

# Load DSL and set up stages
require "capistrano/setup"

# Include default deployment tasks
require "capistrano/deploy"

what to do?

Thanks

I'm planning to do a fresh OS installation on my local machine, so I have a question: is there a way to backup my existing ssh keys that I use to login to the server or my repos, or do I have to generate and add a new key in this case? if thats the case I guess all I need to do is to generate the new key on my fresh install and ssh-copy-id to the server again??

Meant to reply sooner, but all your ssh keys are located in ~/.ssh so you can backup that folder and just replace it on your new install to use the same keys.

After getting through the process, when I tried to deploy my project, I kept getting: "Your Ruby version is 2.3.1, but your Gemfile specified 2.4.1"

Logged into the server as deploy, ruby version was 2.4.1. After a lot of troubleshooting, I su'd into root, and found that root had ruby 2.3.1 as it's version.

I figured i must have screwed something up, so I started fresh.... this time watching the output of each command closely.

It seems that the Passenger install (as deploy user) imported ruby 2.3.1... 2.4.1 was already set up under deploy... and this 2.3.1 did not seem to change anything for deploy. However, root, which had no ruby prior to passenger, was now set to 2.3.1.

I've updated root's ruby to be 2.4.1 using the rbenv method as root so that I could get something deployed to practice on... but...

I'm confused as to how and why 2.3.1 got there, and why it's interfering with the deploy command when i try to push an update...

Chris this tutorial is very helpful.
Can i deploy Worpress and Rails both in a server. Like - WordPress for blogging - ( http://blog.URL ) and rails application is deployed to - (http://URL).
Please help me.

Error 403

The passenger_ruby and passenger_root are configured conrrectly. :/

[EDIT] Seem that my passenger is not running correctly. Can anybody help me?

Have you ever find what is the cause of the 403?

Chris,

Incredibly useful tutorial! For a small bit of extra config and command line hacking, I get to deploy my app to a server I control rather than an option like Heroku. Thanks for putting this together!

I ran into an issue installing this on nginx using rbenv. If you try to cap production deploy and get an error with passenger. Try opening /etc/nginx/passenger.conf and add this to the file.

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;

to get your specific passenger root type

passenger-config --root

Lovely tutorial... how do you launch the rails console to make a few changes to the application...?

Matt Seeberger Matt Seeberger

Thank you for this guide! One question I have is how do I load the ruby app if I am not able to use git? When I run cap production deploy it fails trying to read from remote repository because it is calling git and I am not using git. I am new to all of this so sorry for my ignorance.

INFO [01ba63f0] Running /usr/bin/env git ls-remote HEAD as deploy@10.1.10.104

DEBUG [01ba63f0] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.4.1" GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/git-ssh-orderentry-producti..." ; /usr/bin/env git ls-remote HEAD )

DEBUG [01ba63f0] fatal: 'HEAD' does not appear to be a git repository

DEBUG [01ba63f0] fatal: Could not read from remote repository.

Diego Polido Santana Diego Polido Santana

Thanks a lot for this post! Simply I use it every new project I have since long time ago. Perfect stack and everything works fine following the instructions.

Could someone help me , iv'e been at this for a week now i get this error when i do a cap production deploy
rbenv: bundle: command not found
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@139.59.33.96: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

SSHKit::Command::Failed: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

Tasks: TOP => deploy:updated => bundler:install
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as deploy@139.59.33.96: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

Thank you very much for the tutorial. But..I have a problem (ruby 2.4.2, rails 5.1.4). When i run "cap production deploy".
I'm having an error:
_______________________________________________________________________________________________
00:09 deploy:assets:backup_manifest
01 mkdir -p /home/user/app/releases/20170925040319/assets_manifest_backup
✔ 01 user@localhost 0.047s
WARN Rails assets manifest file not found.
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as user@localhost: Rails assets manifest file not found.

Capistrano::FileNotFound: Rails assets manifest file not found.

Tasks: TOP => deploy:assets:backup_manifest
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as user@localhost: Rails assets manifest file not found.
_______________________________________________________________________________________________
Google did not help me. Can you help me? Thanks!

Hi Chris, thanks for brilliant tutorial. I followed it about an year ago and every thing worked smoothly. Until Today I saw that the production.log on the server side isn't updating. It seems to be stuck in 23/5 2017 :) and havn't updated since. So I was thinking, Is there maybe something in the production.rb setup or the sim-links that I could alter to get the production.log updated again? please see my question here about this problem: https://stackoverflow.com/q...

Any plan on updating this for a webpacker setup? ruby 2.4.2, rails 5.1.4?

Thanks for this great tutorial and My cap deploy went fine without any error and I removed the default nginx page. After I restarted the nginx again I can't see my rails app running. I got This Site can't be reached. Can you help me on this please?

I got Connection refused is the error.

David Overman David Overman

404 Not Found

Hi Chris! I have managed to make it work. But give this setup, how could I make rails db:migrate:reset and rails db:seed to restore a backup?
Hey Juan, I would probably just SSH in and run those commands on the server in the app's current directory. You probably could run Capistrano tasks to do that, but SSH is probably easier.
That was the first approach I tried but using 'deploy' user I don't have enough privileges, and if I switch to 'postgres' user I can't run bundle exec. How do you do that? Thanks

I have use Vue.js and user *vue, the single file component.
so, how to deploy it?
Anyone know?

Join the discussion
Create an account Log in

Want to stay up-to-date with Ruby on Rails?

Join 88,834+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.