Articles of sinatra

将Integrity CI部署到Nginx和Unicorn的子目录

我正在尝试将Integrity持续集成服务器部署到子目录(或基本URL)。 也就是说,我想将其托pipe在http://dev.example.com/integrity/而不是http://integrity.example.com 。 我正在使用Unicorn和Nginx。 我的Nginxconfiguration: upstream integrity { server unix:/home/integrity_ci/integrity/tmp/sockets/integrity.socket; } server { server_name dev.example.com; location /integrity { proxy_pass http://integrity; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; } } 去http://dev.example.com/integrity/提出了完整性404(而不是Nginx 404页面),所以Nginxconfiguration看起来是正确的。 但是,如何将Unicorn / Integrityconfiguration为应用程序根目录进行识别/完整性? 将重写规则添加到Nginx将不起作用,因为Integrity会以/完整性构buildURL,所以CSS,JavaScript和链接将被打破。 完整性是一个Sinatra应用程序,所以也许有一个标准的方法来做到这一点。

模块化Sinatra应用程序在Passenger下返回404

我有一个模块化的Sinatra应用程序,在机架上执行时运行良好。 config.ru文件定义如下: map '/' do run My::Controllers::Default end map '/api' do run My::Controllers::Api end 当我运行nginx /乘客下的应用程序时,我什么也得不到404,即使是'/'路线。 怀疑路由有问题,我修改config.ru如下: run My::Controllers::Default 重新启动nginx后,我被提供了应用程序的默认页面。 然而,应用程序的默认页面到达apipath来获取一些文档显示,该部分返回404。鉴于config.ru能够运行默认控制器,我敢肯定,这个问题没有什么做能够加载所有相关的ruby文件 – 这似乎是在我发现的其他相关问题的问题。 考虑到这一点,我修改config.ru如下: map '/api' do run My::Controllers::Api end run My::Controllers::Default 在这一点上,我回到了404甚至“/”路线。 看起来map语句令Web服务器感到困惑,并且无法find正确的路由。 如果我只是使用机架运行应用程序,一切都如预期的那样,所以我真的不知所措。

用OS X上的Phusion Passenger + Sinatra + Nginx修复权限错误

我试图让Phusion Passenger在Nginx上与Sinatra一起工作,而且我遇到了和前面的问题一样的错误。 关于Nginxconfiguration的Sinatra – 怎么了? 我确定修复是一样的。 我只需要更改Nginx正在运行的用户的权限,以便能够读取正确目录的内容。 先前的问题被标记为回答,但没有给出他们如何解决问题的具体细节。 我需要知道, 1.如何识别用户正在运行的nginx下 2.如何让该用户读取我的应用程序目录(/ opt / nginx / html / sinatratest) 注意:我可以设置并运行一个Rails应用程序,并获得Rails欢迎屏幕没有问题,所以我知道我已经设置和工作。 编辑:我运行Mac OS X 10.6 这是我的文件 应用 #myapp.rb require 'sinatra' get '/' do 'Hello world!' end configuration #config.ru require 'rubygems' require 'sinatra' require 'myapp.rb' run Sinatra::Application Nginx的configuration块 server { listen 8889; server_name localhost; root html/sinatratest passenger_enabled on […]

为什么在nginx下使用Sinatra与Passenger发生404错误?

我有一个在本地运行良好的基于​​Sinatra的应用程序。 我把它移动到一个基于nginx的服务器与Passenger,现在我所有的应用程序/public文件的链接都返回404错误。 主应用程序运行后,能够访问正确呈现的/view的HAML模板。 文件存在,权限正确; 我可以打开并编辑它们,所以我知道它们在那里。 在我的HAML模板中,我指的是我无法像这样访问的文件: %script{ :src => 'js/jquery.js' } %link{ "rel" => "stylesheet", "href" => "styles/input.css" } 我的config.ru已经经历了很多突变,而我试图find问题。 目前我有: require 'sinatra' require './peering_template.rb' root_dir = File.dirname(__FILE__) # disable :run # set :root, root_dir # set :views, File.join(File.dirname(__FILE__), 'views') # set :environment, (ENV['RACK_ENV'] ? ENV['RACK_ENV'].to_sym : :development) run Sinatra::Application 该应用程序存在于/home/apps/peering_template 。 网页空间是/home/webapps 。 在/home/webapps这样的软链接: […]

如何有select地清除Sinatra + Nginx + Phusion Passenger的caching?

