Talk:LAMS installation and configuration
No discussion so far :)
Legacy stuff below:
LAMS 2.1x on On Solaris 10
Lams 2.0 was released on December 6 2006. Since then, there were very several minor upgrades. On March 2008, the current releases are 2.0.4 (stable) and 2.1 (RC1). These installation notes refers mostly to the 2.1RC1 install, but it should help with 2.0.4 too. Official LAMS instructions are a bit Linux centric and this is main reason why you might have a look at this. My notes also should work with older Solaris versions (just make sure to upgrade Java if needed and in this case to set the Java path).
First, read the instructions in:
- Unix Installation and Updating Help (if you plan to use the unix installer)
- Building LAMS (if you plan a source install)
- Development Environment
Disclaimer: I am not a good sysadmin nor is it my idea of fun. This is not a manual, but just my private installation notes I am willing to share. - Daniel K. Schneider 18:30, 20 March 2008 (MET)
So, open a terminal under root ....
Prerequisite 0: Infrastructure
- Make sure your organization doesn't stiffle your creativity with Firewalls. If they do, expect a lot of extrawork.
- Also the 8080 port should be free. Some software like Skype just randomly take up ports. If you run an other server, read Changing Server Ports for LAMS
- Hardware and OS: Any Windows, Linux, MacOS X, Solaris etc. machine will do since LAMS is programmed in JAVA. You just need some diskspace, substantial memory and a not too old JAVA. Also, you may have to adapt some scripts to your special unix brand.
Prerequisite 1: Java software
- Java + ant
Solaris 10 ought to have the right Java + Ant installed. Ant is an installation program like make. Note: You need the JDK/JSE or whater Sun decided to rename it (i.e. the compiler, not just the runtime)
Check if Java can be found, i.e. type:
java -version
... you should have java 1.5.x or better. If you don't, check the system for another java or install a new one. If you do so, make sure to specify the right path according to instructions from the LAMS install page.
Prerequisite 2: Wildfire
This is a XMPP (Jabber) chat server, that actually is called Openfire now. See:
- Installing Wildfire for LAMS
- Also read Installation guide (at Igniterealtime).
You don't really need open/wildfire (but then either your students can't chat). You also may try to use an existing server that works with LAMS. I guess that there ought to be free servers you can use.
- LAMS folks say to install an old 2.6.2. version. Links are available from the LAMS page, you won't find it at Ignite realtime. Note: I have to see whether this is still true, but for the moment I just complied.
- Since this server is written in Java you can take the Mac OSX and others version (i.e. a tar ball).
Installation steps:
1) Uncompress in /usr/local/wildfire or some other place
2) Start the server with ./bin/wildfire start
- This is a typical startup script. You later can copy this script to /etc/init.d/ etc.
3) Configure this server through the web interface. If you are lucky you will have a web browser on your server and an X11 connection.
http://localhost:9090/
Else use an URL like: http://yourhost.org:9090/ ... it should work I think. But do it as fast as possible since you have to set passwords and stuff.
- Use "embedded database" if you want to make the install shorter, else you can set it up with mysql
The configuration process will ask you to fill in a few forms. Just make sure that you use the right server names. You then can log as administrator and you will have access to an administration console.
- Tick "Don't Show History" (Group Chat -> History Settings), but you can do this later
4) Test it. You may want to install a jabber client, e.g. gajim (Ubuntu users can read an article on Jabber
5) Security: You may restrict login to given set of IP addresses or even disable account creation. Chat servers may be taken over by not so friendly people.
- Edit Server Settings->Registration and Login
Installing wildfire should be easy, it was for me. It's a fairly popular product...
Prerequisite 3: Configure MySQL for LAMS
Here are the steps:
1) Make sure to have a MySQL 5.x server. Else install it (and come back)
2) Configure it according to the LAMS instructions, i.e. make changes to file my.cnf:
- This cnf file may not exist (it wasn't in our binary distribution). Also, it can be in different locations
- Type mysql --help to get a list of the places the MySQL server will look for this config file
- So, create my.cnf if you don't have one. Start by copying a *.cfn model from /usr/local/mysql/share/mysql or some other place. I took my-medium.cnf.
Changes to make: file my.cnf should include these lines (no idea what it means and why):
[mysqld] .... transaction-isolation=READ-COMMITTED sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Then restart mysql !
3) Create a LAMS database.
If you upgrade, you may want to make a dump for safeguarding or alternatively kill all tables if you want a fresh start. I personally enjoy destroying whole databases.
Then create:
- a database named "lams"
- a user "lams"
- Make to sure to have it run in UTF-8 mode !
Best way to do this is to use a terminal client and type something this:
mysql -u root -p
Then enter the following lines (alternatively read them from a file like this: mysql -u root -p < input.sql
)
SET FOREIGN_KEY_CHECKS=0; DROP DATABASE IF EXISTS lams; CREATE DATABASE lams DEFAULT CHARACTER SET utf8; SET FOREIGN_KEY_CHECKS=1; GRANT ALL PRIVILEGES ON *.* TO lams@localhost IDENTIFIED BY 'secretpassword'; REVOKE PROCESS,SUPER ON *.* from lams@localhost; quit
Now your database should be ready for LAMS.
Prerequisite 4: JBOSS
JBOSS is a Java application server. LAMS is programmed with this application framework.
- I simply got the 4.0.2 binary from Jboss.org
- Unpack into /usr/local (or wherever else you like it)
gtar xzf jboss-4.0.2.tar.gz -C /usr/local
- Copy some jar files
cp /usr/local/jboss-4.0.2/server/all/lib/jboss-cache.jar /usr/local/jboss-4.0.2/server/default/lib/ 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
Get the archive from the downloads page.
Direct links: this may change !
Note: If you want to play with a release candidate, it's an option to get a more recent version from the CVS software archive. Some bug already may have been fixed. On the other hand, you may encounter a new one. You can browse the lams cvs repository. To get the code from CVS, consult building lams) and then build from source.
Pre-install configuration
(tested with LAMS 2.1 RC1)
0) Read the "readme" file you will find and/or again Unix Installation and Updating Help. It's authorized gospel, this wiki article is not...
1) Decide where the files should go. Either use a typical unix installation with files all over the place or put all LAMS related stuff in some directory, e.g. /usr/local/lams. I prefer the second solution, since this way I can get rid of unwanted software easily...
2) Dezip the installer in some place, e.g. /src/lams
gtar -xvf lams-unix-installer-2.1-RC1.tar.gz
3) Then edit the lams.properties file according to unix installer help. This file sits in the install directory.
Make a backup first
cp lams.properties lams.properties.ORI
Then I did this (as I said I prefer all files in one place for experimental systems). Make sure that you correctly enter db and user names, locations and so forth ! Basically there are three sections:
1) Related to installation
LAMS_DIR=/usr/local/lams/lams DB_NAME=lams DB_USER=lams DB_PASS=secret
2) If you have the Open/wildfire chat server installed, make sure to specify the name of host machine, etc.
3) Installation settings again, I had to change nearly each line ! Make sure to have each line right.
Port number. If you change this, you also have to reconfigure JBOSS (I don't know where but it shouldn't be hard ...)
LAMS_PORT=8080
Server URL (certainly not localhost). E.g. you want something like:
SERVER_URL=http://tecfasun1.unige.ch:8080/lams/
Using the installer
(tested with LAMS 2.1 RC1)
- Reminder: Read Unix Installation and Updating Help
If you did the above (editing lams.properties) alright, then make sure again that Java can be found. In principle, on Solaris systems this is the case and you can ignore instructions about setting the JAVA_HOME. To check, just type:
echo $JAVA_HOME
In a csh shell you may fix the path like this (if needed):
setenv PATH /usr/java/bin/:$PATH
In a Bash shell:
export PATH=/usr/java/bin/:$PATH
Then install, i.e. type:
./install-lams.sh
... most likely it won't work, read on.
- RC2 install script does not work on Solaris
If it fails (with the one script I got it did), use debugging modes first, e.g.:
sh -x ./install-lams.sh sh -v ./install-lams.sh sh -vx ./install-lams.sh
Now to fix the RC1 problems:
1) First repair a bourne shell error, i.e. you either have to make the script a bash shell (best choice):
#!/usr/bin/bash
or alternatively make the following change (next best):
# export JAVA_HOME=$ORIG_JAVA_HOME
- must become
JAVA_HOME=$ORIG_JAVA_HOME export JAVA_HOME
or just comment out the following lines (On Solaris 10 Java will be found):
# checkJava .... # export JAVA_HOME=$ORIG_JAVA_HOME
2) Then there was Linux specific line to be fixed:
# cp -rv assembly/lams.ear ${DEFAULT_DIR}/deploy
cp -r assembly/lams.ear ${DEFAULT_DIR}/deploy
- Success
You are successful when you see this:
LAMS 2.1-RC1 Configuration completed! Please view the README for instructions on how to run LAMS.
Deploying and running LAMS
First time you will start up JBOSS it will take some time deploying LAMS as a web application.
There is a startup script you will find in the JBOSS/bin directory. It just configures JAVA for more memory and then launches the original run.sh script from JBOSS.
./usr/local/jboss-4.0.2/bin/run-lams.sh
This also will fail with RC1. Read on ...
Fixing the script
In 2.1RC2 I had to fix the script, or actually just use something different.
1) Missing shell identification. Add the following as first line:
#!/usr/bin/bash
Note: You have to use Bash not sh (/usr/bin/sh), since the LAMS folks use bash syntax. This line:
export JAVA_HOME="/usr/java"
is wrong in traditional Bourne shell. Should read:
JAVA_HOME="/usr/java" export JAVA_HOME
2) There wasn't enough heap space E.g. from the log file (/usr/local/jboss-4.0.2/server/default/log/)
2008-03-20 11:26:15,574 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'coreSessionFactory' defined in class path resource [org/lamsfoundation/lams/commonContext.xml]: Initialization of bean failed; nested exception is java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space
I first doubled initial and max heap with no effect, something does not pass from this script to the next one.
# export JAVA_OPTS="-server -Xms256m -Xmx512m -XX:MaxPermSize=256m" export JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxPermSize=256m"
Or maybe JAVA_OPTS will have contradictory info like (a good sysadmin would try to dig and understand ...)
-server -Xms128m -Xms512m ...
Anyhow, I then just decided to modify the JBOSS start-up script and use it directly. Around line 141 of file run.sh I inserted more initial and max heap and I also took $JAVA_OPTS out since for some strange reason it already was set with unwanted -XMs .Xmx.
JAVA_OPTS="-Xms512m -Xmx768m -Dprogram.name=$PROGNAME" #JAVA_OPTS="$JAVA_OPTS -Dprogram.name=$PROGNAME"
Notice about Memory: I found that with Moodle integration and about 10 simultaneous users, you need more that 1/2 Giga of memory. This what I had to configure to support a small classroom activity (about 12 students):
JAVA_OPTS="-server -Xms512m -Xmx1280m -Dprogram.name=$PROGNAME"
Start and stop LAMS
To start LAMS, go to the JBOSS bin directory:
cd /usr/local/jboss-4.0.2/bin/
Try first:
./run-lams.sh
If it doesn't work, fix heap space in the run.sh file directly (as explained above) and run it:
./run.sh &
To avoid getting all the traces in the terminal
./run.sh > /dev/null &
Then you should get this (e.g. last line in the log file). If not, search for errors.
2008-03-20 12:03:21,967 INFO [org.jboss.system.server.Server] JBOSS (MX MicroKernel) [4.0.2 (build: CVSTag=JBoss_4_0_2 date=200505022023)] Started in 1m:52s:938ms
To stop LAMS, just stop the JBOSS server. If it won't work, just kill the big hanging Java process.
./shutdown.sh -S
Always consult the log file when in doubt (the first time you start JBOSS it will take some time to install LAMS).
tail ../server/default/log/server.log
LAMS first test
If you you are here, then LAMS ought to run, e.g. try a URL like:
http://tecfasun1.unige.ch:8080/lams/
If you forgot the login name and password, you can retrieve it from
/src/lams/lams-unix-installer-2.1-RC1/lams.properties
Configuration
To be continued. Basically, I managed to get the MOODLE interface working (see below).
Discussion / Problems
- I didn't use it in production so far. As next step I'll have my students create sequences. - Daniel K. Schneider 12:36, 25 March 2008 (MET)
- Other people from TECFA played with it and it's still running after a few days.
- JBOSS/LAMS requires quite a lot of memory (over 500MB residual memory and 800MB total size). This no problem on a big new server, but can be on an older server.
Legacy notes for a lams 2.0 Solaris install
When I installed LAMS for the first time, the install had to be done manually. At some point I'll try again a manual install. For now, understand please that some things may have changed.
LAMS pre-build configuration
I configured the following entries in the following files. Most entries are related to file paths.
In lams_build directory:
File: lams/lams_build/shared.properties (nothing to change) File: lams/lams_build/common.properties osPropertiesName=unix db.password=XXXX
File: lams/lams_build/unix.properties contentrepository.directory=/usr/local/lams/repository
Change this in three locations !!
File: lams_build/conf/unix/jboss/service/mysql-ds.xml <password>XXXX</password>
In lams_common directory:
File: lams/lams_common/db/sql/insert_unix_config_data.sql ('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) !
In the same directory you may change the admin login and password (not tested !)
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).
What if you have another server running on port 8080 ?
You can run JBOSS on a different port, but need to edit a few files. Read this:
- Configuring Multiple LAMS Instances on One Machine (LAMS)
- ConfiguringMultipleJBossInstancesOnOneMachine (JBoss)
Make directories for lams
They must match the above of course
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 for some quick playing ...
chmod -R 777 /usr/local/lams
Build
Type the following commands in this order. (You don't need Ecplise to build LAMS). But stop the JBOSS server when you do this.
cd /src/lams/lams_build
ant rebuild-db ant assemble-ear ant deploy-ear ant deploy-tools ant copyfiles
Run it
cd /usr/local/jboss-4.0.2/bin/ ./run.sh &
The adminstrator login is sysadmin (don't forget this)
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 ;)
/src/lams/lams_common/db/sql/insert_users.sql
Server configuration
See Configuring your LAMS Server.
- 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.
File: /usr/local/jboss-4.0.2/bin/run.sh
Around line 150 insert:
JAVA_OPTS="$JAVA_OPTS -Xms500m -Xmx500m -Dprogram.name=$PROGNAME" # Display our environment
Things I did wrong
Now for some human touch ....
- Forget to specify the OS
- 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
Debuging
Look at files in:
/usr/local/jboss-4.0.2/server/default/log/
Then stop JBoss,
cd /usr/local/jboss-4.0.2/bin/shutdown -S &
Repair misconfigurations above, rebuild with ant and run it again :) 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 ?
Moodle - LAMS integration
The LAMS v2.0 Integration Setup Step-by-Step Guide is fairly well done :)
Short installation summary (see the above guide)
I managed this to work with LAMS 2.1RC1. I did fail with an early LAMS 2.0 version - Daniel K. Schneider 18:30, 20 March 2008 (MET). The current setup is:
- Moodle runs on one machine (tecfax.unige.ch)
- LAMS runs on a different machine
I did not yet use LAMS in production so far. But I inserted the Beyond the VLE module through Moodle. I was able to:
- Use with Moodle student ID's (test and test2)
- not use with Moodle student ID's as monitor (that's correct)
- Use it with Moodle admin ID as student and monitor
- Chat did work.
- On the Moodle side
First of all make sure that you do no skip step 4 below (you need the LAMS v2 module and not LAMS !)
- Get a new file (it seems that fixes are made sometimes)
- Unzip the file
- Move the lamstwo directory to moodle/mod/
- Move the lamstwo.php file to moodle/lang/en_utf8/
- Login as admin and go to http://yourmoodle/admin, LAMS tables will be created automatically.
- Go to modules and click settings for LAMS2 module and put the proper values in, I used:
server_url: http://tecfasun1.unige.ch:8080/lams server_id: moodle server_key: somethingsecret request_source: moodle
- On the LAMS side
- The integrated server setuhttp://wiki.lamsfoundation.org/display/lamsdocs/Homep is:
Id: moodle Key: somethingsecret Description: TECFA Moodle Prefix: mdl Organisation: moodle User Information: URL: http://tecfax.unige.ch/moodle/mod/lamstwo/userinfo.php?ts=%timestamp%&un=%username%&hs=%hash% Timeout URL: http://tecfax.unige.ch/lams/timeout.html
- Notes
Make sure that you do not mix up case: E.g. if your group is called "moodle" in LAMS use "moodle" and not "Moodle" (I got stuck with this)
Your JBOSS server may need yet more memory space allocated (see above)
Be careful about using several browser windows and tabs. The "system Administration" page will use an already openend window/tab. So if the "Sys Admin" link doesn't bring up the tool, look for it...
If you tried a Moodle LAMS integration in the past with an older LAMS server, your MOODLE may have junk left inside. Get rid of it (see next item).
- Problems
An error (for 2.1RC1) I was getting was:
Could not add a new instance of lamstwo
This happened after validating a LAMS activity in Moodle. In older version of the LAMS/Moodle mod something was wrong, I believe a missing table.
To fix this
- Delete the LAMS2 module in MOODLE.
- Remove the files in the mod directory
- Reinstall a new version (downloaded fresh).