Servidor CentOS com nginx, php e Rails com passageiro

2

Atualmente, estou tentando fazer com que meu servidor funcione com rails e php. Atualmente tenho o Apache2 instalado com PHP (padrão do provedor)

Mas estou tentando fazer com que os trilhos funcionem também. Usamos PHP em nosso domínio principal e teremos um subdomínio onde o aplicativo rails será executado.

Não há necessidade para o Apache2, mas como posso fazer com que ambos os rails e php funcionem no mesmo servidor?

UPDATE Falha ao usar o apache e agora estou tentando fazer isso com o nginx que eu usei antes. Mas meu problema é fazer com que o PHP funcione. Eu tenho meu aplicativo rails funcionando, mas não consigo fazer o PHP funcionar. Atualmente eu tenho isso no meu arquivo de configuração.

server {
    listen 80;
    server_name www.domain.no domain.no;

    location = / {
        root /var/www/vhosts/domain.com/httpdocs;
        index index.php index.html index.htm;
    }

    location / {
        root   /var/www/vhosts/domain.com/httpdocs;
        index  index.php index.html index.htm;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root   /var/www/vhosts/domain.com/httpdocs;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_param SCRIPT_FILENAME /var/www/vhosts/domain.com/httpdocs/$fastcgi_script_name;
        fastcgi_param REQUEST_URI $request_uri;
        fastcgi_param DOCUMENT_URI $document_uri;
        fastcgi_param DOCUMENT_ROOT $document_root;
        fastcgi_param SERVER_PROTOCOL $server_protocol;
        fastcgi_param GATEWAY_INTERFACE CGI/1.1;
        fastcgi_param SERVER_SOFTWARE nginx;
        fastcgi_param REMOTE_ADDR $remote_addr;
        fastcgi_param REMOTE_PORT $remote_port;
        fastcgi_param SERVER_ADDR $server_addr;
        fastcgi_param SERVER_PORT $server_port;
        fastcgi_param SERVER_NAME $server_name;
    }
}

Mas quando eu tento acessar um arquivo php acabo sendo redirecionado para www.domain.com//service

Alguma ideia?

    
por ThoKra 16.12.2009 / 21:27

3 respostas

2

Estou executando dois servidores de produção que atendem sites PHP e Rails. A solução mais fácil foi executar o nginx na porta 80. O Nginx gerencia pedidos de páginas do Rails e ativos estáticos e, em seguida, faz proxy de quaisquer solicitações do php para o Apache que atende em uma porta privada. Isso é mais fácil do que gerenciar processos do FCGI e é melhor do que mexer nas inúmeras regras de reescrita e nas configurações do PROXY_PASS sugeridas pelas pessoas.

    
por 21.12.2009 / 15:43
0

Basta configurá-lo para apontar para um host virtual usando seu subdomínio. As instruções são aqui , simples.

<VirtualHost *:80>
    ServerName subdomain.domain.com
    DocumentRoot /railsapps/subapp/public
</VirtualHost>
    
por 16.12.2009 / 22:13
0

Para fazer com que o nginx passenger trabalhe com rails, basta adicionar outro servidor à sua configuração:

passenger_root /usr/lib64/ruby/gems/1.8/gems/passenger-2.2.5; 
passenger_ruby /usr/bin/ruby; 

server {
    listen       80;
    server_name  SUBDOMAIN.DOMAIN.NO;
    #access_log  logs/host.access.log  main;

    passenger_enabled on;
    rails_spawn_method smart-lv2;

    rails_env    production;

    root         /PATH/TO/YOUR/PROJECTS/PUBLIC;

    location ~* \.(ico|jpg|jpeg|gif|png|css|js)$ {
       root   /PATH/TO/YOUR/PROJECTS/PUBLIC;
       expires      30d;
    }

    error_page  404              /404.html;
    error_page  500 502 503 504  /50x.html;

    location = /50x.html {
        root   html;
    }

location ~ \.html\.erb$ {
    deny  all;
}

location ~ /\.ht {
        deny  all;
    }
}

UPD: sobre seu problema de php, tente seguir o conjunto de parâmetros:

  fastcgi_param   DOCUMENT_ROOT   /var/www/vhosts/domain.com/httpdocs;
  fastcgi_param   SCRIPT_FILENAME /var/www/vhosts/domain.com/httpdocs$fastcgi_script_name;
  fastcgi_param   PATH_TRANSLATED /var/www/vhosts/domain.com/httpdocs$fastcgi_script_name;

  fastcgi_param   SCRIPT_NAME     $fastcgi_script_name;
  fastcgi_param   QUERY_STRING    $query_string;
  fastcgi_param   CONTENT_TYPE    $content_type;
  fastcgi_param   CONTENT_LENGTH  $content_length;
  fastcgi_param   REDIRECT_STATUS 200;
  fastcgi_param   SERVER_PROTOCOL $server_protocol;
  fastcgi_param   SERVER_NAME     $server_name;
  fastcgi_param   REQUEST_URI     $request_uri;
  fastcgi_param   REQUEST_METHOD  $request_method;
  fastcgi_param   REMOTE_USER     $remote_user;
  fastcgi_param   REMOTE_ADDR     $remote_addr;
  fastcgi_param   REMOTE_PORT     $remote_port; 
    
por 19.12.2009 / 14:09