LAMS installation and configuration

This article or chapter is incomplete and its contents need further attention. Some information may be missing or may be wrong, spelling and grammar may have to be improved, use your judgment!

## Contents

* 1 Definition
* 2 LAMS 4.5+
* 2.1 Getting the LAMS source code
* 2.1.1 OpenJDK 11
* 2.1.2 MySQL 8.0 DB
* 2.1.2.1 Basic MySQL configuration
* 2.1.3 Wildfly 14.0.1
* 2.1.4 LAMS source code pre-compilation
* 2.1.5 Compilation and deployment
* 3 LAMS 3.1
* 3.1 LTI external tool integration
* 3.2 Moodle LAMS integration through a Moodle plugin
* 4 LAMS 3.0
* 4.1 Prerequisites
* 4.2 Kill old LAMS
* 4.3 Install and configure Wildfly
* 4.4 Create a new MySQL database and user
* 4.5 Dowload, configure and build LAMS
* 4.6 Compilation errors with OpenJDK 11
* 4.7 Test running LAMS with WildFly
* 5 Documentation and using LAMS

## Definition[edit | edit source]

This page contains installation tips for a fresh install of LAMS.

LAMS is a JAVA/JBOSS-based application and needs some installation skills on Windows and good installation skills for Unix.

Note: I put the legacy stuff in the discussion page, e.g. LAMS 2.x for Ubuntu, LAMS 2.1RC for Solaris

## LAMS 4.5+[edit | edit source]

As of July 2021, LAMS 4.5 was released and is the latest stable release.

### Getting the LAMS source code[edit | edit source]

Source code is available from Github. The code branch to use is v4.5

Required software

* Git
* Wildfly 14.0.1
* OpenJDK 11
* MySQL 8.0
* Ant (Java task compiler)

#### OpenJDK 11[edit | edit source]

In Debian/Ubuntu 20.04

$ sudo apt install openjdk-11-jdk-headless
$ sudo apt install fontconfig

#### MySQL 8.0 DB[edit | edit source]

$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb
$ sudo dpkg -i  mysql-apt-config_0.8.15-1_all.deb
$ sudo apt update
$ sudo apt install mysql-server
$ sudo mysql_secure_installation

##### Basic MySQL configuration[edit | edit source]

/etc/mysql/mysql.conf.d/mysqld.cnf

...
# LAMS stuff
explicit_defaults_for_timestamp
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
transaction-isolation=READ-COMMITTED
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
max_allowed_packet=32M
# Record slow queries
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 10

[mysqldump]
default-character-set=utf8mb4
hex-blob=1
single-transaction=1
quick=1
...

After installing MySQL, create a user and a DB for LAMS and grant appropriate permissions:

DROP DATABASE IF EXISTS lams;
CREATE DATABASE lamsdb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
SET FOREIGN_KEY_CHECKS=1;
GRANT ALL PRIVILEGES ON lamsdb.* TO lamsdbuser@localhost IDENTIFIED BY 'real_secret_pw';
REVOKE SUPER ON *.* from lamsdbuser@localhost;

#### Wildfly 14.0.1[edit | edit source]

$ wget https://download.jboss.org/wildfly/14.0.1.Final/wildfly-14.0.1.Final.tar.gz
$ cd /opt/lams
$ tar xvzf wildfly-14.0.1.Final.tar.gz

#### LAMS source code pre-compilation[edit | edit source]

LAMS is open source and its code is available from GitHub

git clone https://github.com/lamsfoundation/lams.git

By default branch is LAMS' latest stable release as of July 2021, that's version 4.5. If you need a previous branch, see other branches available.

Wherever you have your LAMS v4.5 code, edit the following files

common.properties

Primarily the DB settings and based system.

If you are building LAMS using Windows, set the osPropertiesName to "windows" instead of "unix".

...
#======== DATABASE PROPERTIES =========
db.host=localhost
db.port=3306
db.name=lamsdb
db.username=lamsdbuser
db.password=real_secret_pw
...
osPropertiesName=unix
...

If you are building LAMS in a unix based system, then change the file unix.properties. If you are using Windows, then change the windows.properties file instead.

unix.properties

Here you will need to figure a path to the content repository contentrepository.base=/var/opt/lams

The path to your Wildfly folder server.home=/usr/local/wildfly-14.0.1/

...
contentrepository.base=/var/opt/lams
...
server.home=/opt/lams/wildfly-14.0.1/
...

#### Compilation and deployment[edit | edit source]

cd lams_build
ant deploy-lams

If no errors occurred, you are ready to start Wildfly.

cd /opt/lams/wildfly-14.0.1/bin
./standalone.sh

LAMS should be available at localhost:8080/lams/

