Anthony Candaele
Joined
Activity
found it, because on the vps I don't have a development environment, I need to start the Rails console in the 'current' folder with:
RAILS_ENV=production bundle exec rails c
Hi Chris, James,
Just successfully deployed my Rails app on a Digital Ocean VPS ( a small step for mankind but a giant leap for a devops newbie):
thanks a lot for your help and patience,
greetings,
Anthony
Hi,
I just successfully deployed my Rails app to a Digital Ocean VPS, following the Deploy Rails guide on this website. Many thanks go to Chris Oliver and James Dullaghan for their help and patience.
Now my app is deployed, I need to create an admin user so I can log in and start to create content.
On heroku I was able manipulate the database through the Rails console, with the command:
heroku run rails console
However, I'm not sure how to manually enter data in the database on my VPS.
Can I also spin a Rails console and access the production database, or do I need to do this another way?
Thanks for your help,
Anthony
Hi Chris, thanks a lot, adding the secrets.yml file to config/deploy.rb solved the issue : )
I'm still not there, as a couple of other challenges await me like dealing with these failure messages:
DEBUG[f06a4082] Finished in 0.081 seconds with exit status 1 (failed).
DEBUG[09ba02b5] Running /usr/bin/env [ -f /home/deploy/posplus/releases/20140914083548/config/database.yml ] on <my-ip>
I'm getting a couple of these error messages when deploying with Capistrano.
Also there seem to be some issues with assets:
DEBUG[da33561d] I, [2014-09-14T04:36:06.122787 #24469] INFO -- : Writing /home/deploy/posplus/releases/20140914083548/public/assets/belfort-081a4bbefd8f4ed5f27bbb624d48f379.png
DEBUG[da33561d] I, [2014-09-14T04:36:06.125691 #24469] INFO -- : Writing /home/deploy/posplus/releases/20140914083548/public/assets/jigsaw-puzzle-1c07a986767187bd9961fe69651705c8.jpg
DEBUG[da33561d] I, [2014-09-14T04:36:06.127459 #24469] INFO -- : Writing /home/deploy/posplus/releases/20140914083548/public/assets/logo-posplus-72x61-c0cc65a8684ac8d9da5d402fcbc58c6e.png
DEBUG[da33561d] I, [2014-09-14T04:36:06.129307 #24469] INFO -- : Writing /home/deploy/posplus/releases/20140914083548/public/assets/logo-posplus-a0276666c4cf6aaeb387a2580cdefc71.png
DEBUG[da33561d] I, [2014-09-14T04:36:06.139111 #24469] INFO -- : Writing /home/deploy/posplus/releases/20140914083548/public/assets/member_placeholder-66af4d62c5dc83d72c054cf50caea6d5.png
But again I'm a step further in my quest to deploy a Rails app on a VPS
thanks for your patience,
Anthony
Hi Chris, thanks, I wasn't aware of that and changed the carrier_wave.rb initializer:
CarrierWave.configure do |config|
if Rails.env.staging? || Rails.env.production?
config.storage = :fog
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => Rails.application.secrets.S3_KEY, # required
:aws_secret_access_key => Rails.application.secrets.S3_SECRET, # required
}
config.fog_directory = 'posplus' # required
else
config.storage = :file
config.enable_processing = Rails.env.production?
end
end
and my secrets.yml file looks like this:
production:
S3_KEY: <%= ENV['S3_KEY'] %>
S3_SECRET: <%= ENV['S3_SECRET'] %>
Then it also struck my that I working in a feature branch called 'capistrano' so I added
set :branch, 'capistrano'
to my config/deploy.rb file and I pushed the feature branch to a remote branch on Github
But I'm still getting the same error when doing 'cap production deploy':
DEBUG[e90c10e8] Command: cd /home/deploy/posplus/releases/20140914000558 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.2 RAILS_ENV=production ~/.rbenv/bin/rbenv exec bundle exec rake assets:precompile )
DEBUG[e90c10e8] rake aborted!
DEBUG[e90c10e8] ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
DEBUG[e90c10e8] /home/deploy/posplus/shared/bundle/ruby/2.1.0/gems/fog-core-1.24.0/lib/fog/core/service.rb:237:in `validate_options'
sigh : (
I don't know why Capistranno isn't picking up the changes. Right now I'm not sure if this could be related to the problems I had with the creation of a postgres user.
Maybe you guys are seeing things I don't see? My remote feature branch is at:
https://github.com/acandael/posplus-rails/tree/capistrano
greetings,
Anthony
Hi James, thanks for the help,
I did put the hard coded keys in the secrets.yml file and also sourced the ~/.bashrc file. But it didn't solve the issue. Capistrano keeps giving me the error:
INFO[97d4f95a] Running ~/.rbenv/bin/rbenv exec bundle exec rake assets:precompile on 95.85.5.6
DEBUG[97d4f95a] Command: cd /home/deploy/posplus/releases/20140913135409 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.2 RAILS_ENV=production ~/.rbenv/bin/rbenv exec bundle exec rake assets:precompile )
DEBUG[97d4f95a] rake aborted!
DEBUG[97d4f95a] ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
If this could clear things up, my config/initializers/carrier_wave.rb file looks like this:
CarrierWave.configure do |config|
if Rails.env.staging? || Rails.env.production?
config.storage = :fog
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => ENV['S3_KEY'], # required
:aws_secret_access_key => ENV['S3_SECRET'], # required
}
config.fog_directory = 'posplus' # required
else
config.storage = :file
config.enable_processing = Rails.env.production?
end
end
I always worked on Heroku, where I set the environment variables with the 'heroku set:config ....' command.
greetings,
Anthony
man this is hard, I put the environment variable S3_KEY and S3_SECRET in different files:
~/.bashrc
/etc/default/nginx
home/deploy/posplus/shared/config/secrets.yml
but none solved the problem, I'm stil getting this error message when I try to do 'cap production deploy':
DEBUG[ff424d92] rake aborted!
DEBUG[ff424d92] ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
DEBUG[ff424d92] /home/deploy/posplus/shared/bundle/ruby/2.1.0/gems/fog-core-1.22.0/lib/fog/core/service.rb:237:in `validate_options'
thanks Chris, will try this out
greetings,
Anthony
I tried to add the environment variables to my vps environment with:
export S3_KEY='my key ...'
export S3_SECRET='my secret key'
but I'm keep getting the same error when I run 'cap production deploy':
DEBUG[4f41f85f] rake aborted!
DEBUG[4f41f85f] ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
DEBUG[4f41f85f] /home/deploy/posplus/shared/bundle/ruby/2.1.0/gems/fog-core-1.22.0/lib/fog/core/service.rb:237:in `validate_options'
I configured the production database and now the capistrano script is passing the production database error.
Now I'm bumping into another error:
rake aborted!
DEBUG[53a69508] ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
DEBUG[53a69508] /home/deploy/posplus/shared/bundle/ruby/2.1.0/gems/fog-core-1.22.0/lib/fog/core/service.rb:237:in `validate_options'
I guess this errror is related to the fact that my app is using Carrierwave and Fog and is storing uploaded images to Amazon S3.
Does this errror mean I should create Environment Variables for aws_access_key_id and aws_secret_access_key?
thanks for your help,
Anthony
ok, now I guess I ran into the Posgres issue, I reported on:
DEBUG[00c3d123] rake aborted!
DEBUG[00c3d123] ActiveRecord::AdapterNotSpecified: 'production' database is not configured. Available: []
I tried to solve this by adding settings for the production server in my local config.database.yml file
production:
database: <database>
adapter: postgresql
encoding: unicode
pool: 5
username: <username>
password: <password>
but I keep getting the same error message:
rake aborted!
DEBUG[ffcbeda7] ActiveRecord::AdapterNotSpecified: 'production' database is not configured. Available: []
DEBUG[ffcbeda7] /home/deploy/posplus/shared/bundle/ruby/2.1.0/gems/activerecord- 4.1.1/lib/active_record/connection_adapters/connection_specification.rb:257:in `resolve_symbol_connection'
this is harder then I thought, I installed the bundler gem and now the next error is:
DEBUG[a18e2f6c] rake aborted!
DEBUG[a18e2f6c] ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
DEBUG[a18e2f6c] /home/deploy/posplus/shared/bundle/ruby/2.1.0/gems/execjs-2.2.1/lib/execjs/runtim
Googled this issue, seems I have to install Node.js with:
sudo apt-get install nodejs
Moved on again with the deployment proces, but the deployment still fails. Now there seems to be a problem with the bundle command
DEBUG[020e32cd] Command: cd /home/deploy/posplus/releases/20140904144347 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.2 ~/.rbenv/bin/rbenv exec bundle install --binstubs /home/deploy/posplus/shared/bin --path /home/deploy/posplus/shared/bundle --without development test --deployment --quiet )
DEBUG[020e32cd] rbenv: bundle: command not found
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing on host 95.85.5.6: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found
ok, again one step further
I ran
ssh-add ~/.ssh/id_rsa
in the terminal
and ran a new
cap deploy production
the deploy proces moved on, but then it failed with
Finished in 0.029 seconds with exit status 1 (failed).
ERRORlinked file /home/deploy/posplus/shared/config/database.yml does not exist on 95.85.5.6
I guess this has to do with the issue about creating the Postgres user which I reported about on this forum under the thread 'setup Postgres user fails'
ok,
using
set :rbenv_ruby, '2.1.2'
fixed it.
However now I'm running in this error:
[62800640] Warning: Permanently added 'github.com,some id' (RSA) to the list of known hosts.
DEBUG[62800640] Permission denied (publickey).
DEBUG[62800640] fatal: Could not read from remote repository.
DEBUG[62800640]
DEBUG[62800640] Please make sure you have the correct access rights
DEBUG[62800640] and the repository exists.
DEBUG[62800640] Finished in 0.745 seconds with exit status 128 (failed).
Posted in setup Postgres user fails
when I switch to the postgres user and run
dropuser postgres
I get
dropuser: removal of role "postgres" failed: ERROR: current user cannot be dropped
when I run
ls ~/.rbenv/versions/2.1.2-p95
on the vps, I get
ls: cannot access /home/deploy/.rbenv/versions/2.1.2-p95: No such file or directory
Hi Chris,
when I run the command as deploy user on the vps
which ~/.rbenv/versions/2.1.2-p95
I get no output, just a new cursor line
when I run
which ruby
I get
/home/deploy/.rbenv/shims/ruby
when I run
ruby -v
I get
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
I also try to solve the issue by changing the line in my Capfile from
set :rbenv_ruby, '2.1.2-p95'
to
set :rbenv_ruby, '2.1.2p95'
but that didn't fix it.
Posted in setup Postgres user fails
Hi,
I'm following the Deploy Rails guide
I'm now a the part where Postgres gets installed. I successfully installed Postgres, but when I try to create a new Postgres user with:
createuser --pwprompt
, I'm getting this message:
creation of new role failed: ERROR: role "postgres" already exists
anyone knows what's going on?
thanks for your help,
Anthony
Posted in deploy Rails
you also may run into this issue when first doing an ssh login:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
<some key>
Please contact your system administrator.
Add correct host key in /Users/youraccount/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/youraccount/.ssh/known_hosts:12
RSA host key for <your host ip-address> has changed and you have requested strict checking.
Host key verification failed.
To fix this I run:
ssh-keygen -R [host ip-address]
I found the solution on Stack Overflow: http://stackoverflow.com/questions/20840012/ssh-remote-host-identification-has-changed
hope this might help someone running in the same issue as I am,
Anthony