问题: 我想在服务器重启后再次运行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。这是我引用的rake tasks for sphinx网站。以及common configuration issues for sphinx。
我设置了sphinx.yml开发路径(我们没有使用生产)。然后我跑了
>rake thinking_sphinx:index
即使输出一些警告似乎也有效:
Generating Configuration to /home/potato/streetpotato/config/development.sphinx.conf
(0.2ms) SELECT @@global.sql_mode, @@session.sql_mode;
Sphinx 2.0.4-release (r3135)
Copyright (c) 2001-2012, Andrew Aksyonoff
Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/home/potato/streetpotato/config/development.sphinx.conf'...
indexing index 'bar_core'...
WARNING: collect_hits: mem_limit=0 kb too low, increasing to 14080 kb
collected 249 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 249 docs, 32394 bytes
total 0.254 sec, 127298 bytes/sec, 978.49 docs/sec
indexing index 'bar_delta'...
WARNING: collect_hits: mem_limit=0 kb too low, increasing to 14080 kb
collected 0 docs, 0.0 MB
total 0 docs, 0 bytes
total 0.003 sec, 0 bytes/sec, 0.00 docs/sec
skipping non-plain index 'bar'...
indexing index 'synonym_core'...
WARNING: collect_hits: mem_limit=0 kb too low, increasing to 13568 kb
collected 3 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 3 docs, 103 bytes
total 0.003 sec, 30356 bytes/sec, 884.17 docs/sec
indexing index 'synonym_delta'...
WARNING: collect_hits: mem_limit=0 kb too low, increasing to 13568 kb
collected 0 docs, 0.0 MB
total 0 docs, 0 bytes
total 0.002 sec, 0 bytes/sec, 0.00 docs/sec
skipping non-plain index 'synonym'...
indexing index 'user_core'...
WARNING: collect_hits: mem_limit=0 kb too low, increasing to 13568 kb
collected 100 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 100 docs, 3146 bytes
total 0.013 sec, 239348 bytes/sec, 7608.03 docs/sec
skipping non-plain index 'user'...
total 11 reads, 0.000 sec, 3.8 kb/call avg, 0.0 msec/call avg
total 37 writes, 0.000 sec, 2.5 kb/call avg, 0.0 msec/call avg
然后我跑了
>rake thinking_sphinx:configure
Generating Configuration to /home/potato/streetpotato/config/development.sphinx.conf
(0.2ms) SELECT @@global.sql_mode, @@session.sql_mode;
最后运行:
>rake thinking_sphinx:start
Started successfully (pid 29623).
现在即使我的日志说:
[Fri Nov 16 19:34:29.820 2012] [29623] accepting connections
仍然没有生成sphinx.conf文件,当我尝试使用searchd命令时,它仍然给我错误...
>searchd --stop
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).
我很茫然,我知道这是超长的,但这只是因为我迷失了并试图提供尽可能多的信息。我得到了更多,然后我昨天做了这个,但它似乎仍然没有完全工作。我可能还需要做更多设置与独角兽或薄。我只想弄清楚如何让网站重新启动并再次运行...如果任何人遇到类似的问题,他们的网站在重新启动后关闭并重新启动(特别是Nginx和独角兽的铁轨项目或使用sphinx瘦身)任何见解都将受到赞赏。
谢谢,
艾伦
答案 0 :(得分:0)
冷静下来!! : - )
首先,您不需要/etc/sphinxsearch/sphinx.conf
个文件;这只是searchd
在未指定任何配置文件时尝试使用的默认文件。
正如您的日志输出所示,您的rails应用程序在启动/home/potato/streetpotato/config/development.sphinx.conf
进程时正在使用searchd
文件。
在您的开发计算机上运行ps -fe | grep searchd
;你应该看到这样的东西作为输出:
501 14128 1 0 0:00.00 ttys004 0:00.00 searchd --pidfile --config /home/potato/streetpotato/config/development.sphinx.conf
501 14130 13546 0 0:00.00 ttys004 0:00.01 grep searchd
所以rails app使用searchd
参数调用--config /home/potato/streetpotato/config/development.sphinx.conf
,以指定不同的conf文件。
从您的日志中可以清楚地看到thinkingsphinx
正常运行。您可以登录rails console
并在其中定义了thinking_sphinx indexes的其中一个模型上运行search
方法,以进一步确认。
例如:如果您的应用具有Article
模型,如上面的链接所示,则以下命令将显示其中包含National Parks
的所有文章:
$ rails console
> Article.search( "National Parks" )
=> [#<Article id: 15,... >, #<Article id: 22,...>,...]
真正的问题是重启服务器后应用程序没有显示。这与运行良好的thinking sphinx
无关。
尝试回滚上面提到的常量文件中所做的所有更改,并确保应用程序正常运行。然后开始逐个进行更改,并隔离一个破坏应用程序的更改。
答案 1 :(得分:0)
所以是的,这是ThinkingSphinx(恕我直言)中的一个漏洞 - 您可以使用各种rake任务(根据需要生成配置)启动sphinxd
服务器...但这不起作用生产
在我去年工作的项目(在Linux服务器上运行)上,我们创建了一个/etc/init.d
脚本来启动sphinxd
- 它包含选项,包括配置文件的路径。我们使用capistrano进行了部署,并将生成的代码放在app/shared
- 源树之外的目录中。我相信有一些预定义的capistrano任务会在模型改变时重建特定于Rails的配置文件,否则会影响Sphinx的功能(与你提到的rake任务相同)。
对于我们来说,这是我们长时间推迟网站搜索的案例之一,我们的一位开发人员在一个下午“全部设置”了。部署它需要做更多的工作。
(刚刚看到来自@ prakash-murthy的回答 - 他提供了一些有关如何在初始化sphinxd时指定配置路径的详细信息)。但诀窍是让它在系统启动时启动并指向ThinkingSphinx生成的配置。)
答案 2 :(得分:0)
好的,所以在一天半之后,我终于把它全部搞定了并让它运行起来(它更像是狮身人面像)。我还必须在后台启动并运行nginx和unicorn,因为我们没有设置脚本以在重新启动服务器时重新启动它们...
重新启动服务器时,您必须重新启动某些服务才能访问该应用程序:
1)thinking_sphinx
参考网站
http://pat.github.com/ts/en/rake_tasks.html
http://www.claytonlz.com/2010/09/thinkingsphinx-conf-problems/
a)create/modify app/config/sphinx.yml
development:
morphology: stem_en
port: 9312
bin_path: "/usr/bin" # set up the path to binary for searchd
searchd_binary_name: searchd
indexer_binary_name: indexer
#mem_limit: 128M
test:
morphology: stem_en
port: 9312
mem_limit: 128M
production:
morphology: stem_en
port: 9312
mem_limit: 512M
# the searchd ip, in case it's not on localhost
# address: 10.10.0.0
# this is by default included in db/sphinx
# searchd_file_path: "/path/to/shared/folder/sphinx"
b)rake thinking_sphinx:index
c)rake thinking_sphinx:configure # creates config/development.sphinx.conf which helps define sphinx's indexing
d)# then you have to start sphinx, there are 2 ways to do this
rake thinking_sphinx:start
rake thinking_sphinx:stop
OR
searchd
searchd --stop
# only the rake commands worked for me, when I tried to run searchd
# I got an error FATAL: no readable config file (looked in /etc/sphinxsearch/sphinx.conf, ./sphinx.conf).
# for some reason we dont have a sphinx.conf file, but the rake commands work without it
e)# once you start thinking_sphinx check log/searchd.log file for the line
[Fri Nov 16 19:34:29.820 2012] [29623] accepting connections
2)nginx
参考网站:
http://wiki.nginx.org/CommandLine
a) check that nginx is up and running
i) start server
# to check where nginx resides type in this into server console
which nginx
# whatever path it gives you is how you start the server this is my path
/usr/sbin/nginx
ii) stop server
/usr/sbin/nginx -s stop # use the path given by which command
3)独角兽(启动应用程序服务器)
参考网站:
http://codelevy.com/2010/02/09/getting-started-with-unicorn.html
a) test if unicorn will run after previous changes
unicorn_rails -p 3000
# the site should now be up and running, check that it is
# console should now log the different actions you do on the site
b) create unicorn.rb in config folder (if none is there)
# only start this step if the step above got the site running
# close the console or exit the process you started above
# contents of unicorn.rb
worker_processes 2 #(starts 2 child processes, not completely neccissary)
preload_app true
timeout 30
listen 3000
after_fork do |server, worker|
ActiveRecord::Base.establish_connection
end
c) run unicorn in the background
# make sure you exited the process above before running this
unicorn_rails -c config/unicorn.rb -D
# this was giving me an error that it said was logged by stderr
# I got the command to run by adding a command to the front
http://stackoverflow.com/questions/2325152/check-for-stdout-or-stderr
exec 2> /dev/null unicorn_rails -c config/unicorn.rb -D
d) (optional) check stats from starting unicorn
i) pgrep -lf unicorn_rails
#sample output
5374 unicorn_rails master -c config/unicorn.rb -D
5388 unicorn_rails worker[0] -c config/unicorn.rb -D # not needed currently
5391 unicorn_rails worker[1] -c config/unicorn.rb -D # not needed currently
ii) cat tmp/pids/unicorn.pid # from inside the streetpotato folder
#sample output
5374