我有一个与Phusion Passenger一起运行在nginx上的模块化Sinatra应用程序。 当我改变我的应用程序(尤其是用于生成页面的一些YAML文件)时,我希望能够清除我的caching中受影响的部分(并且在/public保留其他部分 -我知道我可以清理整个caching,但我希望不会)。 谢谢!

无法使用–from-code选项创buildOpenShift应用程序

我正在尝试使用–from-code选项来创build一个OpenShift应用程序来从GitHub获取应用程序代码。 我创build了两个不同的OpenShift快速入门 – 其中一个是–from-code选项,另一个则不起作用。 所以很明显,我在快速入门不能正常工作的地方做错了事情。 但是我看不出我做错了什么。 我得到error 504或an error occurred ,这两个都告诉我什么问题,并且似乎没有verbose标志来获取有关该错误的更多详细信息。 Tests-Mac:~ testuser$ rhc app create sonr diy-0.1 http://cartreflect-claytondev.rhcloud.com/reflect?github=smarterclayton/openshift-redis-cart –from-code https://github.com/citrusbyte/SONR.git The cartridge 'http://cartreflect-claytondev.rhcloud.com/reflect?github=smarterclayton/openshift-redis-cart' will be downloaded and installed Application Options ——————- Domain: schof Cartridges: diy-0.1, http://cartreflect-claytondev.rhcloud.com/reflect?github=smarterclayton/openshift-redis-cart Source Code: https://github.com/citrusbyte/SONR.git Gear Size: default Scaling: no Creating application 'sonr' … Server returned an unexpected error code: […]

使用(独angular兽和nginx)在rails app sub uri上部署sinatra应用程序

我有Rails应用程序运行在独angular兽+ nginx上。 下面是nginx.conf和unicorn.rbconfiguration。 nginx.conf upstream unicorn { server unix:/tmp/unicorn.todo.sock fail_timeout=0; } server{ listen 80 default deferred; #server_name localhost; root /var/www/demo/public; try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://unicorn; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; } unicorn.rb working_directory "/var/www/demo" pid "/var/www/demo/tmp/pids/unicorn.pid" stderr_path […]

不能加载这样的文件 – app.rb(LoadError)

刚刚部署了一个使用capistrano的ruby应用程序。 我很确定我照例做了一切事情。 乘客虽然输出以下内容: cannot load such file — app.rb (LoadError) config.ru:1:in `require' config.ru:1:in `block in <main>' /home/deploy/apps/blog/shared/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval' /home/deploy/apps/blog/shared/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize' config.ru:1:in `new' config.ru:1:in `<main>' /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:108:in `eval' /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:108:in `preload_app' /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:153:in `<module:App>' /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>' /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:28:in `<main>' **Application root** /home/deploy/apps/blog/current app.rb实际上在这个目录中。

如何使用Nginx,Passenger,Sinatra创build多个位置

我有一个服务器部分,看起来像: server { listen 80; server_name arch; root /data/apps/production/fentonGem2/current/public; passenger_enabled on; } 这工作正常。 不过,我想部署两个或更多的应用程序到相同的server_name和listen端口。 所以大概我会使用像这样的东西: server { listen 80; server_name arch; location /app1 { root /data/apps/production/fentonGem2/current/public; passenger_enabled on; } location /app2 { root /data/apps/production/fentonGem3/current/public; passenger_enabled on } } 但是这不起作用。 有谁知道我可以部署两个单独的应用程序,并达到他们: http://domain.com/app1/ 和: http://domain.com/app2/ 该设置使用Nginx,Phusion Passenger,Rack和Sinatra。 更新: 感谢您的回应,但我发现他们和方法没有帮助,虽然也许我不是很了解它。 这似乎是我必须在另一个应用程序中部署一个应用程序,这看起来很不洁净。 我最终采取了独立的server部分,然后更新我的/etc/hosts文件具有相同的IP地址的服务器别名。 所以现在我有: http://app1/ 和: http://app2/ 和服务器部分,看起来像: server […]

Sinatra:热码推动生产?

当我将新代码从我的Sinatra应用程序推送到我的生产服务器时,我正在通过触摸加载新更改的tmp/restart.txt触发乘客重新启动。 问题是这个网站在这个过程中基本上停了10秒。 我如何设置我的服务器,以便我可以完全避免任何宕机? 也就是说,我希望应用程序继续提供旧版本的代码,直到新代码完全加载,然后立即切换到新代码。 使用霰弹枪或sinatra / reloader不会在这里工作,因为这是一个生产环境。 最后,如果答案取决于应用程序服务器,我会对如何与独angular兽和乘客进行交stream感兴趣。