Installing MobileFirst Server in graphical mode
Use the graphical mode of IBM® Installation Manager and the Server Configuration Tool to install MobileFirst Server.
Before you begin
- Make sure that one of the following databases and a supported Java™ version are installed. You
also need the corresponding JDBC driver for the database to be available
on your computer:
- Database Management System (DBMS) from the list of supported database:
- DB2®
- MySQL
- Oracle
Important:You must have a database where you can create the tables that are needed by the product, and a database user who can create tables in that database.
In the tutorial, the steps to create the tables are for DB2. You can find the DB2 installer as a package of IBM MobileFirst™ Platform Foundation eAssembly on IBM Passport Advantage®.
- JDBC driver for your database.
- For DB2, use the DB2 JDBC driver type 4.
- For MySQL, use the Connector/J JDBC driver.
- For Oracle, use the Oracle thin JDBC driver.
- Java 7 or later.
- Database Management System (DBMS) from the list of supported database:
- Download the installer of IBM Installation Manager V1.8.4 or later from Installation Manager and Packaging Utility download links.
- You must also have the installation repository of the MobileFirst Server and
the installer of WebSphere® Application Server Liberty Core
V8.5.5.3 or later. Download these packages from the IBM MobileFirst Platform Foundation eAssembly
on Passport Advantage:
- MobileFirst Server installation repository
- IBM MobileFirst Platform Foundation V8.0 .zip file of Installation Manager Repository for IBM MobileFirst Platform Server
- WebSphere Application Server Liberty profile
- IBM WebSphere Application Server - Liberty Core V8.5.5.3 or later
About this task
- Windows x86 or x86-64
- Mac OS x86-64
- Linux x86 or Linux x86-64
- You can run Installation Manager in graphical mode, but to deploy the server, you need to skip to the command line section of this tutorial to install with Ant tasks.
- You cannot configure a server farm. Embedded Derby database does not support access from multiple servers. To configure a server farm, you need DB2, MySQL, or Oracle.
- Installing IBM Installation Manager
- Installing WebSphere Application Server Liberty Core
- Installing MobileFirst Server
- Creating a database
- Running the Server Configuration Tool
- Testing the installation
- Creating a farm of two Liberty servers that run MobileFirst Server
- Testing the farm and see the changes in MobileFirst Operations Console
Installing IBM Installation Manager
About this task
Procedure
Installing WebSphere Application Server Liberty Core
About this task
Procedure
Results
After the server is created, you can start this server with server start mfp1 from liberty_install_dir/bin/.
To stop the server, enter the command: server stop mfp1 from liberty_install_dir/bin/.
Installing MobileFirst Server
Before you begin
About this task
Run Installation Manager to install the binary files of MobileFirst Server on your disk before you create the databases and deploy MobileFirst Server to Liberty profile. During the installation of MobileFirst Server with Installation Manager, an option is proposed to you to install IBM MobileFirst Platform Application Center. Application Center is a different component of the product. For this tutorial, it is not required to be installed with MobileFirst Server. For more information about Application Center, see Installing and configuring the Application Center.
Procedure
Results
An installation directory that contains the resources to install MobileFirst components is installed.
- MobileFirstServer folder for MobileFirst Server
- PushService folder for MobileFirst Server push service
- ApplicationCenter folder for Application Center
- Analytics folder for MobileFirst Analytics
You can also find some shortcuts for the Server Configuration Tool, Ant, and mfpadm program in the shortcuts folder.
Creating a database
About this task
This task is to ensure that a database exists in your DBMS, and that a user is allowed to use the database, create tables in it, and use the tables.
- MobileFirst Server administration service
- MobileFirst Server live update service
- MobileFirst Server push service
- MobileFirst runtime
Procedure
Running the Server Configuration Tool
About this task
- Create the tables in the database that are needed by the MobileFirst applications
- Deploy the web applications of MobileFirst Server (the runtime, administration service, live update service, push service components, and MobileFirst Operations Console) to Liberty server.
- MobileFirst Analytics
- MobileFirst Analytics is typically deployed on a different set of servers than MobileFirst Server because of its high memory requirements. MobileFirst Analytics can be installed manually or with Ant tasks. If it is already installed, you can enter its URL, the user name, and password to send data to it in the Server Configuration Tool. The Server Configuration Tool will then configure the MobileFirst apps to send data to MobileFirst Analytics. For more information about the installation of MobileFirst Analytics, see MobileFirst Analytics Server installation guide.
- Application Center
- This application can be used to distribute mobile apps internally to the employees that use the apps, or for test purpose. It is independent of MobileFirst Server and is not necessary to install together with MobileFirst Server. For more information, see Installing and configuring the Application Center.
Procedure
Results
You can see a detail of the operations done in Console Window.
An Ant file is saved. The Server Configuration Tool helps you create an Ant file for installing and updating your configuration. This Ant file can be exported by using . For more information about this Ant file, see Deploying MobileFirst Server to Liberty with Ant tasks in Installing MobileFirst Server in command line mode.
- The tables for the following components are created in the database:
- The administration service and the live update service. Created by the admdatabases Ant target.
- The runtime. Created by the rtmdatabases Ant target.
- The push service. Created by the pushdatabases Ant target.
- The WAR files of the various components are deployed to Liberty server. You can see the details of the operations in the log under adminstall, rtminstall, and pushinstall targets.
- Open a DB2 command line processor with mfpuser as described in step 3 of Creating a database.
- Enter the SQL statements:
CONNECT TO MFPDATA USER mfpuser USING mfpuser_password LIST TABLES FOR SCHEMA MFPDATA DISCONNECT MFPDATA QUIT
- Database user consideration
- In the Server Configuration Tool, only one database user is needed. This user is used to create the tables, but is also used as the data source user in the application server at run time. In production environment, you might want to restrict the privileges of the user that is used at run time to the strict minimum (SELECT / INSERT / DELETE / UPDATE), and thus provide a different user for deployment in the application server. For more information about the privileges that are required at run time, see Database users and privileges. The Ant files that are provided as examples also use the same users for both cases. However, in the case of DB2, you might want to create your own versions of files. As such, you can distinguish the user that is used to create the databases from the user that is used for the data source in the application server with the Ant tasks.
- Database tables creation
- For production, you might want to create the tables manually. For example, if your DBA wants to override some default settings or assign specific table spaces. The database scripts that are used to create the tables are available in mfp_server_install_dir/MobileFirstServer/databases and mfp_server_install_dir/PushService/databases. For more information, see Create the database tables manually.
The server.xml file and some application server setting are modified during the installation. Before each modification, a copy of the server.xml file is made, such as server.xml.bak, server.xml.bak1, and server.xml.bak2. To see everything that was added, you can compare the server.xml file with the oldest backup (server.xml.bak). On Linux, you can use the command diff --strip-trailing-cr server.xml server.xml.bak to see the differences. On AIX®, use the command diff server.xml server.xml.bak to find the differences.
- Modification of the application server settings (specific to Liberty):
-
- The Liberty features are added.
The features are added for each application and can be duplicated. For example, the JDBC feature is used for both the administration service and the runtime components. This duplication allows the removal of the features of an application when it is uninstalled without breaking the other applications. For example, if you decide at some point to uninstall the push service from a server and install it on another server. However, not all topologies are possible. The administration service, the live update service, and the runtime component must be on the same application server with Liberty profile. For more information, see Constraints on MobileFirst Server administration service, MobileFirst Server live update service and MobileFirst runtime. The duplication of features does not create issue unless the features that added are conflicting. Adding the jdbc-40 and jdbc-41 features would cause a problem, but adding twice the same feature does not.
- host='*' is added in the httpEndPoint declaration.
This setting is to allow the connection to the server from all network interfaces. In production, you might want to restrict the host value of the HTTP endpoint.
- The tcpOptions element (tcpOptions soReuseAddr="true") is added in the server configuration to enable immediate rebind to a port with no active listener and improve the throughput of the server.
- A keystore with ID defaultKeyStore is created
if it does not exist.
The keystore is to enable the HTTPS port and more specifically, to enable the JMX communication between the administration service (mfp-admin-service.war) and the runtime component (mfp-server.war). The two applications communicate via JMX. In the case of Liberty profile, restConnector is used to communicate between the applications in a single server and also between the servers of a Liberty Farm. It requires the use of HTTPS. For the keystore that is created by default, Liberty profiles creates a certificate with a validity period of 365 days. This configuration is not intended for production use. For production, you need to reconsider to use your own certificate.
To enable JMX, a user with administrator role (named as MfpRESTUser) is created in the basic registry. Its name and password are provided as JNDI properties (mfp.admin.jmx.user and mfp.admin.jmx.pwd) and are used by the runtime component and the administration service to run JMX queries. In the global JMX properties, some properties are used to define the cluster mode (stand-alone server or working in a farm). The Server Configuration Tool sets the mfp.topology.clustermode property to Standalone in Liberty server. In the later part of this tutorial about the creation of a farm, the property is modified to Cluster.
- The creation of users (Also valid for Apache Tomcat and WebSphere Application Server)
- Optional Users: The Server Configuration Tool creates a test user (admin/admin) so that you can use this user to log to the console after the installation.
- Mandatory Users: The Server Configuration Tool also creates a user (named as configUser_mfpadmin with a randomly generated password) to be used by the administration service to contact the local live update service. For Liberty server, MfpRESTUser is created. If your application server is not configured to use a basic registry (for example, an LDAP registry), the Server Configuration Tool is unable to request the name of an existing user. In this case, you need to use Ant tasks. For more information, see Installing with Ant Tasks.
- The webContainer element is modified.
The deferServletLoad web container custom property is set to false. Both the runtime component and the administration service must start when the server starts. These components can thus register the JMX beans and start the synchronization procedure that allows the runtime component to download all the applications and adapters that it needs to serve.
- The default executor is customized to set large values to coreThreads and maxThreads if
you use Liberty V8.5.5.5 or earlier. The default executor is automatically
tuned by Liberty as of V8.5.5.6.This setting avoids timeout issues that break the startup sequence of the runtime component and administration service on some Liberty versions. The absence of this statement can be the cause of these errors in the server log file:
Failed to obtain JMX connection to access an MBean. There might be a JMX configuration error: Read timed out FWLSE3000E: A server error was detected.
FWLSE3012E: JMX configuration error. Unable to obtain MBeans. Reason: "Read timed out".
- The Liberty features are added.
- Declaration of applications
- The following applications are installed:
- mfpadmin, the administration service
- mfpadminconfig, the live update service
- mfpconsole, MobileFirst Operations Console
- mobilefirst, MobileFirst runtime component
- imfpush, the push service
The Server Configuration Tool installs all the applications on the same server. You can separate the applications in different application servers, but under certain constraints that are documented in Topologies and network flows.
For an installation on different servers, you cannot use the Server Configuration Tool. Use Ant tasks (Deploying MobileFirst Server to Liberty with Ant tasks) or install the product manually.
- Administration service
-
The administration service is the service for managing MobileFirst applications, adapters, and their configurations. It is secured by security roles. By default, the Server Configuration Tool adds a user (admin) with the administrator role, that you can use to log in to the console for testing. The configuration of the security role must be done after an installation with the Server Configuration Tool (or with Ant tasks). See Configuring user authentication for MobileFirst Server administration. You might want to map the users or the groups that come from the basic registry or an LDAP registry that you configure in your application server to each security role.
The class loader is set with delegation parent last for Liberty profile and WebSphere Application Server, and for all MobileFirst applications. This setting is to avoid conflicts between the classes packaged in the MobileFirst applications and the classes of the application server. Forgetting to set the class loader delegation to parent last is a frequent source of error in manual installation. For Apache Tomcat, this declaration is not needed.
In Liberty profile, a common library is added to the application for decrypting passwords that are passed as JNDI properties. The Server Configuration Tool defines two mandatory JNDI properties for the administration service: mfp.config.service.user and mfp.config.service.password. They are used by the administration service to connect to the live update service with its REST API. More JNDI properties can be defined to tune the application or adapt it to your installation particularities. For more information, see List of JNDI properties for MobileFirst Server administration service.
The Server Configuration Tool also defines the JNDI properties (the URL and the OAuth parameters to register the confidential clients) for the communication with the push service.
The data source to the database that contains the tables for the administration service is declared, as well as a library for its JDBC driver.
- Live update service
-
The live update service stores information about the runtime and application configurations. It is controlled by the administration service and must always run on the same server as the administration service. The context root is context_root_of_admin_serverconfig. As such, it is mfpadminconfig. The administration service assumes that this convention is respected to create the URL of its requests to the REST services of the live update service.
The class loader is set with delegation parent last as discussed in the administration service section.
The live update service has one security role, admin_config. A user must be mapped to that role. Its password and login must be provided to the administration service with the JNDI property: mfp.config.service.user and mfp.config.service.password. For information about the JNDI properties, see List of JNDI properties for MobileFirst Server administration service and List of JNDI properties for MobileFirst Server live update service.
It also needs a data source with JNDI name on Liberty profile. The convention is context_root_of_config_server/jdbc/ConfigDS. In this tutorial, it is defined as mfpadminconfig/jdbc/ConfigDS. In an installation by the Server Configuration Tool or with Ant tasks, the tables of the live update service are in the same database and schema as the tables of the administration service. The user to access these tables is also the same.
- MobileFirst Operations Console
-
MobileFirst Operations Console is declared with the same security roles as the administration service. The users that are mapped to the security roles of MobileFirst Operations Console must also be mapped to the same security role of the administration service. Indeed, MobileFirst Operations Console runs queries to the administration service on the behalf of the console user.
The Server Configuration Tool positions one JNDI property, mfp.admin.endpoint, that indicates how the console connects to the administration service. The default value set by the Server Configuration Tool is '*://*:*/mfpadmin'. The setting means that it must use the same protocol, host name, and port as the incoming HTTP request to the console, and the context root of the administration service is /mfpadmin. If you want to force the request to go though a web proxy, change the default value. For more information about the possible values for this URL, or for information about other possible JNDI properties, see List of JNDI properties for MobileFirst Server administration service.
The class loader is set with delegation parent last as discussed in the administration service section.
- MobileFirst runtime
-
This application is not secured by a security role. It is not required to log in with a user known by the Liberty server, to access this application. The mobile devices requests are routed to the runtime. They are authenticated by other mechanisms specific to the product (such as OAuth) and the configuration of the MobileFirst applications.
The class loader is set with delegation parent last as discussed in the administration service section.
It also needs a data source with JNDI name on Liberty profile. The convention is context_root_of_runtime/jdbc/mfpDS. In this tutorial, it is defined as mobilefirst/jdbc/mfpDS. In an installation by the Server Configuration Tool or with Ant tasks, the tables of the runtime are in the same database and schema as the tables of the administration service. The user to access these tables is also the same.
- Push service
-
This application is secured by OAuth. The valid OAuth tokens must be included in any HTTP request to the service.
The configuration of OAuth is made through the JNDI properties (such as the URL of the authorization server, the client ID, and the password of the push service). The JNDI properties also indicate the security plug-in (mfp.push.services.ext.security) and the fact that a relational database is used (mfp.push.db.type). The requests from the mobile devices to the push service are routed to this service. The context root of the push service must be /imfpush. The client SDK computes the URL of the push service based on the URL of the runtime with the context root (/imfpush). If you want to install the push service on a different server than the runtime, you need to have an HTTP router that can route the device requests to the relevant application server.
The class loader is set with delegation parent last as discussed in the administration service section.
It also needs a data source with JNDI name on Liberty profile. The JNDI name is imfpush/jdbc/imfPushDS. In an installation by the Server Configuration Tool or with Ant tasks, the tables of the push service are in the same database and schema as the tables of the administration service. The user to access these tables is also the same.
- Other files modification
-
The Liberty profile jvm.options file is modified. A property (com.ibm.ws.jmx.connector.client.rest.readTimeout) is defined to avoid timeout issues with JMX when the runtime synchronizes with the administration service.
Testing the installation
About this task
Procedure
Creating a farm of two Liberty servers that run MobileFirst Server
About this task
In this task, you will create a second Liberty server that runs the same MobileFirst Server and connected to the same database. In production, you might use more than one server for performance reasons, to have enough servers to serve the number of transactions per second that is needed for your mobile applications at peak time. It is also for high availability reasons to avoid having a single point of failure.
When you have more than one server that runs MobileFirst Server, the servers must be configured as a farm. This configuration enables any administration service to contact all the runtimes of a farm. If the cluster is not configured as a farm, only the runtime that runs in the same application server as the management service that runs the management operation is notified. Others runtimes are not aware of the change. For example, you deploy a new version of an adapter in a cluster that is not configured as a farm, only one server would serve the new adapter. The other servers would continue to serve the old adapter. The only situation where you can have a cluster and do not need to configure a farm is when you install your servers on WebSphere Application Server Network Deployment. The administration service is able to find all the servers by querying the JMX beans with the deployment manager. The deployment manager must be running to allow management operations because it is used to provide the list of the MobileFirst JMX beans of the cell.
When you create a farm, you also need to configure an HTTP server to send queries to all the members of the farm. The configuration of an HTTP server is not included in this tutorial. This tutorial is only about configuring the farm so that management operations are replicated to all the runtime components of the cluster.