Archiv pro měsíc: Srpen 2013

Jak ve SmartOS zóně založené na image base64 rozchodit Sphinx search

Rozchodit Sphinx daemon ve SmartOS zóně chce trochu snahy navíc. Hned po instalaci nefunguje.

Sphinx by měl být v zóně vytvořené z image base64 (alespoň od verze 13.1.0) již předinstalovaný. Ověřit si to můžeme pomocí pkgin:

# pkgin se sphinxsearch
sphinxsearch-2.0.8 = Sphinx Full-Text Search Engine

Následně jej aktivujeme pomocí svcadm:

svcadm enable sphinx

V tuto chvíli Vám ale fungovat nebude:

# svcs -a|grep sphinx
maintenance    15:25:22 svc:/pkgsrc/sphinx:default

Zobrazíme si tedy log SVC:

# tail /var/svc/log/pkgsrc-sphinx\:default.log
[ Aug 28 15:18:00 Enabled. ]
[ Aug 28 15:18:00 Could not interpret "user" property value "pbulk", error 2. ]

Vypadá to, že v systému nemáme uživatele pbulk. Ale zakládat jej nebudeme, pro sphinx už totiž uživatel připraven je:

# cat /etc/passwd|grep sphinx
sphinx:x:1001:1001:sphinxsearch sphinx user:/nonexistent:/usr/bin/false

Nastavíme tedy SVC, aby daného uživatele použilo:

# svccfg -s pkgsrc/sphinx setprop method_context/user=astring: sphinx
# svccfg -s pkgsrc/sphinx setprop method_context/group=astring: sphinx
# svcadm refresh sphinx
# svcadm clear sphinx

Sphinx ale stále neběží, máme tu ještě jeden problém:

# tail /var/svc/log/pkgsrc-sphinx\:default.log
[ Aug 28 15:24:08 Leaving maintenance because clear requested. ]
[ Aug 28 15:24:08 Enabled. ]
[ Aug 28 15:24:08 Executing start method ("/opt/local/bin/searchd -c /opt/local/etc/sphinx.conf"). ]
[ Aug 28 15:24:08 svc.startd could not set context for method:  ]
[ Aug 28 15:24:08 chdir: No such file or directory ("/nonexistent") ]
[ Aug 28 15:24:08 Method "start" exited with status 96. ]

Vypadá to, že složka, ve které má uživatel sphinx svůj home, neexistuje. Změníme ji na existující:

# usermod -d /var/spool/sphinx sphinx

Nyní už by nám měl Sphinx vpořádku naběhnout. Pokud tedy máme správně nastaven conf a vygenerované indexy.

# svcadm clear sphinx
# svcs -a|grep sphinx
online         15:25:22 svc:/pkgsrc/sphinx:default