Unable to deploy to Apache

Hi All,

Can someone please help? I’ve been banging my head against for wall
for 2 months; all of which has been spent trying to set up ROR. So I
actually haven’t written 1 line of code :frowning: Any help would be greatly
appreciated :slight_smile:

I’m following the 4th edition of “Agile Web D. with Rails”.
So, I’m able to deploy the site via WEBrick. However, when I go to my
URL (without using port 3000), I get the error message below. What am
I missing?

Ruby (Rack) application could not be started
These are the possible causes:

There may be a syntax error in the application’s code. Please check
for such errors and fix them. A required library may not installed.
Please install all libraries that this application requires. The
application may not be properly configured. Please check whether all
configuration files are written correctly, fix any incorrect
configurations, and restart this application. A service that the
application relies on (such as the database server or the Ferret
search engine server) may not have been started. Please start that
service.

Further information about the error may have been written to the
application’s log file. Please check it in order to analyse the
problem.

Error message:
unable to open database file (SQLite3::CantOpenException)
Exception class:
PhusionPassenger::UnknownError
Application root:
/home/rubys/work/depot
Backtrace


This is the error in /var/log/httpd/error_log

*** Exception PhusionPassenger::UnknownError in
PhusionPassenger::Rack::ApplicationSpawner (unable to open database
file (SQLite3::CantOpenException)) (process 3244, thread #<Thread:
0xa1db870>):


By the way, I’m running:

Ruby 1.9.3p0
Rails 3.1.3
Phusion Passenger version 3.0.11
CentOS release 5.6
Server version: Apache/2.2.3


This my vhost configuration from httpd.conf

<VirtualHost *:80>
ServerName www.mywebpage.com
DocumentRoot /home/rubys/work/depot/public/

<Directory /home/rubys/work/depot/public>
Order allow,deny
Allow from all

On Mar 28, 2012, at 8:56 PM, Kal wrote:

