问题标签 [thin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2684 浏览

ruby-on-rails - Capistrano + Thin + nginx,用户不允许 sudo howto?

我有这样一个场景,我想使用 capistrano 来部署我的 ruby​​ on rails 应用程序:

  1. Web 应用程序位于一个瘦集群上,配置文件存储在 /etc/thin 下。在 /etc/init.d/thin 中还有一个 init 脚本,因此只要我的服务器需要重新启动,它就会自动启动
  2. nginx 也以同样的方式执行(作为一个 init 脚本守护进程)
  3. 为了确保万一有人入侵了我的网络服务器,我不希望他们做一些太可怕的事情,所以不允许网络用户使用 sudo。
  4. Thin 和 nginx 都以网络用户身份运行以强制执行此类安全性

现在,当我需要进行部署时,我需要将文件安装在 /home/webuser/railsapps/helloworld 下,然后我需要 cap 脚本重新启动我的瘦身。我想保留网络用户拥有的所有文件,因此 cap 脚本主要用户以网络用户身份运行。现在当我想重新启动瘦守护程序时出现问题,因为 webuser 不能 sudo。

我正在考虑是否可以调用两个单独的会话- webuser 进行文件部署,然后调用一个特殊的 sudoer 来重新启动守护进程。谁能给我一个示例脚本?

0 投票
2 回答
4855 浏览

ruby-on-rails - RubyOnRails 应用程序的 Thin + Nginx 生产就绪组合

我最近在我的部署服务器上安装了 Nginx + Thin,但我不确定这在最后的请求和响应情况下会如何执行。让我们说每秒 1000/req。

所以瘦的速度很好,每秒 10-100 个请求

我想知道请求/响应集群上​​正在处理的大量数据。

指导我这个:-)

0 投票
3 回答
1445 浏览

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

我正在开发一个托管在 Microsoft 的 Office Live 服务上的网站。它有一个联系表格,使访客能够与所有者取得联系。我想编写一个 Ruby 脚本,它位于一个单独的服务器上,表单将发布到该脚本。它将解析表单数据并将详细信息通过电子邮件发送到预设地址。然后该脚本应将浏览器重定向到确认页面。

我有一台运行 nginx 和 postfix 的 ubuntu hardy 机器。Ruby 已安装,我们将了解如何使用 Thin 及其 Rack 功能来处理脚本。现在到了写剧本的时候了,我画了一个空白。

已经很长时间了,如果我没记错的话,这个过程是这样的;

  • 读取 HTTP 标头
  • 解析参数
  • 发送电子邮件
  • 发送重定向标头

从广义上讲,这个问题已经得到了回答。弄清楚如何使用答案比预期的要复杂,我认为值得分享。

第一步:

我突然了解到 nginx 不直接支持 cgi 脚本。您必须使用其他一些进程来运行脚本并让 nginx 代理请求。如果我在 php 中执行此操作(事后看来,我认为这将是一个更自然的选择),我可以使用 php-fcgi 之类的东西,并期望生活会非常简单。

Ruby 和 fcgi 感觉相当令人生畏。但是,如果我们放弃在运行时加载这些东西的理想,那么 Rack 可能是最直接的解决方案,而 Thin 包含我们需要的一切。学习如何用它们制作基本的小应用程序对像我这样的 Rails 新手来说非常有益。Rails 应用程序的基础似乎隐藏了很长时间,而 Rack 帮助我进一步揭开了帷幕。

尽管如此,听从耶胡达的建议并查阅辛纳屈,却是另一个惊喜。我现在有一个在 Thin 实例中运行的基本 sinatra 应用程序。它以我收集的标准方式通过 unix 套接字与 nginx 通信。Sinatra 提供了一种非常优雅的方式来处理进入应用程序的不同请求和路由。您所需要的只是get '/' {}开始处理对虚拟主机的请求。要添加更多(以干净的方式),我们只需将 routes/script.rb 包含到主文件中。

这些路由文件将调用存储在单独的类库中的功能:

弄清楚这么简单的事情的纯粹恐惧会伴随我一段时间。我期待冷静地让 nginx 知道 .rb 文件将被执行并继续执行它。现在这个小 sinatra 应用程序已经启动并运行了,如果我将来想添加额外的功能,我可以直接投入使用。

执行:

ContactPost 类处理消息传递方面。它只需要知道请求中的参数和电子邮件的目标。ContactPost::action 启动一切并返回控制器重定向到的地址。

有一个单独的 ContactTarget 类,它执行一些身份验证以确保指定的目标接受来自 request.referrer 中给出的 URL 的消息。这是在 ContactTarget::accept? 正如我们可以从 ContactPost::action 方法中猜到的那样;

ContactPost::successful 和 ContactPost::failed 通过将 HTML 表单提供的路径与 request.referer URI 结合起来,各自返回一个重定向地址。因此,所有行为都在 HTML 表单中指定。未来使用此脚本的网站只需在用户自己的 ~/cgi/contact.conf 中列出,它们就会消失。这是因为 ContactTarget 在 /home/:target/cgi/contact.conf 中查找详细信息。也许有一天这将是不合适的,但现在它对我的目的来说还不错。

send 方法很简单,它创建一个简单的 Email 类的实例并将其发送出去。Email 类几乎基于 Ruby net/smtp 文档中给出的标准用法示例;

