root/INSTALL @ 2e0a7cb1
2e0a7cb1 | Sylvain L. Sauvage | Building and Installing
|
|
=======================
|
|||
Building
|
|||
--------
|
|||
IoTa uses Apache Maven for build automation (http://maven.apache.org).
|
|||
Compilation of each module is achieved with this command:
|
|||
mvn compile
|
|||
Maven will download all the necessary jar files and install them in a local
|
|||
repository (usually ~/.m2/repository).
|
|||
Installation of IoTa libraries in the local repository for further use (as
|
|||
needed for several IoTa modules) is achieved with this command:
|
|||
mvn install
|
|||
Note that this command also compiles the module if necessary.
|
|||
Some of the modules provide unit tests and some of these tests need some
|
|||
application to be running (eg. the tests for the IoTa-DiscoveryWS-Client
|
|||
library need an up and running Discovery Web Service). To skip those tests,
|
|||
use this command to compile or install:
|
|||
mvn -DskipTests install
|
|||
You can manually install already downloaded jar files with this command:
|
|||
mvn install:install-file \
|
|||
-Dfile=sunxacml-2.0-SNAPSHOT.jar \
|
|||
-DgroupId=net.sf.sunxacml \
|
|||
-DartifactId=sunxacml \
|
|||
-Dversion=2.0-SNAPSHOT \
|
|||
-Dpackaging=jar
|
|||
Note that this will be necessary for the sunxacml library as it’s on no
|
|||
widespread known Maven repository. The jar file can be downloaded from the
|
|||
SourceForge page for the project: http://sunxacml.sf.net
|
|||
Here is a direct link: http://sourceforge.net/projects/sunxacml/files/maven/snapshots/net/sf/sunxacml/sunxacml/2.0-SNAPSHOT/sunxacml-2.0-SNAPSHOT.jar/download
|
|||
Installing
|
|||
----------
|
|||
(All bracketted values `<name>` are place-holders.)
|
|||
The IoTa-Installer can help you install and configure all the servers and
|
|||
databases.
|
|||
All the applications and web applications have a `log4j.properties` file to
|
|||
configure the logging output (file output, log format, log level, and so on).
|
|||
### Applications
|
|||
Get and extract the `<application>-<version>-bin-with-dependency.tar.gz`
|
|||
tarball for the application.
|
|||
Modify or create the configuration files (see the application `README` file
|
|||
for a list and each file for comments).
|
|||
A file in the current directory overrides the default version which is
|
|||
embedded in the jar file.
|
|||
You can extract the default commented version of the files from the jar file:
|
|||
jar xf <application>-<version>.jar application.properties
|
|||
or
|
|||
unzip <application>-<version>.jar application.properties
|
|||
Use the provided script to start the application:
|
|||
./launch.sh
|
|||
### Web Applications
|
|||
Get the `<application>-<version>.war` war file for the web application.
|
|||
Deploy it in you servlet container (see the container documentation for
|
|||
information). For Apache Tomcat, this can be done in several ways:
|
|||
1. manually dejar the war file in `$CATALINA_HOME/webapps`
|
|||
2. copy the war file in `$CATALINA_HOME/webapps` and let Tomcat deploy it
|
|||
(either at its next restart or while running if its autodeploy option is
|
|||
on)
|
|||
3. use the manager web application (http://localhost:8080/manager)
|
|||
4. use the deploy-tools
|
|||
5. use the Maven Tomcat plugin
|
|||
Edit the configuration files in `<webapp-dir>/WEB-INF/classes/` (see the web
|
|||
application `README` for a list and each file for comments).
|
|||
Reload the web application or restart the servlet container.
|
|||
### Web Applications with databases
|
|||
1. The database
|
|||
Create the database for the application:
|
|||
CREATE DATABASE <app_db>;
|
|||
Create a specific user and grant them access rights:
|
|||
GRANT SELECT, INSERT, UPDATE, DELETE ON <app_db>.*
|
|||
TO <app_db_user>@localhost IDENTIFIED BY <app_db_password>;
|
|||
Create the tables:
|
|||
use <app_db>;
|
|||
source <app>_schema.sql;
|
|||
The file `<app>_schema.sql` for each application can be found in
|
|||
`IoTa-Installer/resources` and in `<app>/src/main/resources/sql`.
|
|||
2. Install the web application as explained earlier.
|
|||
At this point, the web application will probably fail to properly start.
|
|||
3. The context file
|
|||
Modify the file `$CATALINA_HOME/webapps/<webapp>/META-INF/context.xml` to
|
|||
reflect the values for your database (name, login and password).
|
|||
Sometimes, it is needed to have a copy of this file as
|
|||
`$CATALINA_HOME/conf/localhost/<webapp>.xml`.
|
|||
Reload the web application or restart the servlet container.
|
|||
Do not forget to install the JDBC connector jar file. (For Apache Tomcat and
|
|||
MySQL, copy `mysql-connector-java.jar` in `$CATALINA_HOME/lib`.)
|
|||
### ONS
|
|||
Some applications need an Object Naming Service. NAPTR records are use to find
|
|||
the URL of the Discovery Service for a given EPC code.
|
|||
Here is a typical zone file for the product `urn:epc:id:sgtin:1234567.89012`:
|
|||
;;
|
|||
$TTL 1d
|
|||
;; zone, the vendor Id
|
|||
$ORIGIN 7.6.5.4.3.2.1.sgtin.ons-peer.com.
|
|||
@ IN SOA localhost info.example.com ( ; info@example.com
|
|||
2012010101 ; serial version number
|
|||
3h ; refresh
|
|||
1h ; retry
|
|||
1d ; expire
|
|||
1 ; negative cache TTL
|
|||
)
|
|||
;; this server’s name
|
|||
IN NS ons.example.com
|
|||
; NAPTRs for products
|
|||
; example product
|
|||
; order pref flags service regex
|
|||
2.1.0.9.8 IN NAPTR 0 0 "u" "epc+html" "!^.*$!http://www.example.com/!" .
|
|||
IN NAPTR 1 0 "u" "epc+ds" "!^.*$!http://ds.example.com/ds/services/ESDS_Service!" .
|
|||
; first, the HTML web page for product information
|
|||
; second, the Discovery web service associated to this EPC
|
|||
On Debian and Debian-derived systems, you just need to install the `bind9`
|
|||
package, to create one or more zone file as the cited example and to activate
|
|||
those zones, that is to add that kind of statement in `named.conf.local`:
|
|||
zone "7.6.5.4.3.2.1.sgtin.ons-peer.com" {
|
|||
type master;
|
|||
file "/etc/bind/db.ons.peer.com";
|
|||
};
|
|||
Remember that in order to avoid a recursive open relay DNS, you need to add
|
|||
these options (in the `options` statement of `named.conf.options`):
|
|||
allow-transfer { none };
|
|||
allow-recursion { none };
|
|||
recursion no;
|
|||
### LDAP
|
|||
Some applications (ETa) need an LDAP server.
|
|||
From a fonctionnal LDAP server, the script `ETa/ldap.sh` or the LDAP module of
|
|||
the IoTa-Installer adds a schema, a group and the two users superadmin and
|
|||
anonymous.
|
|||
On Debian and Debian-derived systems, you just need to install the packages
|
|||
`slapd` and `ldap-utils`. You have to execute `dpkg-reconfigure slapd` in
|
|||
order to complete the configuration.
|