Setting up Opengrok in a FreeNAS 11.2 iocage jail
Create storage dataset's for GROK
Create a jail for GROK
Setup jail mount points for src and data. You need to stop the jail to add mount points and then restart afterwards.
- /mnt/u03/opengrok/src → /var/opengrok/src
- /mnt/u03/opengrok/data → /var/opengrok/data
Find the JAIL and open a shell
root@ale[~]# jls JID IP Address Hostname Path 1 plex /mnt/u02/iocage/jails/plex/root 2 bind /mnt/u02/iocage/jails/bind/root 5 beer /mnt/u02/iocage/jails/beer/root 6 grok /mnt/u02/iocage/jails/grok/root root@ale[~]# jexec 6 /bin/sh
Install opengrok and git. To generate the history caches from GIT based repositories we need the git command line tool.
# pkg install -y opengrok git # pkg info opengrok opengrok-1.0 Name : opengrok Version : 1.0 Installed on : Tue May 14 09:04:03 2019 EDT Origin : devel/opengrok Architecture : FreeBSD:11:* Prefix : /usr/local Categories : devel java Licenses : APACHE20, CDDL Maintainer : ports@FreeBSD.org WWW : http://opengrok.github.io/OpenGrok/ Comment : Fast and powerful code search and cross-reference engine Options : DOCS : on RESIN3 : off TOMCAT6 : off TOMCAT7 : off TOMCAT8 : on TOMCAT85 : off Annotations : repo_type : binary repository : FreeBSD Flat size : 20.5MiB Description : OpenGrok is a fast source code search and cross reference engine. It helps you search, cross-reference and navigate your source tree. It can understand various program file formats and version control histories like Mercurial, Git, SCCS, RCS, CVS, Subversion, Teamware, ClearCase, Perforce and Bazaar. In other words it lets you grok (profoundly understand) the open source, hence the name OpenGrok. It is written in Java. WWW: http://opengrok.github.io/OpenGrok/
This installs tomcat8 we need to autostart this.
# ls /usr/local/etc/rc.d tomcat8
Enable for auto start /etc/rc.conf
echo tomcat8_enable="YES" >>/etc/rc.conf
and start it
service tomcat8 start
This should fire up with an error. That's OK as we have not indexed anything the error will disappear after indexing.
Make a directory
mkdir /var/opengrok/etc
Create a helper script and run it.
cat <<EOF >~/opengrok-index opengrok -c /usr/local/bin/exctags -s /var/opengrok/src -d /var/opengrok/data -H -P -S -G -W /var/opengrok/etc/configuration.xml service tomcat8 restart EOF chmod a+x ~/opengrok-index ~/opengrok-index
The -U parameter only takes host:port and it assumes the WEBAPP is called /source which means the indexer can't tell the running opengrok to reload. So restart tomcat as part of the index run. A minor wart.
Making opengrok the default webapp and use port 80
Moving tomcat from port 8080 to port 80 Edit /usr/local/apache-tomcat-8.0/conf/server.xml file and replace 8080 with 80
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
Make opengrok the default web application by adding a <Context> tag inside <Host>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/usr/local/apache-tomcat-8.0/webapps/opengrok"> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context>