By default, LAMS has a set of preconfigured users:

Default Users  user  | password  | role

|
|

sysadmin  | sysadmin  | System administrator
test1  | test1  | Teacher, student, tutor
test2  | test2  | Teacher, student, tutor
test3  | test3  | Teacher, student, tutor
test4  | test4  | Teacher, student, tutor

Of course, you can create and import users and courses into LAMS at any time from the sysadmin menu.

(OPTIONAL) Wildfly comes with a ton of libraries that LAMS does not use. So to slim Wildfly to only use the libs that LAMS uses, please run the following ant task in the lams_build folder:

ant slim-standalone

## LAMS 3.1[edit | edit source]

As of March 2019, we do have a new LAMS installation that works fine in virtual server running Ubuntu 18.x.

* Github
* Quick compile guide for Ubuntu

However, I do not feel doing system administration anymore (except for this wiki) and I asked our systems person to do it. So there is not documentation, sorry.

Lams Moodle integration. There are two types of integration.

* LAMS - Moodle integration with a Moodle plugin.
* LTI integration, i.e. Moodle can "consume" LAMS contents

### LTI external tool integration[edit | edit source]

Documentation

* External tool settings (Moodle 3.6 manual).
* Integrations (LAMS documentation).

An administrator can manually configure external tools in Site administration > Plugins > Activity modules > External tool> Manage tools so that they are available across the site.

### Moodle LAMS integration through a Moodle plugin[edit | edit source]

* We did that with LAMS 2.5. To be tested with LAMS 3.0. There is a plugin for download and the method should be the same.

## LAMS 3.0[edit | edit source]

As of November 2018, the current system is LAMS 3.x. You can test this with a demo version. Below, we started documenting an installation on Ubunt 18x, but we did not find time to complete the installation. As you can see something went wrong. Instead, we installed LAMS 3.1 on a virtual server machine.

History

LAMS 2.5 was initially promised for 2014. Then, after a funding cut, the LAMS team was mostly disbanded and the core team found a new "home" in Singapour. Sometimes in 2016 the version number was changed to LAMS 3.0.

Status as of Nov 2018

* The old LAMS community pages are still online, but no longer maintained.

* LAMS 3.x it is available on Github, but documentation is lacking. Also, there is no installer. You will have to install and configure like in the "good" old times ....
* LAMS 3.x will run under old 8.2.1 version of Wildfly, formerly JBoss (?). E.g. see How to install WildFly (JBoss) Java Application Server on Ubuntu 18.04.
* Create a MySQL database
* Build the system with ANT

* https://demo.lamsfoundation.org/lams/ does run a 3.x demo version for which you can require a login.

* LAMS 3.x is available as commercial offering through Lams International and also through content services (to be verified).

### Prerequisites[edit | edit source]

Java
Usually, this is installed. Check it. In principle, the Open JDK should work, however we do not know if that is true for older version. If it does not (we have to test) this, then it should be replaced with Oracle one. This is very likely the case.

java -version

gives something link:

openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.1)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.1, mixed mode)

Installation did not work with java 11, so I tried OpenJDK version 8. If you don't have Java 8 (it already was on my system), install it first.

udo apt install openjdk-8-jdk

To use Java 8 by default, you can do the following. Most software seems to use Java 8 anyhow ....
sudo update-alternatives --config java

SASS (some kind of CSS pre-processor)

sudo apt install sass

Ant

sudo apt install ant

If exists, stop your old LAMS, e.g.
/etc/init.d/lams2 stop

### Kill old LAMS[edit | edit source]

We did not try to upgrade an old LAMS installation since we did not have many sequences that were worthwhile keeping and since there are no instructions on how to do this. So, export sequences that are worth keeping ...

Remove the startup script for old lams (or similar if it exists)

grep -R lams /etc

For example

rm /etc/rc6.d/K02lams2
rm /etc/rc5.d/S02lams2
rm /etc/rc4.d/S02lams2
rm /etc/rc3.d/S02lams2
rm /etc/rc2.d/S02lams2
rm /etc/rc1.d/K02lams2
rm /etc/rc0.d/K02lams2

### Install and configure Wildfly[edit | edit source]

# cd /src
wget http://download.jboss.org/wildfly/8.2.1.Final/wildfly-8.2.1.Final.tar.gz
tar xvfz wildfly-8.2.1.Final.tar.gz

sudo mv /src/wildfly-8.2.1.Final /opt/wildfly
sudo chown you:you /opt/wildfly
cd /opt/wildfly
more README.txt

#Now test
cd /opt/wildfly/bin
./standalone.sh
# If your X server works and if you got Firefox installed on the server machine
firefox --new-instance
http://localhost:9990

