为什么 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 这些部署对我来说很陌生,所以我确定问题出在椅子和键盘之间...
- 使用 Rails 4.1.8 (nginx 1.6.2/Passenger 4.0.53/Ruby 2.1.2) 创建了一个名为
huginn
的新 Webfaction 应用程序。
- 克隆 huginn 到 Webfaction 初始化的
hello_world
示例应用旁边的自己的文件夹中。 (~/webapps/huginn/huginn/
)
- 编辑
~/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
。
- 已编辑
~/webapps/huginn/bin/start
以调整路径(见下文)。
- 已正确复制和配置 Huginn 的
.env
,指向具有有效凭据的新 MySQL 数据库。添加了一个 运行domly 生成的 APP_SECRET_TOKEN
,设置主机名和电子邮件配置。
- 使用 Webfaction's instructions.
将应用程序容器、路径和 gem 添加到 PATH
- 来自
~/webapps/huginn/huginn
、运行、gem2.1 install bundle
、ruby2.1 bin/bundle
、ruby2.1 bin/bundle exec rake db:migrate
、ruby2.1 bin/bundle exec rake db:seed
,一切顺利;安装到 huginn 目录的依赖项,填充的数据库等
- 运行
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)
- 返回 运行
~/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 内存限制的墙,所以它转向了其他问题。
我可以假脱机 VPS 或部署到 PaaS,但我决定获得 Huginn working on my Webfaction 帐户,因为我很确定这是可能的,但我只是没有得到 rails 部署。
经过几个小时的黑客攻击,我最终得到了一个 运行ning 应用程序 whose Agents do nothing。我无法执行 运行 foreman start
应该可以解决问题的神奇命令,所以我不确定还能做什么。
我是怎么来到这里的
我习惯了 PHP 这些部署对我来说很陌生,所以我确定问题出在椅子和键盘之间...
- 使用 Rails 4.1.8 (nginx 1.6.2/Passenger 4.0.53/Ruby 2.1.2) 创建了一个名为
huginn
的新 Webfaction 应用程序。 - 克隆 huginn 到 Webfaction 初始化的
hello_world
示例应用旁边的自己的文件夹中。 (~/webapps/huginn/huginn/
) - 编辑
~/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
。 - 已编辑
~/webapps/huginn/bin/start
以调整路径(见下文)。 - 已正确复制和配置 Huginn 的
.env
,指向具有有效凭据的新 MySQL 数据库。添加了一个 运行domly 生成的APP_SECRET_TOKEN
,设置主机名和电子邮件配置。 - 使用 Webfaction's instructions. 将应用程序容器、路径和 gem 添加到 PATH
- 来自
~/webapps/huginn/huginn
、运行、gem2.1 install bundle
、ruby2.1 bin/bundle
、ruby2.1 bin/bundle exec rake db:migrate
、ruby2.1 bin/bundle exec rake db:seed
,一切顺利;安装到 huginn 目录的依赖项,填充的数据库等 - 运行
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)
- 返回 运行
~/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 内存限制的墙,所以它转向了其他问题。