4

I've deployed rails app with Capistrano to VPS, and when I try to access it with "APP_NAME.com", I see standard Nginx's "It works!" page.

I've tried to remove index.html file from /var/www folder, now I see folders in it: apps, log and tmp.

In nginx.conf I have:

user nginx web;

pid /var/run/nginx.pid;
error_log /var/www/log/nginx.error.log;

events {
  worker_connections 1024;
  accept_mutex off;
  use epoll;
}

http {
  include mime.types;
  types_hash_max_size 2048;
  server_names_hash_bucket_size 64;
  default_type application/octet-stream;
  access_log /var/www/log/nginx.access.log combined;
  sendfile on;
  tcp_nopush on; # off may be better for *some* Comet/long-poll stuff
  tcp_nodelay off; # on may be better for some Comet/long-poll stuff

  gzip on;
  gzip_http_version 1.0;
  gzip_proxied any;
  gzip_min_length 0;
  gzip_vary on;
  gzip_disable "MSIE [1-6]\.";
  gzip_proxied expired no-cache no-store private auth;
  gzip_comp_level 9;
  gzip_types text/plain text/xml text/css
             text/comma-separated-values
             text/javascript application/x-javascript
             application/atom+xml;

  upstream app_server {
    server unix:/var/www/apps/APP_NAME/socket/.unicorn.sock fail_timeout=0;
  }

  server {

    pagespeed on;
    pagespeed FileCachePath /var/ngx_pagespeed_cache;

    location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
      add_header "" "";
    }

    location ~ "^/ngx_pagespeed_static/" { }
    location ~ "^/ngx_pagespeed_beacon$" { }

    location /ngx_pagespeed_statistics {
      allow 127.0.0.1; allow 5.228.169.73; deny all;
    }

    location /ngx_pagespeed_global_statistics {
      allow 127.0.0.1; allow 5.228.169.73; deny all;
    }

    pagespeed MessageBufferSize 100000;

    location /ngx_pagespeed_message {
      allow 127.0.0.1; allow 5.228.169.73; deny all;
    }

    location /pagespeed_console {
      allow 127.0.0.1; allow 5.228.169.73; deny all;
    }

    charset utf-8;
    listen 80 default deferred; # for Linux
    client_max_body_size 4G;
    server_name _;
    keepalive_timeout 5;
    root /var/www/apps/APP_NAME/current/public;
    try_files $uri/index.html $uri.html $uri @app;

    location ~ ^/(assets)/  {
      root /var/www/apps/APP_NAME/current/public;
      expires max;
      add_header Cache-Control public;
    }

    location @app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://app_server;
    }

    error_page 500 502 503 504 /500.html;
    location = /500.html {
      root /var/www/apps/APP_NAME/current/public;
    }
  }
}

Am I missing something in nginx.conf or in other files?

Also, when I stop nginx server, it doesn't make sense, I see the same page.

I'm not good in deploying apps to server, it's my first time without Heroku, so I don't know, what exactly you need to know, to help in my problem. So, if you need any additional info, ask, I'll add it to question.

Thanks!

Peter Tretyakov
  • 3,380
  • 6
  • 38
  • 54

2 Answers2

4

So, I've found the solution from this answer. The problem was with Apache web server, which was running in background and prevent Nginx to run on 80 port.

I've stopped Apache server and restart Nginx, and everything now works ok:

sudo apachectl stop
sudo restart nginx
Community
  • 1
  • 1
Peter Tretyakov
  • 3,380
  • 6
  • 38
  • 54
0

Your must use passenger and set in nginx config something like this:

    http {
        passenger_root /home/deployer/.rvm/gems/ruby-1.9.3-p327/gems/passenger-3.0.18;
        passenger_ruby /home/deployer/.rvm/wrappers/ruby-1.9.3-p327/ruby;
...

or use HTTP server for Rack, as example Unicorn, and set in nginx config:

upstream app_server {
  server unix:/path/to/.unicorn.sock fail_timeout=0;
  ...

server {
  proxy_pass http://app_server;
  ...