### Create a new MySQL database and user[edit | edit source]

(1) Check what you got

mysqlshow -p -u root

(2) Create a new database and user

mysql -u root -p

and copy/paste an adapted version of the following

DROP DATABASE IF EXISTS lams3;
CREATE DATABASE lams3 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
SET FOREIGN_KEY_CHECKS=1;
GRANT ALL PRIVILEGES ON lams3.* TO lams@localhost IDENTIFIED BY 'real_secret_pw';
REVOKE PROCESS,SUPER ON *.* from lams@localhost;

After aborting wildfly you can run intot the following type of error (see also this, dated 07/14/10)

/opt/wildfly/bin$ 18:25:34,136 INFO  [JdbcMigrationLauncher]   If this isn't from a long-running patch, but a stale lock, either:
18:25:34,136 INFO  [JdbcMigrationLauncher]     1) run MigrationTableUnlock (probably 'ant patch.unlock')
18:25:34,136 INFO  [JdbcMigrationLauncher]     2) set the lockPollRetries property so the lock times out
18:25:34,136 INFO  [JdbcMigrationLauncher]        (this is dangerous in combination with long-running patches)
18:25:34,136 INFO  [JdbcMigrationLauncher]     3) set the 'patch_in_progress' in the patches table to 'F'

In the LAMS DataBASE, run the following SQL

update patches set patch_in_progress = "F";

### Dowload, configure and build LAMS[edit | edit source]

In order to find these files again, we decided to put them in /opt but any place can do.

sudo chown you:your_group /opt/lams
cd /opt/
git clone https://github.com/lamsfoundation/lams.git

Edit the configuration files

cd /opt/lams/lams_build

* Make a copy of the *.properties files just be sure. In addition, do not change the properties files themselves since they may be overridden by upgrades. Put them into a file called build.properties.

Change common.properties:

db.host=localhost
db.port=3306
db.name=lams3
db.username=lams.....
db.password=real_secret....

Change file unix.properties:

# Maybe not the best place for you, but at TECFA we always create a /data directory for data that must be kept, e.g. portalware, web server files, etc.
contentrepository.base=/data/lams

#JBoss deploy directory (Unix)
server.home=/opt/wildfly

#Sass executable.
sass_exec_file=/usr/bin/sass

Copy the properties to file `build.properties`

Build LAMS

It is not clear to me if one should build various components. In principle, lams-cruise alone should do the trick.

# go to the build directory
cd /opt/lams/lams_build

# Optional: build some stuff
ant build-db
ant deploy-ear
ant deploy-tools

# build lams (ant will read the build.xml file and "cruise" is a "target" that should build the whole thing)
ant lams-cruise

At the end you should see something like:

lams-cruise:
BUILD SUCCESSFUL
Total time: 3 minutes 35 seconds

Now, in principle, LAMS is deployed in the Wildfly sever and could launch it again.

### Compilation errors with OpenJDK 11[edit | edit source]

Some library is missing with openjdk 11 and something else is wrong. I did not get these errors with Openjdk 8, but then I might have installed some extra libraries in the past. I cannot remember.

[echo] LAMS Common: Compiling Java sources
[javac] Compiling 469 source files to /opt/lams/lams_common/build/classes/java
[javac] warning: [options] bootstrap class path not set in conjunction with -source 8
[javac] /opt/lams/lams_common/src/java/org/lamsfoundation/lams/policies/dao/hibernate/PolicyDAO.java:22: error: package com.sun.webkit does not exist
[javac] import com.sun.webkit.PolicyClient;
[javac]                      ^
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 1 error
[javac] 1 warning

### Test running LAMS with WildFly[edit | edit source]

Make sure that the port that you plan to use with WildFly is free. By default the standalone server version is port 8080.

#Now test
cd /opt/wildfly/bin
./standalone.sh

This will take some time since it will have to digest LAMS.

# If your X server works and if you got Firefox installed on the server machine you can see something on the server.
firefox --new-instance
http://localhost:8080

Shutting down the test server

* CTRL-C in the console

Else if you ran it as background process:

jboss-cli.sh --connect --command=:shutdown

## Documentation and using LAMS[edit | edit source]

Attention: This wiki page is not a resource for end users like course designers or learners. Instead see:

* LAMS documentation Wiki Home

* LAMS (this wiki)

Official LAMS 2 installation documentation

* Installing Windows for LAMS (also includes important MySQL configuration information)

* LAMS & LMS Integrations

* Unix Installation and Updating Help (if you plan to use the unix installer)

Lams Moodle integration

* Category:LAMS in the Moodle Wiki

* LAMS v2.0 Integration Setup Step-by-Step Guide

Trouble shooting

* Technical community - Forums