[OPEN-ILS-DEV] Getting there -- bootstrapping OpenSRF Client problem

Mike Rylander mrylander at gmail.com
Sat Nov 18 10:18:04 EST 2006


On 11/18/06, Dan Scott <denials at gmail.com> wrote:
> I've pretty excited: I've made huge progress, and I've documented all
> of the required steps for Ubuntu 6.10 (Edgy Eft) in the wiki. Seems
> that there were a few steps assumed but not written up in the current
> docs -- that, or maybe I've done things the hard way (like having to
> use Gaim to register ejabberd users).
>

Wow, that's very inventive!  I hadn't thought of doing that.  Bill has
a script for registering users to the jabber server, but I can't find
it at the moment.  I'm not sure if it's in CVS but I'll poke him once
he gets back from vacation.

> One piece that concerns me is that when I run "opensrf_all start", the
> router fails to start with "!!!! Unable to connect router to jabber
> server localhost... exiting" -- but router.log simply says "Router
> adding trusted server: localhost" and "Router adding trusted client:
> localhost" without recording any error.
>

I believe that ejabberd doesn't listen on 127.0.0.1 by default, so
you'll want to have the router connect via the real IP address of the
server, and (this is very important) use the fqdn as given by
`hostname -f` as the jabber domain.  Make sure that name is resolvable
to the  external IP of the machine, probably via /etc/hosts.

In the file /openils/conf/opensrf_core.xml (adjusted for your base
installation directory) there is a section for setting up the router
connection (XPath: /config/router/transport), and you'll want to make
sure that the <server> node points to the name from above -- the fqdn
of the host.  The other important settings there are the <username>
and <password> nodes, which you probably already registered using
Gaim.  The username must be "router" -- well, must unless you want to
change a good deal of other stuff.

Inside that same file, in the sections for /config/opensrf and
/config/gateway you'll need to make sure that there are domains/domain
and routers/router nodes for the same resolvable hostname.

So ... that takes care of the C stuff, but currently the Perl services
have a different config file located at /openils/conf/boostrap.conf.
It's essentially the same config, but it's INI style instead of XML.
The entry for list:domains should match the values from the XPath path
for /config/opensrf/domains/domain, and router_name should match the
value from /config/opensrf/routers/router.

After all that, and after restarting everything, you should see the
analog of these ps listings:

  $ ps ax|grep -i jabber
  9038 ?        S      1:09
/opt/erlang//lib/erlang/erts-5.5.1/bin/beam -- -root
/opt/erlang//lib/erlang -progname erl -- -home /opt/home/ejabberd -s
ejabberd -name ejabberd -ejabberd config ejabberd.cfg -noshell
-noinput
  9039 ?        S      0:00
/opt/erlang//lib/erlang/erts-5.5.1/bin/beam -- -root
/opt/erlang//lib/erlang -progname erl -- -home /opt/home/ejabberd -s
ejabberd -name ejabberd -ejabberd config ejabberd.cfg -noshell
-noinput
  9040 ?        S      0:00
/opt/erlang//lib/erlang/erts-5.5.1/bin/beam -- -root
/opt/erlang//lib/erlang -progname erl -- -home /opt/home/ejabberd -s
ejabberd -name ejabberd -ejabberd config ejabberd.cfg -noshell
-noinput

  $ ps ax|grep -i router
  9319 ?        Ss     0:05 OpenSRF Router

and, of course, a huge pile of OpenSRF drones and listeners.

At this point, if all's well, you can test your install using srfsh
(which has it's own config file -- surprise, surprise -- at
~/.srfsh.xml, and the syntax is identical to opensrf_core.xml) thusly:

$ /openils/bin/srfsh
srfsh# request open-ils.circ opensrf.system.time

which, assuming the setup is happy, will return the epoch time.  Use
the command 'help' to see more.  However, if you don't get this far
then something is unhappy ...

> Anyways, I'm at the point now where the PINES Web interface is showing
> up (yeah!) but I can't get past that point because every search
> request simply triggers an error in /var/log/apache2/error.log:
>
> File does not exist: /openils/var/web/opac/common/js/fmcore.js,
> referer: http://localhost/opac/en-US/skin/default/xml/index.xml
> File does not exist: /openils/var/web/opac/common/js/OrgTree.js,
> referer: http://localhost/opac/en-US/skin/default/xml/index.xml
>
> I'm guessing these missing JavaScript files are purely cosmetic. I'm
> more concerned about the following errors in osrfsys.log:

As Jason mentioned, those are /very/ important.  They need to be
generated (and regenerated) after any in-database configuration,
including installation.  To do that run the following as root or the
opensrf user:

$ cd /openils/bin
$ PERL5LIB=/openils/lib/perl5 ./autogen.sh ../conf/bootstrap.conf

and you should see

# PERL5LIB=/openils/lib/perl5 ./autogen.sh ../conf/bootstrap.conf
Updating fieldmapper
Updating web_fieldmapper
Updating OrgTree
Updating OrgTree HTML
Done

Again, the /openils/conf/bootstrap.conf will need to be configured the
same as opensrf_core.xml for this to succeed.

>
> Bootstrapping system with domain localhost, port 5222, and unixpath (null).
> Unable to bootstrap
>
> Despite those messages, there are tons of OpenSRF processes running
> happily when I check ps wax.
>

They will run and connect to the jabber server, but it seems the
Router isn't, so they can't talk to each other at the moment.  I'm
sure it's a minor config file change that's needed and then everything
will start working.

> Anyways, just thought I would throw this out there and see if it rings
> any bells. Time for this cat to go to bed.
>
> Dan
>

Great work, Dan!  And thanks for all the documentation updates, that
is a BIG help!

-- 
Mike Rylander
mrylander at gmail.com
GPLS -- PINES Development
Database Developer
http://open-ils.org


More information about the Open-ils-dev mailing list