Rails应用程序与Nginx / Passenger错误

我只是将Capistrano部署到Linux Server(14.04),Nginx,PHP5-FPM(用于phpMyAdmin),MySQL,Passenger的服务器上。

一切都很好,但是当我尝试从浏览器访问rails应用程序时,我得到错误。 我去检查日志Nginx,我得到以下内容:

App 15973 stdout: App 15973 stderr: [passenger_native_support.so] trying to compile for the current user (deploy) and Ruby interpreter... App 15973 stderr: (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to disable) App 15973 stderr: Warning: compilation didn't succeed. To learn why, read this file: App 15973 stderr: /tmp/passenger_native_support-a97tab.log App 15973 stderr: [passenger_native_support.so] not downloading because passenger wasn't installed from a release package App 15973 stderr: [passenger_native_support.so] will not be used (can't compile or download) App 15973 stderr: --> Passenger will still operate normally. App 16021 stdout: 

然后:

 $cat /tmp/passenger_native_support-a97tab.log # current user is: deploy # mkdir -p /usr/lib/buildout/ruby/ruby-2.2.1-x86_64-linux Encountered permission error, trying a different directory... ------------------------------- # mkdir -p /home/deploy/.passenger/native_support/5.0.26/ruby-2.2.1-x86_64-linux # cd /home/deploy/.passenger/native_support/5.0.26/ruby-2.2.1-x86_64-linux # /home/deploy/.rbenv/versions/2.2.1/bin/ruby /usr/lib/src/ruby_native_extension/extconf.rb /home/deploy/.rbenv/versions/2.2.1/bin/ruby: No such file or directory -- /usr/lib/src/ruby_native_extension/extconf.rb (LoadError) 

它出什么问题了?

这是我的Nginx默认文件:

 # Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; # root /usr/share/nginx/html; # Add index.php to the list if you are using PHP index index.html index.htm index.php index.nginx-debian.html; server_name _; passenger_enabled on; rails_env development; root /home/deploy/highschool/current/public; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

和我的Nginx.conf

 user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Phusion Passenger config ## # Uncomment it if you installed passenger or passenger-enterprise ## passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /home/deploy/.rbenv/shims/ruby; # passenger_ruby /usr/bin/passenger_free_ruby; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

我使用RBENV Ruby版本。

对不起我的英语不好。

我找到了解决方案。

在我的服务器中,我运行了下面的命令到我的Rails应用程序中: $ passenger-config build-native-support 。 编译正确,并显示ruby_native_extension/extconf.rbruby_native_extension目录的真正路径。

我只创建一个从/usr/lib/src/ruby_native_extension目录的符号链接并重新启动Nginx。

当我这样做的错误消失,但然后登录(设计)不起作用,总是得到了404错误。 所以,(如果在任何情况下发生)我添加了一些线路专门为路线sign_in。

在我的Nginx默认文件中,我添加了以下内容:

 location /users/sign_in { passenger_enabled on } 

并编辑:

 location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. passenger_enabled on try_files $uri $uri/ =404; } 

随着这些变化,我的Rails应用程序正在运行。