I missing?
configurations, and restart this application. A service that the
Exception class:
PhusionPassenger::Rack::ApplicationSpawner (unable to open database
CentOS release 5.6
<Directory /home/rubys/work/depot/public>
Order allow,deny
Allow from all

By any chance, have you run rake:db:migrate RAILS_ENV=production yet? If
not, then one possible reason why you can’t open the database is that it
does not exist.

Walter

On Wed, Mar 28, 2012 at 9:56 PM, Kal [email protected] wrote:

I missing?
configurations, and restart this application. A service that the
Exception class:
PhusionPassenger::UnknownError
Application root:
/home/rubys/work/depot
Backtrace

The problem is not with your web server but with your database file.
Check the database configured in config/database.yml exists and is
accessible by the user that runs Apache (I guess on CentOS that user
is called apache).

If not, you should run:
rake db:create

Hope this help.

Cheers!

Leonardo M…
There’s no place like ~

Hi Leonardo,

Per my reply to Walter, I just ran “rake db:migrate
RAILS_ENV=production”. However, I now get a “500 Internal Server
Error”.

Below is my config/database.yml file and these are the permissions to
the db/production.sqlite3 file.

-rw-r–r-- 1 root root 5120 Mar 29 20:45 production.sqlite3

Do I have to change the ownership for this file?

Thanks,

Kal


SQLite version 3.x

gem install sqlite3

Ensure the SQLite 3 gem is defined in your Gemfile

gem ‘sqlite3’

development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000

Warning: The database defined as “test” will be erased and

re-generated from your development database when you run “rake”.

Do not set this db to the same as development or production.

test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000

production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000


(Re-posting)

Thanks Walter,

I think you are correct. I had neglected to set up a production
version of the database.

I just ran “rake db:migrate RAILS_ENV=production”. However, I now get
a “500 Internal Server Error”.

Anyway, here is the error from production.log. Any ideas?

Thanks,

Kal


Processing by StoreController#index as HTML
Rendered store/index.html.erb within layouts/application (17.9ms)
Completed 500 Internal Server Error in 38ms

ActionView::Template::Error (all.css isn’t precompiled):
2:
3:
4: Depot
5: <%= stylesheet_link_tag :all %>
6: <%= javascript_include_tag :defaults %>
7: <%= csrf_meta_tag %>
8:
app/views/layouts/application.html.erb:5:in
`_app_views_layouts_application_html_erb__750878_73537400’


Hi Walter,

I did as instructed but now getting a “rake aborted! stack level too
deep” error (in /home/rubys/work/depot/app/assets/stylesheets/
scaffolds.css.scss).

I also tried modified “config.assets.compile = true” (from false)
within config/environments/production.rb but still no good :frowning:

Thanks,

Kal


rake assets:precompile --trace

** Invoke assets:precompile (first_time)
** Execute assets:precompile
/usr/local/bin/ruby /usr/local/bin/rake assets:precompile:all
RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
stack level too deep
(in /home/rubys/work/depot/app/assets/stylesheets/
scaffolds.css.scss)
/usr/local/lib/ruby/1.9.1/rake/task.rb:162
Tasks: TOP => assets:precompile:primary
rake aborted!
Command failed with status (1): [/usr/local/bin/ruby /usr/local/bin/
rake as…]
/usr/local/lib/ruby/1.9.1/rake/file_utils.rb:53:in block in create_shell_runner' /usr/local/lib/ruby/1.9.1/rake/file_utils.rb:45:incall’
/usr/local/lib/ruby/1.9.1/rake/file_utils.rb:45:in sh' /usr/local/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:insh’
/usr/local/lib/ruby/1.9.1/rake/file_utils.rb:80:in ruby' /usr/local/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:inruby’
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/sprockets/
assets.rake:9:in ruby_rake_task' /usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/sprockets/ assets.rake:17:ininvoke_or_reboot_rake_task’
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/sprockets/
assets.rake:25:in block (2 levels) in <top (required)>' /usr/local/lib/ruby/1.9.1/rake/task.rb:205:incall’
/usr/local/lib/ruby/1.9.1/rake/task.rb:205:in block in execute' /usr/local/lib/ruby/1.9.1/rake/task.rb:200:ineach’
/usr/local/lib/ruby/1.9.1/rake/task.rb:200:in execute' /usr/local/lib/ruby/1.9.1/rake/task.rb:158:inblock in
invoke_with_call_chain’
/usr/local/lib/ruby/1.9.1/monitor.rb:211:in mon_synchronize' /usr/local/lib/ruby/1.9.1/rake/task.rb:151:ininvoke_with_call_chain’
/usr/local/lib/ruby/1.9.1/rake/task.rb:144:in invoke' /usr/local/lib/ruby/1.9.1/rake/application.rb:116:ininvoke_task’
/usr/local/lib/ruby/1.9.1/rake/application.rb:94:in block (2 levels) in top_level' /usr/local/lib/ruby/1.9.1/rake/application.rb:94:ineach’
/usr/local/lib/ruby/1.9.1/rake/application.rb:94:in block in top_level' /usr/local/lib/ruby/1.9.1/rake/application.rb:133:instandard_exception_handling’
/usr/local/lib/ruby/1.9.1/rake/application.rb:88:in top_level' /usr/local/lib/ruby/1.9.1/rake/application.rb:66:inblock in run’
/usr/local/lib/ruby/1.9.1/rake/application.rb:133:in
standard_exception_handling' /usr/local/lib/ruby/1.9.1/rake/application.rb:63:inrun’
/usr/local/bin/rake:32:in `’
Tasks: TOP => assets:precompile


On Mar 29, 2012, at 10:51 PM, Kal wrote:

Anyway, here is the error from production.log. Any ideas?
Sure. rake assets:precompile and you should be good to go.

Walter

Hi Walter,

I did as instructed but now getting a “rake aborted! stack level too
deep (in /home/rubys/work/depot/app/assets/stylesheets/
scaffolds.css.scss)” error.

I tried to modify "config.assets.compile = true: (from false) within
config/environments/production.rb but still no good :frowning:

Thanks Again,

-Kin


rake assets:precompile --trace

** Invoke assets:precompile (first_time)
** Execute assets:precompile
/usr/local/bin/ruby /usr/local/bin/rake assets:precompile:all
RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
stack level too deep
(in /home/rubys/work/depot/app/assets/stylesheets/
scaffolds.css.scss)
/usr/local/lib/ruby/1.9.1/rake/task.rb:162
Tasks: TOP => assets:precompile:primary
rake aborted!
Command failed with status (1): [/usr/local/bin/ruby /usr/local/bin/
rake as…]
/usr/local/lib/ruby/1.9.1/rake/file_utils.rb:53:in block in create_shell_runner' /usr/local/lib/ruby/1.9.1/rake/file_utils.rb:45:incall’
/usr/local/lib/ruby/1.9.1/rake/file_utils.rb:45:in sh' /usr/local/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:insh’
/usr/local/lib/ruby/1.9.1/rake/file_utils.rb:80:in ruby' /usr/local/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:inruby’
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/sprockets/
assets.rake:9:in ruby_rake_task' /usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/sprockets/ assets.rake:17:ininvoke_or_reboot_rake_task’
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/sprockets/
assets.rake:25:in block (2 levels) in <top (required)>' /usr/local/lib/ruby/1.9.1/rake/task.rb:205:incall’
/usr/local/lib/ruby/1.9.1/rake/task.rb:205:in block in execute' /usr/local/lib/ruby/1.9.1/rake/task.rb:200:ineach’
/usr/local/lib/ruby/1.9.1/rake/task.rb:200:in execute' /usr/local/lib/ruby/1.9.1/rake/task.rb:158:inblock in
invoke_with_call_chain’
/usr/local/lib/ruby/1.9.1/monitor.rb:211:in mon_synchronize' /usr/local/lib/ruby/1.9.1/rake/task.rb:151:ininvoke_with_call_chain’
/usr/local/lib/ruby/1.9.1/rake/task.rb:144:in invoke' /usr/local/lib/ruby/1.9.1/rake/application.rb:116:ininvoke_task’
/usr/local/lib/ruby/1.9.1/rake/application.rb:94:in block (2 levels) in top_level' /usr/local/lib/ruby/1.9.1/rake/application.rb:94:ineach’
/usr/local/lib/ruby/1.9.1/rake/application.rb:94:in block in top_level' /usr/local/lib/ruby/1.9.1/rake/application.rb:133:instandard_exception_handling’
/usr/local/lib/ruby/1.9.1/rake/application.rb:88:in top_level' /usr/local/lib/ruby/1.9.1/rake/application.rb:66:inblock in run’
/usr/local/lib/ruby/1.9.1/rake/application.rb:133:in
standard_exception_handling' /usr/local/lib/ruby/1.9.1/rake/application.rb:63:inrun’
/usr/local/bin/rake:32:in `’
Tasks: TOP => assets:precompile


Ok this might sound funny but , this problem is usually caused by lack
of javascript libraries in your rails setup so i would recommend you to
do this .

Install this gem and you should be ready to go

gem install therubyracer

If it works or it doesnt work let me know

My apologies Walter, et al.

I haven’t had access to my computers within the last 24 hrs. I shall
look into your recommendations tonight.

As always, thank you for your assistance and prompt replies.

~Kal

On Mar 30, 2012, at 12:34 AM, Kal wrote:

Hi Walter,

I did as instructed but now getting a “rake aborted! stack level too
deep (in /home/rubys/work/depot/app/assets/stylesheets/
scaffolds.css.scss)” error.

I tried to modify "config.assets.compile = true: (from false) within
config/environments/production.rb but still no good :frowning:

What version of rake? What version of bundler? Have you run bundle
install or bundle update on your server? I’m guessing in the dark here,
but it sounds like you may not have everything the same on your server
as your dev box, version-wise. If you were able to use the site locally,
it should work on the server. Try running the site in production on your
development machine, using

rake db:migrate RAILS_ENV=production
rake assets:precompile
rails server RAILS_ENV=production

to duplicate the experience locally. See if it’s specific to this
server.

Also, try prefixing your assets:precompile step on the server with
bundle exec so you’re sure you’re getting the actual versions of
everything when you do that.

Walter

Typo: product listing are NOT displayed :frowning:

Hi Walter,

Again, my apologies for the delay in reply. I’m more confused now
than before, so it took some time to poke around.

Firstly, I don’t run a separate development and production server.
Does that matter?

Installed are rake (0.9.2.2) and bundler (1.0.21). I have not run
bundle install or bundle update


Although, I am thinking that it’s a permission issue now.

When we last left things, I ran:

rake db:migrate RAILS_ENV=production
rake assets:precompile

(At this point, I got the “rake aborted! stack level too deep” error)

However, something has changed… after running these 2 command
(*Please note - I haven’t run rails server RAILS_ENV=production) as
you suggested:

I am able to see some text from my webpage “Your Pragmatic Catalog”
now (without going to port 3000).

The product listing are now displayed,which leads me to think that the
application is not able to see the sqlite3 database file.

Any further ideas?

~Kal


On Apr 2, 2012, at 8:39 PM, Kal wrote:

Hi Walter,

Again, my apologies for the delay in reply. I’m more confused now
than before, so it took some time to poke around.

Firstly, I don’t run a separate development and production server.
Does that matter?

If you start rails with rails server (and no other arguments) you are
starting the development environment, which means you are running the
development server. This uses a different database than production, and
by default listens on port 3000. When you start rails under Passenger or
another proxy system, you are starting the production environment, which
uses a different (production) database and listens on the default port
80 (depends on your Apache config, actually).

Installed are rake (0.9.2.2) and bundler (1.0.21). I have not run
bundle install or bundle update

You really must do this on the server, having done it on the desktop
computer will not have instantiated the gems on the server, and you can
pretty much guarantee failure to run.


Although, I am thinking that it’s a permission issue now.

Permissions is a valid concern here – how did you get the files over to
your server? What exact method did you use to copy the files from your
desktop computer to the server?

Walter

Hi L,

therubyracer (0.9.9) is already installed :frowning:

Thanks Anyway :slight_smile:

~Kal

On Apr 2, 2012, at 10:15 PM, Kal wrote:

I’m not testing any of the aforementioned items on a desktop nor am I
deploying to Apache via (localhost); everything is live.

Are you writing the app on the server? Aren’t you building the app on
your local machine?

http://www.cowboycoded.com/tag/passenger/
That’s very interesting. I think that makes a lot of sense. Make a new
user, then chown - R new_user /path/to/rails/root and see if that
makes a difference.

Walter

Hi Walter,

Very sorry for the confusion.

When I mention server, I’m actually referring to the box, not a
service(s).

I’m actually running everything from a virtual dedicated server
(through GoDaddy.com).

I’m not testing any of the aforementioned items on a desktop nor am I
deploying to Apache via (localhost); everything is live.

As stated in my initial posting “I’m able to deploy the site via
WEBrick. However, when I go to my URL (without using port 3000), I
get the error message below”.

Of course, the original error message no longer appears (thanks to
your advise :).

I found the following posting, what do you think of item 4?

http://www.cowboycoded.com/tag/passenger/

Thanks,

~Kal


Hi Walter,

I was wrong; creating a new user ‘app_user’, adding it to the sudoer
file, and then applying ‘chown - R app_user /home/rubys/work/depot’
did work.

I was just reading too deep into Cowboy’s (http://www.cowboycoded.com/
tag/passenger/) instructions, which didn’t pertain to my setup
(specifically, the part about NGINX).

However, my setup was still not working and I think my problem
involves asset pipeline (Sprockets).

This is further complicated by me following the “Depot” exercise in
the 4th edition of “Agile Web D. with Rails”

I’ve since rebuilt the entire test app with a couple of simple pages
and no database content.

I ran “RAILS_ENV=production bundle exec rake assets:precompile” and
successfully got it to appear on Apache.

This is warrants much investigation but at least I know everything
wired properly.

Thanks Again,

~Kal
PS: I really don’t know about ROR. It’s really kludgy to say the
least :frowning:

I get the same error. I am also using passenger, although I don’t
always use it. I am also using RVM.

I noticed an error that popped up in my email from rake (I am working on
a Mac) that showed an error from rake 1.8.X something or other, instead
of the rake from 1.9.2 that I am running. I suspect that deep in some
of the code, someone is diddling the path incorrectly. I don’t have
time right now to chase it down, but I thought that this might at least
help.

Hi Walter,

That didn’t seem to work…

This is getting more and more confusing to the point where I don’t
know if I’m coming or going…

Mostly, this is because the Ruby on Rails stack involves so many
items, I’m not sure where it’s broken.

I’m getting closer (or maybe not). I’ll post my findings (and email
you) as soon as I figure everything out.

Thanks for all of your help thus far.

~Kal