为什么 Huginn 代理不对 Webfaction 采取行动?

Why won't Huginn agents act on Webfaction?

我可以假脱机 VPS 或部署到 PaaS,但我决定获得 Huginn working on my Webfaction 帐户,因为我很确定这是可能的,但我只是没有得到 rails 部署。

经过几个小时的黑客攻击,我最终得到了一个 运行ning 应用程序 whose Agents do nothing。我无法执行 运行 foreman start 应该可以解决问题的神奇命令,所以我不确定还能做什么。

我是怎么来到这里的

我习惯了 PHP 这些部署对我来说很陌生,所以我确定问题出在椅子和键盘之间...

  1. 使用 Rails 4.1.8 (nginx 1.6.2/Passenger 4.0.53/Ruby 2.1.2) 创建了一个名为 huginn 的新 Webfaction 应用程序。
  2. 克隆 huginn 到 Webfaction 初始化的 hello_world 示例应用旁边的自己的文件夹中。 (~/webapps/huginn/huginn/)
  3. 编辑 ~/webapps/nginx/conf/nginx.conf(来自 Webfaction 的初始化脚本)以指向我克隆的 huginn 文件夹而不是 hello_world。将 GEM_HOME 更改为 /home/foo/webapps/huginn/huginn/gems 而不是 /home/foo/webapps/huginn/gems,将 root 更改为 /home/foo/webapps/huginn/huginn/public,将 rails_env 更改为 production
  4. 已编辑 ~/webapps/huginn/bin/start 以调整路径(见下文)。
  5. 已正确复制和配置 Huginn 的 .env,指向具有有效凭据的新 MySQL 数据库。添加了一个 运行domly 生成的 APP_SECRET_TOKEN,设置主机名和电子邮件配置。
  6. 使用 Webfaction's instructions.
  7. 将应用程序容器、路径和 gem 添加到 PATH
  8. 来自~/webapps/huginn/huginn、运行、gem2.1 install bundleruby2.1 bin/bundleruby2.1 bin/bundle exec rake db:migrateruby2.1 bin/bundle exec rake db:seed,一切顺利;安装到 huginn 目录的依赖项,填充的数据库等
  9. 运行 ruby2.1 bin/bundle exec foreman start 失败:

16:50:03 web.1 | started with pid 7115
16:50:03 jobs.1 | started with pid 7116
16:50:06 jobs.1 | /home/foo/webapps/huginn/huginn/gems/gems/spring-1.1.3/lib/spring/server.rb:22:in `initialize': Permission denied @ rb_sysopen - /tmp/spring/e89e6bd5b6863aeed0fbb5c861b1fc2d.pid (Errno::EACCES)

  1. 返回 运行 ~/webapps/huginn/bin/stop~/webapps/huginn/bin/start,应用程序奇迹般地开始在我的浏览器中运行。除了特工,他们不按计划执行任何操作或尝试手动 运行 他们。

我怀疑我在环境变量和 ruby 版本方面遗漏了一些东西。各种 ruby 版本可用,但 ruby --version 输出 ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]。甚至我发现有不同版本的符号链接,所以 ruby2.1 --version 让我 ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]。我的猜测是该应用程序使用 Ruby 1.8.7,而我 运行 试图 install rvm to select a different ruby version——我没有通过 rvm install X.X.X 因为我不是无法安装 sudoer 和 libyaml-devel

得知我可以从已部署的应用程序目录 运行 ruby2.1 bin/rails s --port=22766 --environment=production 并在浏览器中再次 运行 再次安装该应用程序,我感到很兴奋——但完全相同无响应代理的问题。

看起来我真的很接近,但我错过了一些一直让 Huginn 的特工瘫痪的东西。 我错过了什么?


nginx.conf

env               GEM_HOME=/home/foo/webapps/huginn/huginn/gems;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    access_log  /home/foo/logs/user/access_huginn.log  combined;
    error_log   /home/foo/logs/user/error_huginn.log   crit;

    include         mime.types;
    passenger_root  /home/foo/webapps/huginn/gems/gems/passenger-4.0.53;
    passenger_ruby  /home/foo/webapps/huginn/bin/ruby;
    sendfile        on;

    passenger_max_instances_per_app  1;
    rails_spawn_method               conservative;
    passenger_max_pool_size 2;

    server {
        listen             22766;
        passenger_enabled  on;
        root               /home/foo/webapps/huginn/huginn/public;
        server_name        localhost;
        rails_env          production;
    }
}

~/webapps/huginn/bin/start

#!/bin/bash

PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/foo/bin RUBYLIB=/home/foo/webapps/huginn/huginn/lib:$RUBYLIB TMPDIR=/home/foo/webapps/huginn/tmp PASSENGER_TMPDIR=/home/foo/webapps/huginn/tmp GEM_HOME=/home/foo/webapps/huginn/huginn/gems /home/foo/webapps/huginn/nginx/sbin/nginx -p /home/foo/webapps/huginn/nginx/

感谢 John 在 Webfaction 的帮助,它归结为设置一个可以用我的帐户写入的自定义临时目录...

mkdir -p $HOME/tmp
export TEMP=$HOME/tmp

果然,运行 ruby2.1 bin/bundle exec foreman start 工作得很好,特工们突然活跃起来。

然后我很快就碰到了 512MB 内存限制的墙,所以它转向了其他问题。