Unicorn vs Passenger Standalone behind nginx
我试图在独角兽和居住乘客独立(以前是Phusion乘客Lite)之间做出决定.我想在服务器上托管多个应用程序.我正在运行NGINX并收听端口80.我需要一个可以根据请求Servername和/或缺少现有静态目录/文件来代理请求的WebApp服务器.我对作为NGINX(标准安装)的一部分编译乘客不感兴趣,因为我的模型允许更具灵活性(例如,使用不同的应用程序运行不同版本的Ruby版本). 我已经阅读了很多有关独角兽的知识,它非常适合我的模型,但我看到乘客独立的基本上可以做同样的事情.即使那里有大量用于标准乘客安装的文档,但对于乘客而言,似乎并没有很多文档.甚至官方文档都裸露. 有人可以比较和对比这两个Ruby WebApp服务器,并给我每个人的利弊.请记住,它们只能用于"快速客户". 谢谢. 解决方案 如果您已经设置了NGINX,请使用Unicorn.如果不是,请使用独立的乘客,它随身携带其内置nginx.也许这也塑造了您对文档的方法.单独记录哪些本质上有两个非常有
2 2023-05-21
编程技术问答社区
为什么Gitlab 6要换回unicorn?
gitlab 6.0 昨天发布.我很想知道为什么他们切换到 Unicorn 来自 puma . 5之前的版本使用 Unicorn .我认为切换到 puma 更好. 此开关有技术原因吗? 解决方案 Gitlab B.V.首席执行官在这里,我同意洪利的评论:"如果有问题,那么它们可能会符合Gitlab的代码."我们试图修复它们,但Gitlab是最大的开源导轨应用程序之一,也是难以复制的问题.因此,最后我们选择了最务实的解决方案,转回独角兽.我们喜欢Puma,Unicorn和乘客,并认为它们都是很棒的软件. 其他解决方案 2020年4月更新,Gitlab 12.10: PUMA将成为默认应用程序服务器 GitLab将以13.0的方式将默认应用程序服务器从Unicorn转换为PUMA. 和gitlab 13.0(2020年5月): 使用PUMA 减少GitLab的内存消耗 阅读下面的最后一节. 原始答案2013 The commit
2 2023-05-20
编程技术问答社区
生产服务器(独角兽)上的回形针错误
我使用回纸上传图像以供发布.对于图像,有一个单独的模型,并且帖子具有密集关系. 为了上传, 生产服务器(Ubuntu 12.04)使用Unicorn + Nginx.当我尝试上传图像时,我会得到: Paperclip::AdapterRegistry::NoHandlerError (No handler found for # Unicorn::TeeInput:0x00000005cdd728 @len=619851, @chunked=false, @socket=#
0 2023-05-19
编程技术问答社区
使用Unicorn生产的回形针:未初始化的常量Paperclip(NameError)。
我在我的应用程序中添加了纸卷,然后尝试使用Capistrano部署到我的VPS.部署成功发生,但是当我尝试在VPS上访问我的应用程序时,我会获得Rails错误页面. production.log中没有信息,但是unicorn.log有以下错误: E, [2013-06-25T19:44:07.372060 #21995] ERROR -- : uninitialized constant Paperclip (NameError) /home/deployer/apps/arcsite/releases/20130625182331/config/initializers/paperclip.rb:1:in `' 初始化文件为paperclip.rb,并具有以下内容: Paperclip.interpolates :zone do |attachment, style| attachment.instance.zone_id end
0 2023-05-19
编程技术问答社区
用回形针上传非常慢(独角兽)。
坐在这里带一个简单的Rails 3应用程序,其中我有一个简单的画廊模型,每个画廊都有许多图像.图像模型使用回形针扩展,并具有以下选项 has_attached_file :local, :styles => { :large => "800x800>", :medium => "300x300>", :thumb => "100x100#", :small => "60x60#" } 在我的Galleries_controller中,我有以下操作,以便与 jquery-file "> jquery-file -upload 插件.因此,JSON回应. def add_image gallery = Gallery.find params[:id] image = gallery.images.new({:local => params[:local]}) if image.save r
0 2023-05-11
编程技术问答社区
Omniauth Nginx Unicorn回调至错误的主机URL
我已经将Rails应用程序部署到VPS服务器,并且我使用的是Nginx/Unicorn组合,一切正常,除了我的理解之外的某些原因,Omniauth回调是错误的, 即. http://unicorn/users/auth/linkedin/callback?oauth_token=95218ed3-b426-45ab-b022-693d2a2447cb&oauth_verifier=25955 应该是: http://my-real-domain.com/users/auth/linkedin/callback?oauth_token=95218ed3-b426-45ab-b022-693d2a2447cb&oauth_verifier=25955 怎么了?为什么使用nginx中定义的上游名称的回调? upstream unicorn { server unix:/tmp/unicorn.todo.sock fail_timeout=0; } serv
0 2023-05-08
编程技术问答社区
独角兽和omniauth-facebook-uninitialized常数OmniAuth
所以我试图让Omniaut-Facebook在我的生产环境中工作.它在我的机器上使用POW. 在本地工作正常. 我的产品env是ubuntu,带有Nginx/Unicorn,代码为Rails 3.2.13,Unicorn的错误是: E, [2013-05-20T15:51:13.900829 #8737] ERROR -- : uninitialized constant OmniAuth (NameError) /home/web/apps/****/releases/20130520041958/config/initializers/omniauth.rb:1:in `' 因此,从我能找到的东西来看,我尝试添加需要'OmniAuth/facebook'上方的配置块上的confifure Block.RB文件,现在我得到了: /home/web/apps/****/shared/bundle/ruby/1.9.1/gems/acti
6 2023-05-08
编程技术问答社区
从域向特定的Rails引擎发送请求
我有一个在Rackspace VPS上运行的单轨应用程序.堆栈是rails3 +独角兽 + nginx + mysql. 有一个主要域,可以使用 proxy_pass . 我有一个安装在/digital下的新引擎.现在,人们可以通过 http://primarydomain.com/digital.com/digital . 我想托管一个直接转发请求到/digital的新域;不使用根引擎. 因此,例如,以下请求将产生等效的结果: http://primarydomain.com/digital/digital/splash http://alternatedomain.com/splash 在一个完美的世界中,发动机将是一个单独的应用程序.我想表现得好像单独的域是一个单独的应用程序,尽管它确实是一个安装的引擎. 这是routes.rb的样子: Company::Application.routes.draw do root :to =
0 2023-04-23
编程技术问答社区
自定义视图不是在生产模式下加载,而是加载开发
我正在为狂欢创建一个全新的前端(需要自定义的标记和JS,因此在这种情况下,Deface不是一个不错的选择). 我覆盖的视图在开发方面工作正常,但是一旦我将其加载到生产中,它就会开始从核心和前端GEMS加载视图 我所有的覆盖都位于 中 app/views/spree/... ,但这在生产中都被忽略了,并从默认的宝石中加载. 我在上面运行Unicorn和Nginx. 任何人都有丝毫的想法? 这是我的gemfile source 'https://rubygems.org' gem 'rails', '3.2.13' gem 'mysql2' gem 'thin', '~> 1.5.1' gem 'therubyracer', :platforms => :ruby gem 'unicorn', '~> 3.6.2', :require => nil group :assets do gem 'sass-rails', '~> 3.2
12 2023-04-23
编程技术问答社区
部署Rails时,Nginx未知指令 "upstream "错误
我正在尝试安装标准导轨应用程序.经过教程 https://coderwall.com/p/yz8cha 我被困在上一步. 尝试重新启动nginx时,我会收到以下错误 - Restarting nginx: nginx: [emerg] unknown directive "upstream" in /etc/nginx/nginx.conf:1 ; nginx: configuration file /etc/nginx/nginx.conf test failed 我严格遵循 https://coderwall.com/p/yz8cha 我的conf文件和unicorn.rb文件与projectName和用户的更改几乎相同. 我的nginx conf文件 - http://pastebin.com/bd0rrdxk 解决方案 nginx.conf此处提到的 https://coderwall.com/p/yz8cha 应该在config/nginx.conf的
0 2023-04-23
编程技术问答社区
使用Nginx和Unicorn的Rails部署出现504网关超时错误
我的nginx服务器在VPS上未正确运行 根据Rails Cast VPS部署,我正确完成了所有设置 我仍然会遇到错误504网关超时错误 nginx log request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "roomies.co.in" 2014/07/26 11:33:58 [error] 6935#0: *10 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 223.239.147.104, server: _, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "roomies.co.in" 2014/07/26 11:45:56
0 2023-04-23
编程技术问答社区
生产中显示的错误信息-Rails 3.1上的Ruby, Nginx, Unicorn
我有一个使用Nginx和Unicorn在生产中运行的Rails 3.1应用程序.由于某种原因,我的自定义404和500 HTML错误页面未显示.相反,我收到了实际错误消息(例如,"路由错误"). 在我的production.rb文件中,我有config.consider_all_requests_local = false 在具有几乎相同的配置的同一家服务器上,我有一个可以正常工作的"登台"站点.据我所知,唯一的区别是生产具有SSL,而分期没有. . 这是生产应用程序的nginx配置: upstream unicorn_myapp_prod { server unix:/tmp/unicorn.myapp_prod.sock fail_timeout=0; } server { listen 80; server_name myapp.com; root /home/deployer/apps/myapp_prod/current/public
2 2023-04-23
编程技术问答社区
迁移到Digital Ocean后,Rails无法访问头文件
我有一个为Web和Android客户端提供服务的Rails应用程序.我最近从1.9.3升级为Ruby 2.0.我去了Android客户端进行一些工作,并从API中获得500个状态.我通过在标题中发送auth_token来返回每个用户的JSON数据. 我检查了服务器日志,以查看发生了什么.此方法正在返回零: def api_user my_auth = request.headers["auth_token"] api_user = User.where(authentication_token: my_auth).first end 我没有碰到我的Android客户端,所以我知道问题不在. 我尝试了curl --header "auth_token: xxxxxxxxxxxxxxxxxxxx" https://myapp.com/api/etc.json 并获得500个状态. 我最近对Rails应用程序进行了许多更改,并从Heroku转移到Digial
18 2023-04-23
编程技术问答社区
nginx剥离了last-modified和if-modified-since头文件,但我的Rail应用程序需要它们。
我的Rails 3.2应用程序使用 - 通过#stale? - If-Modified-Since http标头在请求中,响应中的Last-Modified标头在决定是否应动态生成一些数据.如curl -D headers.txt,这在开发方面非常有效(无论是使用Webrick还是Unicorn_rails),表明,如果提供了正确的If-Modified-Since值,则发送304响应,而否则Last-Modified header则沿请求数据发送. 不幸的是,一旦部署在NGINX后面,If-Modified-Since均未传递给Unicorn(提供正确的标头值),因此将Rails App传播给客户端:无条件生成请求,并且响应永远不会产生包含适当的标头. 解决方案 事实证明,Nginx实际上没有剥离任何东西.仪器表明,控制器收到了If-Modified-Since. Rails #stale?收到包含不良结果的请求,这导致了一个nil参数,默默地吞咽了它,随后忽略了与If-Mo
4 2023-04-23
编程技术问答社区
使用nginx和unicorn部署rails:403禁止的错误
我刚刚设置了VPS(CentOS 6.3),并使用Capistrano部署了我的应用程序. VPS运行Nginx&Unicorn.访问服务器时我会遇到403禁止错误:此行出现在 /var/log/nginx/error.log: *5 directory index of "/var/www/current/public/" is forbidden, client: xxxxx, server: xxx, request: "GET / HTTP/1.1", host: "xxxx" 但是,如果我将index.html添加到我的Rails应用程序中.这使我认为路线不起作用. 我还使用CHMOD -R 755 *设置了所有/var/www文件夹的权限(从长远来看可能不是最好的想法,但希望将其作为错误源).还有其他方法可以更详细地调试此问题(error.log文件没有告诉我其他任何内容)? 任何帮助都非常感谢. 这是我的routes.rb文件(所有内容都在开
0 2023-04-22
编程技术问答社区
独角兽多机设置
我在Unicorn配置与NGINX的结合方面具有良好的经验,在优化和调整过程之后,它确实可以很好地工作.但是现在我有一个问题是什么是用独角兽跨多个机器传播负载的最佳方法. 问题是您有3台机器(Nginx负载平衡器,2个带独角兽的应用程序服务器),如何管理独角兽的负载平衡与静态资产. 您现在是否有与TCP连接连接的缺点(超时,连接丢失),是否有其他方法可以通过网络上游插座连接(也许是通过SSH转发)?独角兽设计为无状态,但是如何管理边缘案例? 我不想从Balancer节点提供静态,那么可以在App Server和App Server上设置NGINX并在它们面前设置dumb nginx balancer吗? P.S.我目前的配置经过了充分的测试,可以在 github 上找到已经变成瓶颈的机器. 更新:开发严格取决于特定的服务器配置.瓶颈将不仅仅是因为开发人员的决定,还因为他经营的决定. Stackoverlow充满了与有关特定配置的难以知道的详细信息有关的高标记
4 2023-04-22
编程技术问答社区
为什么Unicorn/Gunicorn在提供静态内容时很慢?
我读过在这里 Unicorn/Gunicorn HTTP服务器"不太擅长提供静态文件",并且NGINX更擅长提供静态内容.有人可以解释为什么这是吗? 我了解Nginx和Gunicorn的专业角色,而Nginx是一个反向代理,并且枪支实际上可以在必要时使用静态文件. 解决方案 主要是因为独角兽并非旨在解决向客户提供文件服务的一系列问题: Unicorn是适用于快速客户端和UNIX的服务器.什么是快速客户? 快速客户端是另一个可以与 机架服务器很快,没有太大的延迟.独角兽不好 独立的服务器:它不是为了处理慢速请求的设计 发生在网络连接上.它依靠Nginx或Apache处理 Web请求的缓冲和排队,因此不必 担心并发和事件驱动的编程.独角兽是 基本上是nginx和架子之间的胶,其中nginx是快速的 客户端. 考虑一种情况,您可以在56K调制解调器上试图观看400MB视频的访问者.您真的不想将应用程序的100个实例保存在内存中,也不必将文件加载到内存中等.nginx是
0 2023-04-22
编程技术问答社区
unicorn和nginx的奇怪问题导致502错误
我们在Rauds应用程序上有Ruby,该应用程序正在VPS上运行.今晚,Nginx倒下了,并以" 502 Bad Gateway"做出了回应. nginx错误日志包含许多延误消息: 2013/10/02 00:01:47 [error] 1136#0: *1 connect() to unix:/app_directory/shared/sockets/unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 5.10.83.46, server: www.website.com, request: "GET /resource/206 HTTP/1.1", upstream: "http://unix:/app_directory/shared/sockets/unicorn.sock:/resource/206", host: "www.website.com"
0 2023-04-22
编程技术问答社区
Unicorn/Nginx进程丢失,套接字打开
我正在尝试使用Capistrano部署代码,并且在deploy:start或deploy:stop上失败了,因为独角兽程序已经被杀死.但是,如果我尝试cap deploy:start,我会得到一个声称Address already in use - /tmp/my_app.socket的stderr.这将如何发生,我将如何摆脱困境? 解决方案 仍然不确定这是如何发生的,但是以下解决方案似乎有效: lsof /tmp/my_app.socket - 列出pids kill -9 pid - (用列出的其中一个替换'pid') 然后cap deploy:start来自本地终端.
12 2023-04-22
编程技术问答社区
Websocket-rails在Nginx和Unicorn的生产环境中无法工作
我有Rails 3.2应用GEM WebSocket-rails 0.7. 在开发机上,所有工作都很好 在生产环境中,我将nginx/1.6用作代理服务器,而独角兽作为HTTP服务器.薄件在独立模式下使用(以下 https://github.com/websocket-rails/websocket-rails/wiki/standalone-server-mode ). nginx配置: location /websocket { proxy_pass http://localhost:3001/websocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } 在后端,我有以下代码将通知发送给客户 WebsocketRails[:callback_requests]
2 2023-04-22
编程技术问答社区