Recently I got into a twitter discussion about installing Alfresco Community on 32bit Ubuntu. Alfresco only provides 64bit installers these days (all-in-one), and the Tomcat distribution is no more. Since Alfresco is a Java app, the app doesn’t matter. It is Java and the helper applications needed, that need to be 32/64bit.
This blog will show you step by step how to install Alfresco and the helper apps on 32bit Ubuntu 11.10 (server). It will use OpenJDK (since it is the default in Ubuntu 11.10), LibreOffice (default in Ubuntu repositories) and MySQL (because I am more familiar with than Postgress). On the way we will install ImageMagick, Pdf2swf and FFmpeg.
First be sure we are on the latest version of everything:
sudo apt-get update sudo apt-get upgrade
If you run Ubuntu on a VM, and your host is Windows, you might want to use Putty (an ssh client for Windows), and then you need an ssh server on your VMWare box:
sudo apt-get install ssh openssh-blacklist openssh-blacklist-extra
Now you can access your VM from a Windows app, more easy if you need to copy a name or content into a file you are editing. I assume you download packages you need from the internet, and in the end this step-by-step guide expects them to exist in your home folder. You can either download these packages from within Ubuntu, or copy them into your home folder using WinSCP . We are going to install Alfresco in /opt/alfresco40c (4 zero c, the version number). Let’s create this folder right now:
sudo mkdir /opt/alfresco40c
And assign yourself permissions to write in that folder: (assuming your username is ‘uname’)
sudo chown -R uname /opt/alfresco40c
Validate your results by
ls -la /opt
You should note that your username shows in the line displaying folder alfresco40c
Java
Lets install OpenJDK first. (SUN-Java, oh, sorry, Oracle is fine too, but requires more fuzzing with adding other repositories to Ubuntu.) (I happened to install this particular version because the person in question used this version of OpenJDK)
sudo apt-get install openjdk-6-jdk
There most likely is an issue with OpenJDK and Rhino. There are some workarounds too. If you can run the statement below in a terminal window, you’re fine:
java org.mozilla.javascript.tools.shell.JSConsole
Assuming you don’t need Rhino for anything other than Alfresco, you’re save to remove the rhino.jar library all together. See the Alfresco wiki for details and workarounds. I just renamed the rhino.jar provided by OpenJDK:
sudo mv /usr/lib/jvm/java-6-openjdk/jre/lib/rhino.jar /usr/lib/jvm/java-6-openjdk/jre/lib/rhino.jar.not
Let’s check if we got Java installed right:
java -version
responds with something like:
java version "1.6.0_23" OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10) OpenJDK Client VM (build 20.0-b11, mixed mode)
MySQL
Then we need MySQL
sudo apt-get install mysql-server mysql-client
Remind: Remember the root password you set when you install the server. You will need it later on!
Validate:
mysql -u root -p
It will display:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 45 Server version: 5.1.58-1ubuntu1 (Ubuntu) Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
You type:
show databases; MySQL responds with: +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.05 sec)
Done!
ImageMagick, SWFTools, FFMpeg and OpenOffice
Since you install without the all-in-one installer, you also need ImageMagic, FFMpeg and OpenOffice:
sudo apt-get install imagemagick ffmpeg libreoffice
ImageMagick is used to convert and scale images. FFMpeg is needed if you store video in your repository and want to use the audio/video player plugin of Alfresco Share (assuming this will still work in version 4.0). The OpenOffice.org project is actually forked into the independent LibreOffice. Ubuntu has chosen to provide LibreOffice in their repositories over OpenOffice.
Validate:
whereis convert whereis ffmpeg whereis soffice.bin
SWFTools is used to create flash from pdf documents, to allow previews of documents in Share. This tool does not exist in the 32bit repositories of Ubuntu 11.10. A workaround is to download a slightly older (32bit) version of this tool from https://launchpad.net/ubuntu/lucid/i386/swftools/0.9.0-0ubuntu1. The download link is just below “Downloadable files” on the right-bottom of your page. Lets install this deb package:
sudo dpkg -i swftools_0.9.0-0ubuntu1_i386.deb
Validate:
whereis pdf2swf
Tomcat
Download the latest Tomcat 6 from Apache: http://tomcat.apache.org/download-60.cgi (my current version is 6.0.35). Unpack Tomcat (in your home folder):
tar -xvf apache-tomcat-6.0.35.tar.gz
Rename Tomcat to tomcat, and move it to where it should:
mv apache-tomcat-6.0.35 /opt/alfresco40c/tomcat
Lets’s validate if Tomcat is installed right, let’s start Tomcat:
cd /opt/alfresco40c/tomcat/bin ./startup.sh Using CATALINA_BASE: /opt/alfresco40c/tomcat Using CATALINA_HOME:/opt/alfresco40c/tomcat Using CATALINA_TMPDIR:/opt/alfresco40c/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH:/opt/alfresco40c/tomcat/bin/bootstrap.jar
And check (if there is a process running that contains ‘java’ in its signature):
ps -ef |grep java tpeelen 22460 1 8 15:35 pts/0 00:00:01 /usr/bin/java -Djava.util.logging.config.file=/opt/alfresco40c/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/alfresco40c/tomcat/endorsed -classpath /opt/alfresco40c/tomcat/bin/bootstrap.jar -Dcatalina.base=/opt/alfresco40c/tomcat -Dcatalina.home=/opt/alfresco40c/tomcat -Djava.io.tmpdir=/opt/alfresco40c/tomcat/temp org.apache.catalina.startup.Bootstrap start tpeelen 22482 15472 0 15:35 pts/0 00:00:00 grep --color=auto java
Rock! That works. Now, shutdown Tomcat:
./shutdown.sh Using CATALINA_BASE: /opt/alfresco40c/tomcat Using CATALINA_HOME:/opt/alfresco40c/tomcat Using CATALINA_TMPDIR:/opt/alfresco40c/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH:/opt/alfresco40c/tomcat/bin/bootstrap.jar
Validate:
ps -ef |grep java tpeelen 22516 15472 0 15:38 pts/0 00:00:00 grep --color=auto java
There is no process running that contains ‘java’… Nice. That works.
Add additional folders for use with Alfresco:
mkdir /opt/alfresco40c/tomcat/shared mkdir /opt/alfresco40c/tomcat/shared/classes mkdir /opt/alfresco40c/tomcat/shared/lib
Edit Tomcat’s catalina.properties to tell Tomcat to actually use the added directories under ‘tomcat/shared’:
nano /opt/alfresco40c/tomcat/conf/catalina.properties
Change the value of the shared.loader= property to the following:
shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
Save the file by entering Ctrl-X, a ‘Y’ and an <Enter>.
By default, Tomcat uses ISO-8859-1 character encoding when decoding URLs that are received from a browser. This may cause problems when creating, uploading, and renaming files with international characters. Edit the server.xml file
nano /opt/alfresco40c/tomcat/conf/server.xml file.
Locate the Connector section, and then add the URIEncoding=”UTF-8″ property.
<Connector port="80" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="20000" redirectPort="8443" />
Save the server.xml file (Ctrl-X, a ‘Y’ and an <Enter>).
Download the recent JDBC driver belonging to you MySQL instance (Ubuntu is shipped with MySQL 5.1 by default). Go to http://www.mysql.com/downloads/connector/j/ and download the recent version.
Extract the archive (in your home directory)
tar -xvf mysql-connector-java-5.1.18.tar.gz
And copy the driver to Tomcat:
cp mysql-connector-java-5.1.18/mysql-connector-java-5.1.18-bin.jar /opt/alfresco40c/tomcat/lib
Alfresco
We are getting there. Download the Alfresco-community-4.0.c.zip from: https://process.alfresco.com/ccdl/?file=release/community/build-3979/alfresco-community-4.0.c.zip (Any other version will do too, be sure to select, on the download page, the link ‘Custom Installs & Optional Modules’!)
Unzip the archive in your home folder. You probably don’t have ‘unzip’ as one of your tools. Get it now:
sudo apt-get install unzip unzip alfresco-community-4.0.c.zip
This will get you 3 folders; licenses, bin and webapps. Distribute as follows:
mv bin /opt/alfresco40c/ mv licenses /opt/alfresco40c/ mv web-server/endorsed/* /opt/alfresco40c/tomcat/endorsed mv web-server/shared/* /opt/alfresco40c/tomcat/shared mv web-server/lib/* /opt/alfresco40c/tomcat/lib mv web-server/webapps/* /opt/alfresco40c/tomcat/webapps/
For your convenience, create a folder to store some database scripts:
mkdir /opt/alfresco40c/extras
Create the sql-script to create a database:
nano /opt/alfresco40c/extras/db_setup.sql
This file has the contents:
create database alfresco default character set utf8 collate utf8_bin; grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option; grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;
Create the sql-script to drop the database:
nano /opt/alfresco40c/extras/db_remove.sql
This file has the contents:
drop database alfresco; revoke all privileges, grant option from 'alfresco'@'localhost'; drop user 'alfresco'@'localhost';
Actually create an empty database + user:
mysql -u root -p </opt/alfresco40c/extras/db_setup.sql
Remind, you need your root password for this!
Create a file to start Alfresco:
nano /opt/alfresco40c/alfresco.sh
Fill it with:
#!/bin/sh
# Start or stop Alfresco server
# Set the following to where Tomcat is installed
ALF_HOME=/opt/alfresco40c
cd "$ALF_HOME"
APPSERVER="${ALF_HOME}/tomcat"
export CATALINA_HOME="$APPSERVER"
# Set any default JVM values
#export JAVA_OPTS='-Xms512m -Xmx1024m -Xss1024k -XX:MaxPermSize=256m -XX:NewSize=256m -server'
export JAVA_OPTS='-Xms512m -Xmx768m -Xss768k -XX:MaxPermSize=256m -XX:NewSize=256m -server'
export JAVA_OPTS="${JAVA_OPTS} -Dalfresco.home=${ALF_HOME} -Dcom.sun.management.jmxremote"
#
if [ "$1" = "start" ]; then
"${APPSERVER}/bin/startup.sh"
# if [ -r ./virtual_start.sh ]; then
# sh ./virtual_start.sh
# fi
# if [ -r ./start_oo.sh ]; then
# sh ./start_oo.sh
# fi
elif [ "$1" = "stop" ]; then
"${APPSERVER}/bin/shutdown.sh"
# if [ -r ./virtual_start.sh ]; then
# sh ./virtual_stop.sh
# fi
# if [ -r ./start_oo.sh ]; then
# killall soffice.bin
# fi
fi
Make sure you can actually execute the script:
sudo chmod ug+x /opt/alfresco40c/alfresco.sh
Provided you have valid alfresco-global.properties, you should be able to start and stop Alfresco by entering:
cd /opt/alfresco40c ./alfresco.sh start
or
./alfresco.sh stop
Check if your action was successful by validating if the process is running (or has stopped. Remind, stopping Alfresco might take a while)
ps -ef |grep java
Goto http://the-ip-address:8080/alfresco or http://the-ip-address:8080/share and see if your install was successful!
Have fun!
- This tutorial does not fix you with an Alfresco that starts as your system starts, nor does it gently stop when your system stops. It can, see the Alfresco wiki.
- Another thing is that Ubuntu does not allow you to use portnumbers below 1024 as a non-root account. Therefore you need some port-redirections as explained in Alfresco’s wiki.
- Adding the Sharepoint integration AMP is something you need to do by hand. If there is enough demand, I might elaborate on that…
Alfresco-global.properties
Your alfresco-global.properties could look like (store in tomcat/shared/classes/alfresco-global.properties:
###############################
## Common Alfresco Properties #
###############################
#
# Sample custom content and index data location
#
dir.root=/opt/alfresco40/alf_data
#
# Sample database connection properties
#
db.name=alfresco
db.username=alfresco
db.password=alfresco
db.host=localhost
db.port=3306
#
# External locations
#-------------
ooo.exe=/usr/bin/soffice
ooo.enabled=true
jodconverter.officeHome=/usr/lib/libreoffice
jodconverter.portNumbers=8101
jodconverter.enabled=true
img.root=/usr
swf.exe=/usr/bin/pdf2swf
ffmpeg.exe=/usr/bin/ffmpeg
#
# Property to control whether schema updates are performed automatically.
# Updates must be enabled during upgrades as, apart from the static upgrade scripts,
# there are also auto-generated update scripts that will need to be executed. After
# upgrading to a new version, this can be disabled.
#
db.schema.update=true
#
# MySQL connection
#
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://${db.host}:${db.port}/${db.name}
#db.driver=org.gjt.mm.mysql.Driver
#db.url=jdbc:mysql://localhost/alfresco340?useUnicode=yes&characterEncoding=UTF-8
#
# Oracle connection
#
#db.driver=oracle.jdbc.OracleDriver
#db.url=jdbc:oracle:thin:@localhost:1521:alfresco
#
# SQLServer connection
# Requires jTDS driver version 1.2.5 and SNAPSHOT isolation mode
# Enable TCP protocol on fixed port 1433
# Prepare the database with:
# ALTER DATABASE alfresco SET ALLOW_SNAPSHOT_ISOLATION ON;
#
#db.driver=net.sourceforge.jtds.jdbc.Driver
#db.url=jdbc:jtds:sqlserver://localhost:1433/alfresco
#db.txn.isolation=4096
#
# PostgreSQL connection (requires postgresql-8.2-504.jdbc3.jar or equivalent)
#
#db.driver=org.postgresql.Driver
#db.url=jdbc:postgresql://localhost:5432/alfresco
#
# Index Recovery Mode
#-------------
index.recovery.mode=AUTO
#
# Outbound Email Configuration
#-------------
#mail.host=
#mail.port=25
#mail.username=anonymous
#mail.password=
#mail.encoding=UTF-8
#mail.from.default=alfresco@alfresco.org
#mail.smtp.auth=false
#
# Alfresco Email Service and Email Server
#-------------
# Enable/Disable the inbound email service. The service could be used by processes other than
# the Email Server (e.g. direct RMI access) so this flag is independent of the Email Service.
#-------------
#email.inbound.enabled=true
# Email Server properties
#-------------
#email.server.enabled=true
#email.server.port=25
#email.server.domain=alfresco.com
#email.inbound.unknownUser=anonymous
# A comma separated list of email REGEX patterns of allowed senders.
# If there are any values in the list then all sender email addresses
# must match. For example:
# .*\@alfresco\.com, .*\@alfresco\.org
# Allow anyone:
#-------------
#email.server.allowed.senders=.*
#
# The default authentication chain
# To configure external authentication subsystems see:
# http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems
#-------------
authentication.chain=alfrescoNtlm1:alfrescoNtlm
# The password for the default principal (only used for LDAP sync)
#ldap.synchronization.java.naming.security.credentials=secret
#
# URL Generation Parameters (The ${localname} token is replaced by the local server name)
#-------------
#alfresco.context=alfresco
#alfresco.host=${localname}
#alfresco.port=8080
#alfresco.protocol=http
#
#share.context=share
#share.host=${localname}
#share.port=8080
#share.protocol=http
cifs.enabled=true
ftp.enabled=true
cifs.serverName=${localname}
cifs.hostannounce=true
imap.server.enabled=false
#imap.server.port=143
#imap.server.host=
# Default value of alfresco.rmi.services.host is 0.0.0.0 which means 'listen on all adapters'.
# This allows connections to JMX both remotely and locally.
#
alfresco.rmi.services.host=0.0.0.0
#
# RMI service ports for the individual services.
# These seven services are available remotely.
#
# Assign individual ports for each service for best performance
# or run several services on the same port. You can even run everything on 50500 if needed.
#
# Select 0 to use a random unused port.
#
#avm.rmi.service.port=50501
#avmsync.rmi.service.port=50502
#attribute.rmi.service.port=50503
#authentication.rmi.service.port=50504
#repo.rmi.service.port=50505
#action.rmi.service.port=50506
#wcm-deployment-receiver.rmi.service.port=50507
#monitor.rmi.service.port=50508
[update 10 feb 2012: (thanks @CristinaMartinR)]
For Postgress as a database and a sample alfresco.properties file, take a look at http://www.xinotes.org/notes/note/1590/

Great article! Thanks!
Thanks for the tutorial
I get to the login interface but I can’t login. I haven’t set any admin account during the installation process. What are the default credentials for the alfresco administrator?
Did you try using asdmin/admin? (= user/passwd)
That was it, thanks!
First of all, thank you for the article! Very nice!
But, I’m facing some problems… after installing everything I just got an 404 error opening localhost:8080/alfresco.
And opening localhost:8080/share I can see the login window but it doesn’t work properly. It says to me that either my login is incorrect or the remote server is down…
Can you help me?
Thanks!
Leonardo, Fred,
Share needs Alfresco to be funny functional to authenticate. (You actually authenticate in Alfresco…)
Could you please provide a log from Alfresco what he is complaining about? (Alfresco.log? stdout.log?)
Thanks!
Tjarda
Hi Tjarda,
Thanks to you I managed to fix the issue. I didn’t realized about looking for the log before you asking for it.
I found out I had a problem with port 50500, but I guess it was happening cause of some wrong config I made in global.properties that yielded in many treads of the java process that weren’t being finalized (Starting and stopping the server many times…).
Actually, I had the problem first with the server in the lab I work at university. Then I tried to install in my personal pc. It worked here but I didn’t tried in the server yet. It is probably the same issue. I’ll have to make an upgrade there, may be a little harder, but I will come here for help!
Thank you!
I got the same issue as Leonardo. 404 on alfresco, can’t login on share. Some help would be appreciated!
See my previous comment @ Leonardo’s post
Found the mistakes. One of them being I allocated way too little memory to my virtual instance.
Any reason why Alfresco needs 3 gig minimum? I have 1,5 GB allocated now and its dog slow.
Hi Tjarda:
I’m the one who started this thread via Twitter …
I still got the same problem as before (the one the other people are experiencing, too), I will check the logs and keep an eye on this post.
In the meantime I decided to start BitNami’s Alfresco stack, which works very well. Alfresco seems to have a lot of features for working in a team, it’s much more than a document management system.
Cheers,
Rod
Hi Rond, thanks Cor the reply-by-blog! Is your problem also the port 50500?
I agree Alfresco is much more than just a dms. Have fun using your Alfresco!
Tjarda
The remote server may be unavailable or your authentication details have not been recognized please help me
What about the port 50500 remark Leonardo Silvo mentioned?
2012-01-31 12:34:56,177 INFO [web.site.EditionInterceptor] [http-8080-exec-149] Unable to retrieve License information from Alfresco: 404
Can you login on http://localhost:8080/alfresco??
not opened
What is logged in alfresco.log?
12:34:17,051 INFO [org.springframework.extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
12:34:22,272 INFO [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 312 Web Scripts (+0 failed), 322 URLs
12:34:22,284 INFO [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 8 Package Description Documents (+0 failed)
12:34:22,284 INFO [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 0 Schema Description Documents (+0 failed)
12:34:22,541 INFO [org.springframework.extensions.webscripts.AbstractRuntimeContainer] Initialised Spring Surf Container Web Script Container (in 5486.1943ms)
12:34:22,554 INFO [org.springframework.extensions.webscripts.TemplateProcessorRegistry] Registered template processor freemarker for extension ftl
12:34:22,559 INFO [org.springframework.extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
12:34:30,008 INFO [org.alfresco.web.site.EditionInterceptor] Unable to retrieve License information from Alfresco: 404
12:35:32,207 INFO [org.alfresco.web.site.EditionInterceptor] Unable to retrieve License information from Alfresco: 404
12:35:32,261 INFO [org.alfresco.web.site.EditionInterceptor] Unable to retrieve License information from Alfresco: 404
can this work in postgres-8.1.4 and can help for installation of it
Postgress is not my specialty. You can take a look here: http://wiki.alfresco.com/wiki/Database_Configuration