Tag:

Thin / Capistrano无法连接到数据库

我正在尝试设置我的Ruby on Rails应用程序以部署到Thin集群。 当我使用bundle exec thin start -C config/thin.yml在服务器上手动启动瘦集群时,一切正常。 但是当我通过Capistrano运行相同的命令时,它就会死掉并显示日志: /shared/bundle/ruby/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection’: database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified) 我很茫然,我使用capistrano脚本中定义的相同用户帐户登录服务器。 我的capistrano瘦任务: namespace :deploy do task :start do run “cd #{current_path}; bundle exec thin start -C config/thin.yml” end task :stop do run “cd #{current_path}; bundle exec thin stop -C config/thin.yml” end task :restart do run “cd […]

服务器重启后设置思维sphinx(Rails项目)

问题:我试图在服务器重启后再次运行sphinx。 当我尝试启动它时似乎没有sphinx.conf文件: >searchd Sphinx 2.0.4-release (r3135) Copyright (c) 2001-2012, Andrew Aksyonoff Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com) FATAL: no readable config file (looked in /etc/sphinxsearch/sphinx.conf, ./sphinx.conf). 我跑了: rake thinking_sphinx:configure rake thinking_sphinx:index rake thinking_sphinx:start 问题是由于某种原因没有创建etc / sphinxsearch / sphinx.conf文件…我是Thinking_sphinx的新手,这可能不是唯一的问题(与网站有关),但似乎没有设置充分。 有关输出和更多信息,请阅读以下内容: 背景信息:我正在开展一个我最初没有设置的项目。 我们重新启动服务器以查看我们在常量文件中所做的一些更改。 但重启后,当您导航到该站点时,项目不再显示。 当你输入直接的IP地址时,它只是说“欢迎来到Nginx”。 端口是打开的并通过我们的托管服务器工作,所以我被告知我必须重新启动一些服务。 我遇到的一个问题是think_sphinx。 这是我引用的sphinx网站的rake任务 。 以及狮身人面像的常见配置问题 。 我设置了sphinx.yml开发路径(我们没有使用生产)。 然后我跑了 >rake thinking_sphinx:index 即使输出一些警告,它似乎也有效: […]

是puma唯一的multithreading导轨4 http服务器?

