我有一个nginx +乘客链为我的轨道应用程序。开始思考斯芬克斯在轨道服务器启动
现在,经过每次重新启动服务器,我需要在终端编写项目文件夹
rake ts:start
中,但我怎样才能使自动化呢?
这样,每个服务器重新启动后,思维狮身人面像自动启动,而不需要我的终端命令?
我使用Rails 3.2.8和Ubuntu 12.04。
我无法想象我可以尝试什么,请帮助我。
我该怎么做,给一些建议?
我有一个nginx +乘客链为我的轨道应用程序。开始思考斯芬克斯在轨道服务器启动
现在,经过每次重新启动服务器,我需要在终端编写项目文件夹
rake ts:start
中,但我怎样才能使自动化呢?
这样,每个服务器重新启动后,思维狮身人面像自动启动,而不需要我的终端命令?
我使用Rails 3.2.8和Ubuntu 12.04。
我无法想象我可以尝试什么,请帮助我。
我该怎么做,给一些建议?
有两种选择我可以想到。
/etc/init
?)。Monit和其他工具的问题在于,当你故意停止Sphinx(比如更新配置结构和相应的索引更改)时,它可能会在适当之前再次启动它。所以我认为你应该从这两个选项中的第一个开始 - 我只是不了解这种方法的更多细节。
我做了什么来解决同样的问题:
在config/application.rb
,添加:
module Rails
def self.rake?
[email protected]
end
def self.rake=(value)
@rake = !!value
end
end
在Rakefile
,加入这一行:
Rails.rake = true
最后,在config/initializers/start_thinking_sphinx.rb
地说:
unless Rails.rake?
begin
# Prope ts connection
ThinkingSphinx.search "test", :populate => true
rescue Mysql2::Error => err
puts ">>> ThinkingSphinx is unavailable. Trying to start .."
MyApp::Application.load_tasks
Rake::Task['ts:start'].invoke
end
end
(用你的应用名称替换上面的MyApp
)
似乎工作到目前为止,但如果我遇到任何问题,我会回到这里。
显然,上面的内容并不关心服务器保持运行状态。你可能想单独做这件事。或者可以使用Upstart来管理服务。
对我来说(rails4,mysql2,ts-3.1.0)它是'救援ThinkingSphinx :: ConnectionError'。 – contradictioned
我遵循@ pat的建议,并写了一个脚本,在服务器启动时启动ThinkingSphinx。你可以看到它作为一个要点 - https://gist.github.com/declan/4b7cc4fb4926df16f54c
我们使用Capistrano部署到Ubuntu 14.04,并且您可能需要修改路径和用户名以匹配您的服务器设置。否则,所有你需要做的是
/etc/init.d/thinking_sphinx
/etc/init.d/thinking_sphinx start
应该开始ThinkingSphinx为您的应用程序,并/etc/init.d/thinking_sphinx stop
应停止update-rc.d thinking_sphinx defaults
有上debian-administration.org好的帖子名为making scripts run at boot time有更多的细节。
如果您使用的是优秀的whenever宝石来管理你的crontab,你可以把
every :reboot do
rake "ts:start"
end
在
schedule.rb
,它似乎工作的伟大。我刚刚测试了一个运行Ubuntu 14.04的EC2实例。
谢谢!经过4个小时的失败'每当'它有助于解决我的问题!但我使用命令运行它: 'every:reboot do command“cd#{Dir.pwd} && RAILS_ENV =#{@ environment} bundle exec rake ts:restart” end' –
有一件事你可以在rails应用程序的初始化文件夹中创建一个文件ts_server_start.rb并在那里你可以使用'system'rake ts:start“'它会在应用程序初始化时自动启动 –
@Rajarshi但是如何成为如果它已经开始了?将很好地添加一些检查 – brabertaser19