Rails + Passenger + Nginx: "404 Not Found" for second app

Metaphysiker

I'm trying to deploy a second app to Digital Ocean.

I successfully deployed the first app with this tutorial: https://www.phusionpassenger.com/library/walkthroughs/deploy/ruby/digital_ocean/integration_mode.html

I added a second app to the same place following the same tutorial. When I try to visit the second app, I get the message "404 Not Found" and the log says:

2021/08/09 11:39:43 [error] 43452#43452: *21 "/var/www/philosophische_insel/public/index.html" is not found (2: No such file or directory)

enter image description here

There is a troubleshooting-guide for this exact problem: https://www.phusionpassenger.com/docs/advanced_guides/troubleshooting/nginx/troubleshooting/node/

Here is what I tried so far:

To "Cause and solution #1"

I added "passenger_enabled on;":

#cat /etc/nginx/sites-enabled/philosophische_insel.conf 
server {
    listen 80;
    server_name philosophische-insel.ch www.philosophische-insel.ch;

# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/philosopische_insel/public;

# Turn on Passenger
passenger_enabled on;
passenger_ruby /home/sandro/.rvm/gems/ruby-3.0.0/wrappers/ruby;
}

To "Cause and solution #2"

passenger_root is set to: /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;

cat /etc/nginx/conf.d/mod-http-passenger.conf
### Begin automatically installed Phusion Passenger config snippet ###
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/passenger_free_ruby;
### End automatically installed Phusion Passenger config snippet ###

It is the same as the result of passenger-config --root

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

To "Cause and solution #3" I tried to find some errors but I was not successful.

When I reload nginx and check error.log, I get this:

[ N 2021-08-09 12:10:57.2432 44738/T1 age/Wat/WatchdogMain.cpp:1373 ]: Starting Passenger watchdog...
[ N 2021-08-09 12:10:57.2904 44741/T1 age/Cor/CoreMain.cpp:1340 ]: Starting Passenger core...
[ N 2021-08-09 12:10:57.2905 44741/T1 age/Cor/CoreMain.cpp:256 ]: Passenger core running in multi-application mode.
[ N 2021-08-09 12:10:57.3033 44741/T1 age/Cor/CoreMain.cpp:1015 ]: Passenger core online, PID 44741
[ N 2021-08-09 12:10:59.4811 44741/T5 age/Cor/SecurityUpdateChecker.h:519 ]: Security update check: no update found (next check in 24 hours)
2021/08/09 12:11:03 [error] 44756#44756: *1 "/var/www/philosopische_insel/public/index.html" is not found (2: No such file or directory), client: 87.245.104.21, server: philosophische-insel.ch, request: "GET / HTTP/1.1", host: "www.philosophische-insel.ch"

passenger-status only shows the first app

I don't know if it is important but passenger-status only shows the first app, not the second in Application groups:

----------- General information -----------
Max pool size : 6
App groups    : 1
Processes     : 1
Requests in top-level queue : 0

----------- Application groups -----------
/var/www/dialectica (production):
  App root: /var/www/dialectica
  Requests in queue: 0
  * PID: 45528   Sessions: 0       Processed: 1       Uptime: 1m 57s
    CPU: 0%      Memory  : 34M     Last used: 1m 57s ago

Further Information

The first app works. However it has a different ruby version. Here is a comparison:

Ruby version:

First app:

ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

Second app:

ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]

Nginx-configuration

First app:

server {
    listen 80;
    server_name 159.65.120.231;

    # Tell Nginx and Passenger where your app's 'public' directory is
    root /var/www/dialectica/public;

    # Turn on Passenger
    passenger_enabled on;
    passenger_ruby /home/sandro/.rvm/gems/ruby-2.6.3/wrappers/ruby;
}

Second app:

server {
    listen 80;
    server_name philosophische-insel.ch www.philosophische-insel.ch;

    # Tell Nginx and Passenger where your app's 'public' directory is
    root /var/www/philosopische_insel/public;

    # Turn on Passenger
    passenger_enabled on;
    passenger_ruby /home/sandro/.rvm/gems/ruby-3.0.0/wrappers/ruby;
}

Any ideas?

At this point, I don't know how to proceed. Any ideas?

anonymus_rex

Assuming both apps are working fine, I have three recommendations:

  1. Keep your root statements and add passenger_app_root with your real apps root path instead their public path
  2. In your first app config, you are saying something like: " redirect every request looking for 159.65.120.231:80 to dialecta path", but the problem is that your DNS also resolves philosophische-insel.ch to 159.65.120.231:80. So you will never be able to reach your second app. Try using a different port or different domain (or subdomains) in each of your app's config
  3. Remember to always check your Nginx config with sudo nginx -t and, if config's fine, restart Nginx with sudo service nginx reload

So the following could be one config for your server:

server {
    ## Any of the followings should work

    ## Option 1: use a subdomain for this, remember that your DNS must be
    ## redirecting subdomains to this IP
    listen 80;
    server_name dialecta.philosophische-insel.ch www.dialecta.philosophische-insel.ch;

    ## Option 2: use a different domain. Also needs DNS config
    # listen 80;
    # server_name dialecta.ch www.dialecta.ch;

    ## Option 3: use a different port ##
    # listen 81;
    # server_name 159.65.120.231;

    passenger_enabled on;
    passenger_app_root /var/www/dialectica;
    passenger_ruby /home/sandro/.rvm/gems/ruby-2.6.3/wrappers/ruby;

    root /var/www/dialectica/public;
}
server {
    listen 80;
    server_name philosophische-insel.ch www.philosophische-insel.ch;

    passenger_enabled on;
    passenger_app_root /var/www/philosopische_insel;
    passenger_ruby /home/sandro/.rvm/gems/ruby-3.0.0/wrappers/ruby;

    root /var/www/philosopische_insel/public;
}

If you keep getting error, please post the output of sudo nginx -t.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related