我的Rails应用程序使用ImageMagick,但是该应用程序在尝试执行ImageMagick命令(“ identify”)时失败.我通过在Apache配置中传递以下环境变量来解决开发中的问题(正在运行Apache / Passenger):SetEnv MAGICK_HOME /op...
我的Rails应用程序使用ImageMagick,但是该应用程序在尝试执行ImageMagick命令(“ identify”)时失败.我通过在Apache配置中传递以下环境变量来解决开发中的问题(正在运行Apache / Passenger):
SetEnv MAGICK_HOME /opt/local/var/macports/software/ImageMagick/6.5.9-0_0+q16
SetEnv DYLD_LIBRARY_PATH /opt/local/var/macports/software/ImageMagick/6.5.9-0_0+q16/opt/local/lib
SetEnv PATH /usr/bin:/opt/local/var/macports/software/ImageMagick/6.5.9-0_0+q16/opt/local/bin
但是,我的生产环境正在运行Nginx和Mongrel(不是我设置的),并且我不确定如何将这些变量传递给应用程序.我的nginx.conf文件当前如下:
# user and group to run as
user mouthbreather mouthbreather;
worker_processes 4;
# pid of nginx master process
pid /var/run/nginx.pid;
events {
worker_connections 8192;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/engineyard/nginx/access.log main;
error_log /var/log/engineyard/nginx/error.log notice;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/sites/*.conf;
}
所以我的问题是:
>如何确定MAGICK_HOME在生产中的位置?
>如何通过nginx.conf将这些变量传递给应用程序?
谢谢!
解决方法:
简而言之,您不会使用nginx通过环境变量传递任何内容,而是使用HTTP标头或fastcgi参数.
在您的情况下,您甚至不需要,因为您可以正确地处理事务并将mongrels作为单独的进程运行-在THEIR环境中设置环境变量. Nginx与它无关.
Nginx不能与环境变量一起使用,并且可能不会在很长一段时间内出现,直到有人错误地将其与第三方模块一起破解,然后主流仍不支持该模块.
造成这种情况的原因有很多,主要是与设计,安全性和管理相关,但是最终,开发人员和社区认为,当设计HTTPd来处理可能会占用资源的资源时,处理环境变量不是HTTPd的地方.不在同一台计算机上(如何将环境变量传递给在附近另一台计算机上侦听的进程?).
此外,passenger是第三方模块,在实现和设计方面都受到了破坏,因为它在nginx中运行,因为它在nginx中运行应用程序流程(这是理论上您可以传递环境变量,但这不是nginx的工作方式).
推荐的处理此类情况的方法是在nginx之外启动应用程序(如果需要,在其中使用环境变量),然后将proxy或fastcgi传递给您的应用程序,还可以选择在标头或fastcgi params中包含必要的额外数据.另外,您的应用程序可以通过某种方式确定其中的正确设置,例如settings.local文件(这在python设置中非常常见).
有很多方法可以使nginx不处理环境变量.
本文标题为:ruby-on-rails-如何将ImageMagick环境变量传递给nginx mongrels?
基础教程推荐
- UEFI开发基础HII代码示例 2023-07-07
- R语言基于Keras的MLP神经网络及环境搭建 2022-12-10
- swift 字符串String的使用方法 2023-07-05
- R包ggtreeExtra绘制进化树 2022-12-14
- swift版webview加载网页进度条效果 2023-07-05
- ruby-on-rails-使用Nginx的Rails的多阶段环境 2023-09-21
- R语言-如何将科学计数法表示的数字转化为文本 2022-11-23
- R语言数可视化Split violin plot小提琴图绘制方法 2022-12-10
- asm基础——汇编指令之in/out指令 2023-07-06
- Go web部署报错panic: listen tcp xxxxxxx:8090: bind: cannot assign requested address 2023-09-05