我已经将我们的堆栈转换为Rails 4(是的!) 我希望利用线程安全的代码。 Puma工作起床,停止它似乎是一个不同的问题:( Puma是唯一的multithreading导轨吗? Thin -> EventMachine Unicorn -> Forking Puma -> multi-threaded Mongrel -> don’t care Webbrick -> don’t care

使用批处理脚本在Windows上启动瘦服务器的多个实例

我正在编写一个脚本,以便在Windows中的rails应用程序上自动部署ruby。 除了瘦集群启动之外,我拥有一切自动化function; 事实certificate,Windows不支持守护进程,所以在调用thin时我不能使用-servers命令。 我发布的上一个问题: 在Windows上启动Thin集群 我现在正在寻找另一种方法来以编程方式获取三个实例。 有谁知道我怎么能够做到这一点? 谢谢你的时间!

生产环境中的rack-zippy和选项-d不提供静态资产

我这里有一个非常奇怪的问题。 我在我的rails应用程序中使用rack-zippy gem,如果我在没有预编译资产的development环境中启动它,它就像一个魅力。 使用-d param而不使用。 在生产模式(相同的机器,相同的项目,相同的目录,相同的gem),它也有效。 但是,如果我使用-d param( bundle exec rails server -d )启动它来守护服务器,则不会提供预编译的资产。 可以用thin和webrick重现,但不与unicorn 。 日志说: ActionController::RoutingError (No route matches [GET] “/assets/application-b9b75968aed42128cfd75fb78df1e4d1.js”): 但: $ l public/assets/application-b9b75968aed42128cfd75fb78df1e4d1.js -rw-r–r– 1 public/assets/application-b9b75968aed42128cfd75fb78df1e4d1.js 来自config / environments / production.rb: config.serve_static_assets = true 来自config / application.rb: config.middleware.swap(ActionDispatch::Static, Rack::Zippy::AssetServer) 和: $ rake middleware use Rack::Sendfile use Rack::Zippy::AssetServer (…) 我现在有些困惑。 有任何想法吗?

无法通过远程计算机重新启动瘦身

我使用Thin来为位于测试机器上的rails应用程序提供服务。 我希望能够从本地计算机停止/启动瘦,但以下操作不起作用: ssh luc@test_machine ‘/home/luc/.rvm/gems/ruby-1.9.3-p125/bin/thin -v’ 我收到以下错误消息: /home/luc/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs’: Could not find thin (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError) from /home/luc/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec’ from /home/luc/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems.rb:1230:in `gem’ from /home/luc/.rvm/gems/ruby-1.9.3-p125/bin/thin:18:in `’ 为什么我得分时只列出6颗gem? 当我在ssh中连接到测试服务器时: which thin 给了我正确的道路: /home/luc/.rvm/gems/ruby-1.9.3-p125/bin/thin (question updated with correct path) UPDATE 我在服务器上创建了一个基本的test.sh脚本: #!/bin/bash # Update path with ruby / gem export PATH=$PATH:/home/luc/.rvm/rubies/ruby-1.9.3-p125/bin:/home/luc/.rvm/gems/ruby-1.9.3-p125/bin/ […]

瘦身以阅读已配置的用户环境

我正在使用ubuntu下的参数集开始瘦 chdir: /var/www/myuser/current rackup: /var/www/myuser/current/config.ru environment: production address: 0.0.0.0 port: 3000 timeout: 30 log: log/thin.log pid: tmp/pids/thin.pid max_conns: 1024 max_persistent_conns: 512 require: [] wait: 30 servers: 3 daemonize: true user: myuser group: myuser 我想为“myuser”定义一组环境变量,以便可以在我使用ENV[‘MY_VAR’]在Thin中部署的机架应用程序中访问它们。 我可以在不将命令逐个添加到命令行的情况下进行一些配置吗?

将HTML表单发布到remote.cgi – 用Ruby编写?

我正在一个托管在微软办公室现场服务上的网站上工作。 它有一个联系表格,使访客可以与业主联系。 我想编写一个位于单独服务器上的Ruby脚本,表单将POST到该脚本。 它将解析表单数据并通过电子邮件将详细信息发送到预设地址。 然后,该脚本应将浏览器重定向到确认页面。 我有一台运行nginx和postfix的ubuntu hardy机器。 安装了Ruby,我们将看到使用Thin和它的Rackfunction来处理脚本。 现在是编写脚本,我画了一个空白。 已经很长时间了,如果我没记错的话,这个过程是这样的。 读取HTTP标头 解析参数 发送电子邮件 发送重定向标头 从广义上讲,问题已得到解答。 弄清楚如何使用答案比预期更复杂,我认为值得分享。 第一步: 我非常突然地了解到nginx并不直接支持cgi脚本。 您必须使用其他一些进程来运行脚本并获取nginx来代理请求。 如果我在php中这样做(后来我认为这将是一个更自然的选择)我可以使用像php-fcgi这样的东西,并期望生活会非常直接。 Ruby和fcgi感觉相当令人生畏。 但如果我们放弃在运行时加载这些东西的理想,那么Rack可能是最直接的解决方案,而Thin包含我们所需要的一切。 学习如何使用它们制作基本的小应用程序对像我这样的相对Rails新手来说是非常有益的。 Rails应用程序的基础似乎隐藏了很长时间,而Rack帮助我进一步拉开窗帘。 尽管如此,遵循耶胡达的建议并查找sinatra是另一个惊喜。 我现在有一个在Thin实例中运行的基本sinatra应用程序。 它通过unix socket与nginx通信,我收集的是标准方式。 Sinatra以非常优雅的方式处理不同的请求和路由到应用程序。 您只需要一个get ‘/’ {}来开始处理对虚拟主机的请求。 要添加更多(以干净的方式),我们只需在主文件中包含routes / script.rb即可。 # cgi-bin.rb # main file loaded as a sinatra app require ‘sinatra’ # load cgi routes require ‘routes/default’ require ‘routes/contact’ […]

单线程仍然处理并发请求?

Ruby进程是单线程。 当我们使用瘦服务器启动单个进程时,为什么我们仍然能够处理并发请求? require ‘sinatra’ require ‘thin’ set :server, %w[thin] get ‘/test’ do sleep 2 <—- "success" end 什么是瘦内部可以处理并发请求? 如果是由于事件 – 机器框架,上面的代码实际上是一个不用于EM的同步代码。

Sinatra – 从请求终止服务器

我希望能够从请求中终止Sinatra应用程序,例如使用以下路由: post ‘/terminate’ do Thread.current.kill end 像这样实现它有点突然。 我宁愿完成请求,返回HTTP OK消息,然后Sinatra优雅地关闭。 这样做有钩子吗? 编辑: 我的应用程序是一个轻量级的模拟服务器,用于接收webhook通知。 我将在同一台机器(不同的端口)上使用这样的多个服务器,因此需要避免任何全局启动/停止方法。 我的要求是由每个服务器必须在其自己的Ruby实例中运行的事实驱动的,因此除了通过REST接口之外,我的测试和服务器之间没有通信。 我正在使用默认的thin服务器来运行Sinatra。 到目前为止,我的代码只是Sinatra :: Base的一个子类,开始使用run! 从代码中。 这很简单,我可以制作独立的脚本来实例化每个服务器,我只需要有一种方法来阻止它们。