我承认我已经在Ubuntu上拼凑了一个主要工作的生产设置,其中Capistrano来自官方文档(看起来过时且做了很多假设)以及各种过时的博客文章。无论如何,最后一个烦人的挂断是当我手工完成索引时(并且在部署时我非常肯定),但是Cron无法工作。
这是我的crontab:
$ crontab -l
# m h dom mon dow command
* * * * * cd /var/www/app/current && /usr/local/bin/rake RAILS_ENV=production thinking_sphinx:index >> /var/www/app/current/log/cron.log 2>&1
这是日志输出(这实际上每次调用出现3次):
Sphinx cannot be found on your system. You may need to configure the following
settings in your config/sphinx.yml file:
* bin_path
* searchd_binary_name
* indexer_binary_name
For more information, read the documentation:
http://freelancing-god.github.com/ts/en/advanced_config.html
这是我手动运行相同的命令(也可以在记录时运行):
$ cd /var/www/app/current && /usr/local/bin/rake RAILS_ENV=production thinking_sphinx:index
(in /var/www/app/releases/20100729042739)
Generating Configuration to /var/www/app/releases/20100729042739/config/production.sphinx.conf
Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-2009, Andrew Aksyonoff
using config file '/var/www/app/releases/20100729042739/config/production.sphinx.conf'...
indexing index 'app_core'...
collected 5218 docs, 3.9 MB
collected 5218 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 0.7 Mhits, 100.0% done
total 5218 docs, 3898744 bytes
total 0.616 sec, 6328760 bytes/sec, 8470.28 docs/sec
distributed index 'app' can not be directly indexed; skipping.
total 3 reads, 0.008 sec, 1110.2 kb/call avg, 2.6 msec/call avg
total 15 writes, 0.016 sec, 540.4 kb/call avg, 1.0 msec/call avg
rotating indices: succesfully sent SIGHUP to searchd (pid=20101).
也相关:
$ which rake
/usr/local/bin/rake
$ which indexer
/usr/local/bin/indexer
这个错误有些常见,但它很有趣,它在命令行中工作得很好,我怀疑其他的东西很奇怪。我还有另外两个任务关键型的cron作业,这些作业运行的rake任务看起来完全相同并且运行良好,不确定这个有什么不同。任何帮助将不胜感激!
PS-是否有当前Capistrano和TS版本的权威部署配置?似乎每个人都自己动手,官方文档似乎与博客帖子一样特殊。
答案 0 :(得分:6)
当您手动运行时,crontab是否与您登录的用户拥有相同的用户?
由于它似乎是一个明确的PATH问题,并且cron
使用受限制的PATH运行(即不是.profile中的内容),请尝试将其添加到crontab文件的顶部。
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
或者如果您不想修改cron的PATH,您可以将所需的文件符号链接到/ usr / sbin,默认情况下可能在PATH中。
答案 1 :(得分:0)
我可以确认我遇到类似于@kbighorse的错误,其中命令在命令行上手动运行,但没有从cron作业运行。我没有收到任何错误,但日志文件只会输出正在运行sphinx命令的目录。一旦我将以下路径变量从@jdl添加到crontab文件的顶部,cron作业就会正常运行:
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin