2012-06-21 22 views
0

問題,這裏有雲:我試圖運行FastCGI的一個網站,但我有模板不渲染

我正在使用FastCGI/nginx的和Django的我的網站。我已經管理啓動服務器,沒有錯誤。 我跑manage.py runserver命令,並參觀了網站,它具有下manage.py工作的菜單,但是當我使用manage.py runfcgi它開始:

python manage.py runfcgi method=prefork maxchildren=30 host=127.0.0.1 port=4300 pidfile=pid workdir="$PWD" daemonize=false outlog="$LOGFILE" errlog="$LOGFILE" 

應用程序只提供我的第一頁中網站。

例如:

If I go to mywebsite.com this being the home page I get the right 
    template home.html. 
    If I visit mywebsite.com/get-started ,the server tries to render the same home.html. 

使用manage.py runserver命令的作品,但runfcgi事實並非如此。

PS: 該網站使用一些餅乾,它有一個自定義的渲染功能,它是從GitHub,店面應用的indextank服務:https://github.com/linkedin/indextank-service 您可以通過manage.py運行它。

通過runfcgi運行時,不改變頁面時,我嘗試導航頂部的菜單,它使請求,但它得到的是「home.html的」

任何想法是極大的讚賞相同的模板。

加法: 服務器FastCGI的配置,這是相當標準:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
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_NAME  $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 HTTPS    $https if_not_empty; 

fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 

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; 

# PHP only, required if PHP was built with --enable-force-cgi-redirect 
fastcgi_param REDIRECT_STATUS 200; 

和應用程序的FastCGI配置:

server { 
     listen 80; 
    server_name search.spid.me www.search.spid.me; 
     client_max_body_size 1m; 

     location/{ 
      #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_pass 127.0.0.1:4300; 
      include  fastcgi_params; 
     #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 PATH_INFO   $fastcgi_script_name; 
     #fastcgi_pass 127.0.0.1:4300; 
      #fastcgi_param PATH_INFO $fastcgi_script_name; 
      #fastcgi_param REQUEST_METHOD $request_method; 
      #fastcgi_param QUERY_STRING $query_string; 
      #fastcgi_param SERVER_NAME $server_name; 
      #fastcgi_param SERVER_PORT $server_port; 
      #fastcgi_param SERVER_PROTOCOL $server_protocol; 
      #fastcgi_param CONTENT_TYPE $content_type; 
      #fastcgi_param CONTENT_LENGTH $content_length; 
      #fastcgi_pass_header Authorization; 
      #fastcgi_intercept_errors off; 
     } 

     location /_static { 
      expires 24h; 
      autoindex on; 
      alias /home/indextank/storefront/static/; 
     } 

     location /nginx_status { 
      stub_status on; 
      access_log off; 
      deny all; 
      allow 127.0.0.1; 
     } 

     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 
    } 

server { 
    server_name spid.search.me www.spid.search.me; 
     listen 443; 
     ssl on; 
    #ssl_certificate /etc/nginx/conf.d/server.crt; 
     #ssl_certificate_key /etc/nginx/conf.d/server.key; 
     server_name search.spid.me www.search.spid.me; 
     client_max_body_size 1m; 

     location/{ 
      fastcgi_pass 127.0.0.1:4300; 
      include  fastcgi_params; 
      fastcgi_param HTTPS on; 
     } 

     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 
    } 

我做了一些更多的調試和原來的路徑和PATH_INFO的請求沒有設置...

+1

您還沒有發佈重要的位,這是您的服務器FastCGI配置。 –

+0

只是一個想法...它可能是DEBUG = True和/或django期望在調試模式和實時模式之間找到您的模板的不匹配問題? – jcfollower

+0

想到這一點,我試着餵它一個非常基本的文字渲染,但沒有運氣。 – hackawaye

回答

0

發現問題。 我在fastcgi params文件中缺少一些fastcgi_params。 我加了這些,它似乎已經解決了這個問題。

+0

我有同樣的問題,缺少「fastcgi_split_path_info ^()(。*)$;」請參閱https://code.djangoproject.com/wiki/DjangoAndNginx – Luuk