LAMS installation and configuration: Difference between revisions

The educational technology and digital learning wiki
Jump to navigation Jump to search
(Added references to LAMS version 4.5, included default users, improve git instructions)
 
(154 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{incomplete}}
<!-- <pageby nominor="false" comments="false"/> -->
== Definition ==
== Definition ==


This page contains installation tips for [[LAMS]]
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.
LAMS is a JAVA/JBOSS-based application and needs some installation skills on Windows and good installation skills for Unix.


== LAMS 2RC2 Windows XP PC ==
Note: I put the legacy stuff in the [[Talk:LAMS_installation_and_configuration|discussion page]], e.g. LAMS 2.x for Ubuntu, LAMS 2.1RC for Solaris


Do not try to install LAMS if you lack basic installation experience and technical '''reading skills'''. Here are just a few remarks in addition to the [http://wiki.lamsfoundation.org/display/lamsdocs/Windows+Installer+Help LAMS installation instructions]. I also strongly suggest to look at the [http://lamscommunity.org/dotlrn/clubs/technicalcommunity/forums/forum-view?forum_id=4929 Problems Installing LAMS] Forum.
== LAMS 4.5+ ==
As of July 2021, LAMS 4.5 was released and is the latest stable release.  


=== Other Software ===
=== Getting the LAMS source code ===
To run it on windows you need to install other software.
Source code is available from [https://github.com/lamsfoundation/lams Github]. The code branch to use is v4.5
* Java JSE 5.0 (update 9), ''not just the JRE''. Get it from [http://java.sun.com/javase/downloads/index.jsp Sun].
* MySQL: Get it directly from [http://dev.mysql.com/downloads/ MySQL] and take the '''Installer version''' (not the zip installation).
** Install it and remember the password
** I suggest '''not''' installing/using a [[WAMP]] environment for LAMS 2RC 2. The LAMS installer 2Rc2 could not find MySQL in my WampServer environment even if it was told where to look for in the LAMS installer.
** Hack would be to manually edit the registry with this [http://dev.mysql.com/doc/refman/5.0/en/windows-install-wizard.html information] from MySQL AB and [http://lamscommunity.org/dotlrn/clubs/technicalcommunity/forums/message-view?message_id=118753 this posting] and [http://lamscommunity.org/dotlrn/clubs/technicalcommunity/forums/attach/download/win_registry_msql%2ejpg?object_id=118756&attachment_id=118758 picture] by Ernie Ghiglione. Basically one needs to reproduce the MySQL entry from the official MySQL AB installer:
HKEY_LOCAL_MACHINE
  SOFTWARE
    MySQL AB
      MySQL Server 5.0 
                          Location c:\wamp\mysql
                          Version  5.0.27
... but this still didn't work for me. Something I did not try was to add mysqladmin.exe to the bin directory which is missing (see: [http://lamscommunity.org/dotlrn/clubs/technicalcommunity/forums/message-view?message_id=341725 Jun-Dir Liew]'s question and try it ... I don't have the time to do it right now. E.g. this file may be part of the simple zip / no registry version from the MySQL site).


=== MySQL ===
'''Required software'''
* If you use a WAMP package you must know where MySQL sits. E.g. c:\wamp\mysql if you work with "WampServer" (but see above that I failed, rather work with an "official MySQL installer from MySQL AB). If you use the official MySQL installer, there will be no problem.
* Git
* Wildfly 14.0.1
* OpenJDK 11
* MySQL 8.0
* Ant  (Java task compiler)


=== LAMS ===
==== OpenJDK 11 ====
* Has an installer and if you got the above right it will install without problems. You may have a firewall. In this case make sure to open the necessary ports. Also pay attention to popup blockers in your navigator. LAMS worked fine with both IE 6 and Firefox 1.5x.
In Debian/Ubuntu 20.04


== Lams 2.0 on On Solaris ==
$ sudo apt install openjdk-11-jdk-headless
$ sudo apt install fontconfig
==== MySQL 8.0 DB ====


Lams 2.0 was released on december 6 2006.
$ 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


First, read the instructions in [http://wiki.lamsfoundation.org/display/lams/Building+LAMS Building LAMS] '''and''' [http://wiki.lamsfoundation.org/display/lams/Development+Environment Development Environment]
===== Basic MySQL configuration =====
''/etc/mysql/mysql.conf.d/mysqld.cnf''


=== Other software ===
...
# 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 ====
 
$ 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 ====
LAMS is open source and its code is available from [https://github.com/lamsfoundation/lams GitHub]<syntaxhighlight lang="bash">
git clone https://github.com/lamsfoundation/lams.git
</syntaxhighlight>By default branch is LAMS' latest stable release as of July 2021, that's version 4.5. If you need a previous branch, see [https://github.com/lamsfoundation/lams/branches 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 ====
 
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:
{| class="wikitable"
|+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: <syntaxhighlight lang="bash">
ant slim-standalone
</syntaxhighlight>
 
== LAMS 3.1 ==
 
As of March 2019, we do have a new LAMS installation that works fine in virtual server running Ubuntu 18.x.
 
* [https://github.com/lamsfoundation/lams Github]
* [https://wiki.lamsfoundation.org/display/lams/LAMS+3.1+in+Ubuntu 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.
* [[IMS Learning Tools Interoperability|LTI]] integration, i.e. Moodle can "consume" LAMS contents
 
=== LTI external tool integration ===
 
Documentation
* [https://docs.moodle.org/36/en/External_tool_settings External tool settings] (Moodle 3.6 manual).
* [https://wiki.lamsfoundation.org/display/lams/Integrations 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 ===
 
* We did that with LAMS 2.5. To be tested with LAMS 3.0. There is a [https://wiki.lamsfoundation.org/display/lams/Integrations plugin for download] and the method should be the same.
 
== LAMS 3.0 ==
 
As of November 2018, the current system is LAMS 3.x. You can test this with a [https://demo.lamsfoundation.org/lams/ 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 [https://github.com/lamsfoundation/lams 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 [http://wildfly.org/downloads/ Wildfly], formerly JBoss (?). E.g. see [https://www.howtoforge.com/tutorial/ubuntu-wildfly-jboss-installation/ 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 [https://www.lamsinternational.com/ Lams International] and also through content services (to be verified).


; Already installed probably


* Solaris 10 ought to have the right java + ant installed.


* Make sure that you also have a MySQL '''5.x''' and to create a lams database with a lams user
=== Prerequisites ===


; JBOSS
;Java
JBOSS is a Java application server.
: 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)


* I got the 4.0.2 binary from [http://labs.jboss.com/portal/jbossas/download Jboss.org]
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.


* Unpackage into /usr/local
  udo apt install openjdk-8-jdk
  gtar xzf jboss-4.0.2.tar.gz -C /usr/local


* Copy some jar files
  To use Java 8 by default, you can do the following. Most software seems to use Java 8 anyhow ....
  cp /usr/local/jboss-4.0.2/server/all/lib/jboss-cache.jar /usr/local/jboss-4.0.2/server/default/lib/
  sudo update-alternatives --config java
  cp /usr/local/jboss-4.0.2/server/all/lib/jgroups.jar /usr/local/jboss-4.0.2/server/default/lib/


=== LAMS source file download ===


* [http://lamscommunity.org/2.0/tarballs/lams2.0.tar.gz UK]
;SASS (some kind of CSS pre-processor)
  * [http://saturn.melcoe.mq.edu.au/installers/lams2.0.tar.gz Australia]
  sudo apt install sass


=== LAMS pre-build configuration ===
;Ant
sudo apt install ant


I configured the following entries in the following files. Most entries are related to file paths.
;If exists, stop your old LAMS, e.g.
: /etc/init.d/lams2 stop


In lams_build directory:
=== Kill old LAMS ===


  File: lams/lams_build/shared.properties
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 ...
  (nothing to change)
 
; 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 ===
  # 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 ===
 
(1) Check what you got
 
mysqlshow -p -u root
 
(2) Create a new database and user
    
    
  File: lams/lams_build/common.properties
  mysql -u root -p
  osPropertiesName=unix
and copy/paste an adapted version of the following
  db.password=XXXX
<source lang="sql">
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;
</source>


File: lams/lams_build/unix.properties
After aborting wildfly you can run intot the following type of error (see also [https://lamscommunity.org/dotlrn/clubs/technicalcommunity/forums/message-view?message_id=1069554 this], dated 07/14/10)
  contentrepository.directory=/usr/local/lams/repository
/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'


Change this in '''three''' locations !!
In the LAMS DataBASE, run the following SQL
  File: lams_build/conf/unix/jboss/service/mysql-ds.xml
  update patches set patch_in_progress = "F";
    <password>XXXX</password>


In lams_common directory:
=== Dowload, configure and build LAMS ===


File: lams/lams_common/db/sql/insert_unix_config_data.sql
In order to find these files again, we decided to put them in /opt but any place can do.
  ('ServerURL','http://tecfasun1.unige.ch:8080/lams/');
  ('TempDir','/usr/local/lams/temp');
  ('DumpDir','/usr/local/lams/dump');
  ('SMTPServer','mail.tecfa.unige.ch');
  ('LamsSupportEmail','webmaster@tecfa.unige.ch');
  ('ContentRepositoryPath','/usr/local/lams/repository'); 


... Don't miss the port number for the server URL (e.g. 8080) !
sudo chown you:your_group /opt/lams
cd /opt/
git clone https://github.com/lamsfoundation/lams.git


In the same directory you may change the admin login and password (not tested !)
'''Edit the configuration files'''
File: lams/lams_common/db/sql/insert_users.sql 


Note: I did not find an LamsHome property in any file (''this conflicts with the installation instructions'').
cd /opt/lams/lams_build


=== Make directories for lams (they must match the above of course) ===
* 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.
mkdir /usr/local/lams
mkdir /usr/local/lams/temp
mkdir /usr/local/lams/dump
mkdir /usr/local/lams/repository


I don't know who runs JBoss, so I just deprotected
Change common.properties:
  chmod -R 777 /usr/local/lams
  db.host=localhost
db.port=3306
db.name=lams3
db.username=lams.....
db.password=real_secret....


=== Build ===
Change file unix.properties:
Type the following commands ''in this order''. (You don't need Ecplise to build LAMS). But stop the JBOSS server when you do this.
# 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.
  cd /src/lams/lams_build
  contentrepository.base=/data/lams


  ant rebuild-db
  #JBoss deploy directory (Unix)
  ant assemble-ear
server.home=/opt/wildfly
  ant deploy-ear
 
#Sass executable.
sass_exec_file=/usr/bin/sass
 
'''Copy the properties to file''' <code>build.properties</code>
 
'''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
  ant deploy-tools
ant copyfiles


=== Run it ===
# build lams (ant will read the build.xml file and "cruise" is a "target" that should build the whole thing)
cd /usr/local/jboss-4.0.2/bin/
ant lams-cruise
  ./run.sh &
 
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 ===
 
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 ===
 
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


The sysadmin login password is in the SQL file below. You may change it before you build, I was quite frustrated not to able to log in ;)
This will take some time since it will have to digest LAMS.
/src/lams/lams_common/db/sql/insert_users.sql


=== Server configuration ===
# If your X server works and if you got Firefox installed on the server machine you can see something on the server.
See [http://www.lamsinternational.com/documentation/advanced_p.php?g=configure Configuring your LAMS Server].
firefox --new-instance
http://localhost:8080


* Java may not have enough heap space (it runs out of memory). Replace the 256 with something bigger. I think that the run.sh has to be fixed. Otherwise it may be the Tomcat config somewhere.
'''Shutting down the test server'''


File: /usr/local/jboss-4.0.2/bin/run.sh
* CTRL-C in the console
Around line 150 insert:
JAVA_OPTS="$JAVA_OPTS -Xms500m -Xmx500m -Dprogram.name=$PROGNAME"
# Display our environment


=== Debug ===
Else if you ran it as background process:
Look at files in:
  jboss-cli.sh --connect --command=:shutdown
  /usr/local/jboss-4.0.2/server/default/log/
 
== Documentation and using LAMS ==
Then stop JBoss,
 
cd /usr/local/jboss-4.0.2/bin/shutdown -S &
'''Attention''': This wiki page is not a resource for end users like course designers or learners. Instead see:
 
Repair misconfigurations above, rebuild with ant and run it again :)
* [http://wiki.lamsfoundation.org/display/lamsdocs/Home LAMS documentation Wiki Home]
I don't know if global cleaning up is an efficient idea, but I do it anyhow as a last resort when I get stuck, e.g.:
# Execute ''ant clean''
# Drop the lams database (and don't forget to create it again)
# Empty the JBoss server/default/deploy/lams.ear/ directory ?
=== Things I did wrong ===
Now for some human touch ....


* Forget to specify the OS
* [[LAMS]] (this wiki)
* Forgot to add the port number of the server URL
* Forgot to create the lams directory
* Only changed password in one location in lams_build/conf/unix/jboss/service/mysql-ds.xml


=== To Do list ===
; Official LAMS 2 installation documentation
(I will report on this later, for the moment I got other things to do - [[User:DSchneider|DSchneider]] 20:10, 6 December 2006 (MET))


* Install the chat server
* [http://wiki.lamsfoundation.org/display/lamsdocs/Installing+MySQL+on+Windows+for+LAMS Installing Windows for LAMS] (also includes important MySQL configuration information)
* Test and tweak
* Integrate with Moodle


== Moodle - LAMS integration ==
* [http://wiki.lamsfoundation.org/display/lamsdocs/Integrations LAMS & LMS Integrations]


* We will try it with LAMS 2RC2 (not done yet)
* [http://wiki.lamsfoundation.org/display/lamsdocs/Unix+Installer+Help Unix Installation and Updating Help] (if you plan to use the unix installer)


=== Documentation ===
; Lams Moodle integration


* [http://www.linuxtraining.org.uk/blogger1.html LAMS installation on CentOS 4 (RHEL 4)] (LAMS 1.x)
* [http://docs.moodle.org/en/Category:LAMS Category:LAMS in the Moodle Wiki]
* [http://docs.moodle.org/en/Category:LAMS Category:LAMS in the Moodle Wiki]
* [http://lamsfoundation.org/integration/moodle/walkthru.html LAMS and Moodle Integration Walkthrough] (LAMS 1.x)


[[Category: Educational technologies]]
* [http://wiki.lamsfoundation.org/display/lamsdocs/LAMS+v2.0+Integration+Setup+Step-by-Step+Guide LAMS v2.0 Integration Setup Step-by-Step Guide]
 
; Trouble shooting
* [http://lamscommunity.org/dotlrn/clubs/technicalcommunity/ Technical community - Forums]
 
[[Category: Installation tips]]
[[Category: Installation tips]]

Latest revision as of 01:55, 16 November 2021

Definition

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+

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

Getting the LAMS source code

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

In Debian/Ubuntu 20.04

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

MySQL 8.0 DB

$ 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

/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

$ 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

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

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

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

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

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

  • 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

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 is available as commercial offering through Lams International and also through content services (to be verified).


Prerequisites

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

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

# 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

(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

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

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

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

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

Official LAMS 2 installation documentation
Lams Moodle integration
Trouble shooting