我需要做的就是构建应用程序,让 nginx 知道要与哪个套接字通信,然后我们就走了。

感谢大家对正确方向的有用指示!辛纳特拉万岁!

0 投票
3 回答
4437 浏览

php - 使用瘦驱动程序的 PHP 和 Oracle

是否有可用于 PHP 的 Oracle 瘦驱动程序(例如作为扩展)?

我无法安装 OCI 驱动程序/客户端,但需要能够访问 Oracle 数据库。

0 投票
1 回答
419 浏览

ruby - Ramaze 使薄薄的崩溃

所以,我只是在为一个新项目尝试 Ramaze,我想知道为什么它不适用于 Thin,但会使用 ramaze 启动(我猜是 webrick)。这就是它给我的东西:

/opt/local/lib/ruby1.9/gems/1.9.1/gems/thin-1.2.2/lib/thin/request.rb:50:[BUG] 未知类型 0x22(给定 0xc)

这是它正在谈论的那一行:

@parser = Thin::HttpParser.new

这不是太有帮助。

有没有人有任何想法?谢谢!

编辑:实际上,我记得当我尝试安装最新版本的 MySQL gem 时收到此错误。我必须重新安装它,确保在“make install”之前执行“make clean”。但是,thin 是从 gem 安装的,所以我不确定我怎么能在这里做到这一点......

0 投票
2 回答
664 浏览

ruby - Ruby 无法与 MS C 运行时链接 (msvcr90.dll)

我试图在 Windows/XP 上运行 Ruby Thin 演示应用程序时遇到错误,即 Windows 找不到适用于 Ruby 1.8.7 的“msvcr90.dll”——我找到了一个可再发行组件并将其放在我要面对的路径中信息如下:

今天早些时候,我运行了一些 eventmachine 演示 ok,所以我认为问题出在 Thin。

Ruby 堆栈转储不是那么有用……(包括在下面)。有治愈的方法吗?

我查看了其他 MSVCR90.DLL 帖子,这些治疗方法都不起作用。MSVCR90.DLL 现在在 system32 中——出现“错误链接”错误。

提前致谢。

... 将要

0 投票
6 回答
4718 浏览

java - Oracle ResultSetMetaData getPrecision/getScale

我正在使用 Oracle 的 JDBC 瘦驱动程序 (10.2.0.3) 连接到 Oracle 10g 数据库。我想获取有关数据库列的信息,所以我使用ResultSetMetaData。我需要的最重要信息是列的类型和长度,所以我使用getColumnTypegetPrecisiongetScale方法。

select * from tablename如果列类型是“简单”,则它适用于简单查询 ( ),如VARCHAR2(50), NUMBER(5), NUMBER(6,2). 如果我有一个更复杂的查询 ( select count(*) from tablename) 或基于包含一些复杂计算的视图的查询,这些方法会给出奇怪的结果,例如:

  • getScale: -127
  • 两者getPrecision都是getScale0
  • getPrecision:-1

oracle.jdbc.J2EE13Compliant连接属性设置为true(如几个网页所建议的那样)消除了 getScale=-127 但仍返回 0/0 结果。

很可能我必须为这些奇怪的结果创建一个解决方法,但首先我至少需要一份关于 Oracle ResultSetMetaData 行为的综合文档。例如,对于所有 SQL 类型,具有 getPrecision/getScale 含义的巨大表会很棒。某处有这样的文档吗?

0 投票
1 回答
2309 浏览

ruby-on-rails - 可以将 Apache BalancerMember 配置为使用 unix 域套接字吗?

我正在使用 Apache 代理平衡器指令来连接一组瘦服务器(用于 Rails)。

像这样:

但是,thin 也可以配置为使用 unix 域套接字。

所以我希望能够做类似的事情:

但阿帕奇没有接受它。显然nginx可以做到,但我真的很想使用Apache。

有办法吗?

0 投票
1 回答
1177 浏览

ruby - Ruby、Sinatra 和流媒体

我正在疯狂地尝试调试为什么 iTunes 不接受我发送给它的数据(作为 DAAP 服务器)——你可以在 github 页面上看到我正在尝试做的事情。

在我的响应和来自 mt-daapd(iTunes 确实接受)的相同响应之间,我能找到的唯一区别是 mt-daapd 响应被分解成小数据包,而不是一个大数据包(我使用 Wireshark 进行数据包闻)

有谁知道如何告诉 Sinatra(在 Thin 上)这样做?或者知道为什么 iTunes 对 DAAP 服务器的响应如此挑剔:P

0 投票
1 回答
917 浏览

ruby - 如何在 CGI 脚本中使用 ruby​​ Thin?

我编写了一些 ruby​​ CGI 脚本(使用 Ruby CGI 类),我使用 lighttpd 从我的生产服务器提供这些脚本。我想在我的开发服务器上使用 Thin 测试它们。基本上,我想将我所有的 CGI 脚本放在一个目录中,然后在该目录中开始精简。然后,对http://localhost:3000/<script >的任何请求都应该在当前目录中执行 <script> 并返回结果。如果瘦有这样做的内置方式,我找不到它。如果您知道自己在做什么,我会想象机架配置文件很容易,但我不知道。

更新:

这个机架文件似乎工作。我不确定这是否是最好的解决方案,但对于开发环境来说应该没问题。