DevTech101

DevTech101

How to install and configure Alfresco on Solaris

Install Solaris 11

First lets prepare the os, Install Solaris 11 global.
Now lets configure and install a Solaris zone (since Alfresco will be running in a zone).
Follow the below zone configuration to configure your Alfresco Solaris zone.

zfs create -o mountpoint=/docs rpool/docs
chmod 700 /docs
zonecfg -z docs
 
# Paste form below to file /tmp/docs.cfg/tmp/docs.cfg
# run zonecfg -z docs -f
create -b
set zonepath=/docs
set brand=ipkg
set autoboot=true
set scheduling-class=FSS
set ip-type=exclusive
add net
set physical=vnic0
end
add capped-memory
set physical=6G
end
add dataset
set name=rpool/opt/alfresco
end
add dataset
set name=rpool/alfresco
end
add dataset
set name=rpool/mysql-logs
end
add dataset
set name=rpool/mysql-data
end
commit
 
#Install zone
zoneadm -z docs install

Configure Local IP Address & route

ipadm create-addr -T static -a 10.10.0.171/22 igb0/v4static
route -p add default 10.10.0.1

Create vnic0 for the new zone

dladm create-vnic -l igb0 vnic0

Add some needed packages to the zone

# Note for sun studio you might need to add the sun studio repository
## Install in the global zone
pkg install SUNWrcap
## Install in the local zone
pkg install SUNWuiu8 imagemagick xpdf  sunstdioexpress gnu-coreutils x11-server-utilities FSWxorg-client-programs svr4 libcanberra

Install MySql 5.5

Note: MySql 5.5 is not supported on alfresco 3.3g, instead use mysql-51 installed with pkg

Download MySql 5.5 pkg for solaris x86 install and configure it.

gunzip mysql-5.5.8-solaris10-x86_64.pkg.gz
pkgadd -d mysql-5.5.8-solaris10-x86_64.pkg
/etc/init.d/mysql start
/opt/mysql/mysql/bin/mysqladmin -u root password 'new-password'
/opt/mysql/mysql/bin/mysqladmin -u root -h docs password 'new-password'

To start mysql

svcadm enable svc:/application/database/mysql:version_51

Install OpenOffcie 2.3.1 (or latter)

wget http://download.services.openoffice.org/files/stable/3.2.1/OOo_3.2.1_Solaris_x86_install-wJRE_en-US.tar.gz
 
gtar -zvxf OOo_3.2.1_Solaris_x86_install-wJRE_en-US.tar.gz 
 
cd OOO320_m18_native_packed-1_en-US.9502
./setup

Create Open Office start up script

cat /etc/init.d/start_oo.sh
#!/bin/bash
 
case $1 in
 
start)
nohup /opt/openoffice.org3/program/soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard &
;;
stop)
pkill soffice
;;
*) echo "Usage: $0 [stop|start]"
esac
 
n -s /etc/init.d/start_oo.sh /etc/rc2.d/S50start_oo.sh

Install swftools 2.3.1

Download swftools

wget http://www.swftools.org/swftools-0.9.0.tar.gz
 
gtar -xvf swftools-0.9.0.tar.gz
cd swftools-0.9.0
 
./configure
dmake
dmake instal
# Note dmake and cc are from sunstidio

Install Alfresco Community Tomcat Bundle

cd /alfresco_src
 
wget -O alfresco-community-tomcat-3.3g.tar.gz http://dl.alfresco.com/release/community/build-2860/alfresco-community-tomcat-3.3g.tar.gz?dl_file=release/community/build-2860/alfresco-community-tomcat-3.3g.tar.gz
 
zfs create -p -o mountpoint=/opt/alfresco rpool/opt/alfresco
cd /opt/alfresco/
tar xvfz alfresco-community-tomcat-3.3g.tar.gz
 
vi *.sh
# Replace #!/bin/sh
# With #!/bin/bash
 
vi /opt/alfresco/tomcat/shared/classes/alfresco-global.properties
# Change mysql user/password

Configure MySql for alfresco

Configure MySql & alfresco database

Create ZFS MySql data set, and set the record size to 16k (match the db record size)

zfs create -o mountpoint=/mysql-data -o recordsize=16K rpool/mysql-data
zfs create -o mountpoint=/mysql-logs rpool/mysql-logs

Assign the dateset to the zone

zonecfg -z docs
zonecfg:docs> add dataset
zonecfg:docs:dataset> set name=rpool/mysql-logs
zonecfg:docs:dataset> end
zonecfg:docs> add dataset
zonecfg:docs:dataset> set name=rpool/mysql-data
zonecfg:docs:dataset> end
zonecfg:docs> commit
zonecfg:docs> exit

Create MySql databse & Configure MySql my.cnf

cd /opt/mysql/mysql (in 5.5) and or /usr/mysql/5.1/bin (in 5.1)
scripts/mysql_install_db --user=mysql

Make sure to turn off Double-write buffer on ZFS for the MySql db, change in my.cnf
Note: A full copy of my.cnf is available below appendix b

The InnoDB Double-write buffer
innodb_flush_method = O_DIRECT # For direct/IO also turns off per-fetching
innodb_data_file_path = ibdatafile:10G:autoextend # FileSystem configuration for ZFS

Create alfresco db

cd /opt/alfresco/extras/databases/mysql
 
Change user & password in db_setup.sql
/opt/mysql/mysql/bin/mysql -u root -p 

Set MySql log location

setprop mysql/log = astring: /mysql-logs
svcadm refresh svc:/application/database/mysql:version_51

Append A - alfresco-global.properties

cat /opt/alfresco/tomcat/shared/classes/alfresco-global.properties

###############################
## Common Alfresco Properties #
###############################

#
# Sample custom content and index data location
#-------------
dir.root=./alf_data

#
# Sample database connection properties
#-------------
db.name=alfresco
db.username=alfresco
db.password=password
db.host=localhost
db.port=3306

#
# External locations
#-------------
ooo.exe=soffice
ooo.enabled=true
img.root=/usr
swf.exe=/usr/local/bin/pdf2swf

#
# MySQL connection
#-------------
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://${db.host}:${db.port}/${db.name}

#
# 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

#
# 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

#imap.server.enabled=true
#imap.server.port=143
#imap.server.host=localhost

#
# RMI Services
# To make your RMI services available from other machines you will need to change
# alfresco.rmi.services.host from "localhost".
# alfresco.rmi.services.port=50500

Start & Login to alfresco

Start alfresco

/opt/alfresco/alfresco.sh start

Login to Alfresco Explorer or Alfresco Share
Alfresco has two ways to access the application — Alfresco Explorer and Alfresco Share.

LDAP * Alfresco login

Modify the ldap-authentication.properties to support ldap

  • /opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/ldap/ldap-authentication.properties

Or
Add at the end of /opt/alfresco/tomcat/shared/classes/alfresco-global.properties

authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap
ldap.authentication.active=true
ldap.authentication.allowGuestLogin=true

ldap.authentication.userNameFormat=uid\=%s,OU\=Computer_IT,ou\=People,o\=domain.com,dc\=subdomain,dc\=com
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://ldap.domain.com:389
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false
ldap.authentication.defaultAdministratorUserNames=admin
ldap.synchronization.active=true
ldap.synchronization.java.naming.security.principal=cn=proxyagent,ou=profile,dc=domain,dc=com
ldap.synchronization.java.naming.security.credentials=password
ldap.synchronization.queryBatchSize=0
#ldap.synchronization.queryBatchSize=5000
ldap.synchronization.groupQuery=(objectclass\=posixGroup)
ldap.synchronization.groupDifferentialQuery=(&(objectclass\=posixGroup)(!(modifyTimestamp<\={0})))
ldap.synchronization.personQuery=(objectclass\=inetOrgPerson)
ldap.synchronization.personDifferentialQuery=(&(objectclass\=inetOrgPerson)(!(modifyTimestamp<\={0})))
ldap.synchronization.modifyTimestampAttributeName=modifyTimestamp
ldap.synchronization.timestampFormat=yyyyMMddHHmmss'Z'
ldap.synchronization.userIdAttributeName=uid
ldap.synchronization.userFirstNameAttributeName=givenName
ldap.synchronization.userLastNameAttributeName=sn
ldap.synchronization.userEmailAttributeName=mail
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupType=posixGroup
#ldap.synchronization.userOrganizationalIdAttributeName=msExchALObjectVersion
ldap.synchronization.defaultHomeFolderProvider=homeDirectory
ldap.synchronization.groupSearchBase=ou\=Group,o\=domain.com,dc\=subdomain,dc\=com
ldap.synchronization.userSearchBase=OU\=Computer_IT,ou\=People,o\=domain.com,dc\=subdomain,dc\=com
ldap.synchronization.groupMemberAttributeName=memberUid
ldap.synchronization.synchronizeChangesOnly=true
ldap.synchronization.import.cron
ldap.synchronization.syncOnStartup=true
ldap.synchronization.syncWhenMissingPeopleLogIn=true
ldap.synchronization.autoCreatePeopleOnLogin=false
ldap.synchronization.personType=inetOrgPerson

Alfresco 3.4.d additional Install

  • install additional packages
pkg install javamail jta.jar libnb-java sendmail openoffice imagemagick tomcat mysql51
  • Note: PATH to tomcat is /var/tomcat
  • Add to /usr/tomcat6/bin/catalina.sh
export ALF_HOME=/usr/tomcat6
export JAVA_OPTS='-Xms512m -Xmx2048m -Xss1024k -XX:MaxPermSize=256m -XX:NewSize=256m -server'
export JAVA_OPTS="${JAVA_OPTS} -Dalfresco.home=${ALF_HOME} -Dcom.sun.management.jmxremote"
  • Copy alfresco files (Make backups first)
cp web-server/conf/* /var/tomcat6/conf/.
cp web-server/webapps/* var/tomcat6/webapps/.
cp -rp web-server/shared /var/tomcat6/.
cp web-server/lib/mysql-connector-java-5.1.13-bin.jar /usr/tomcat6/lib/.
  • Modify logs4j to the proper directory
Replace in /var/tomcat6/webapps/alfresco/WEB-INF/classes/log4j.properties

From
log4j.appender.File.File=alfresco.log

To
log4j.appender.File.File=/var/tomcat6/logs/alfresco.log

  • Modify /var/tomcat6/shared/classes/alfresco-global.properties
###############################
## Common Alfresco Properties #
###############################

#
# Sample custom content and index data location
#-------------
dir.root=/var/tomcat6/alf_data

#
# Sample database connection properties
#-------------
db.name=alfresco2
db.username=alfresco
db.password=password
db.host=docs
db.port=3306

#
# External locations
#-------------
ooo.exe=soffice
ooo.enabled=true
img.root=/usr
swf.exe=/usr/local/bin/pdf2swf

#
# MySQL connection
#-------------
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://${db.host}:${db.port}/${db.name}

#
# Cifs config
#-------------
cifs.enabled=true
cifs.Server.Name=test
cifs.domain=DOMAIN.LOCAL
cifs.hostanounce=true

cifs.broadcast=0.0.0.0
cifs.tcpipSMB.port=1445
cifs.ipv6.enabled=false
cifs.netBIOSSMB.namePort=1137
cifs.netBIOSSMB.datagramPort=1138
cifs.netBIOSSMB.sessionPort=1139

#
# 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=localhost
mail.port=25
#mail.username=anonymous
#mail.password=
mail.encoding=UTF-8
mail.from.default=do-not-reply-alfresco@domain.com
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=domain.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

#
# 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

imap.server.enabled=true
imap.server.port=143
imap.server.host=localhost

#
# RMI Services
# To make your RMI services available from other machines you will need to change 
# alfresco.rmi.services.host from "localhost".
# alfresco.rmi.services.port=50500

authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap
#authentication.chain=alfrescoNtlm1:alfrescoNtlm,passthru1:passthru,ldap1:ldap
#cifs.domain=DOMAIN.LOCAL


#
#ntlm.authentication.sso.enabled=true
#passthru.authentication.authenticateCIFS=true 
#passthru.authentication.domain=DOMIAN.LOCAL\\server1.domain.local,DOMAIN.LOCAL\\server2.domain.local
#alfresco.authentication.authenticateCIFS=true

ldap.authentication.active=true
ldap.authentication.allowGuestLogin=false

#ldap.authentication.userNameFormat=uid\=%s,OU\=Computer_IT,ou\=People,o\=domain.com,dc\=subdomain,dc\=com
ldap.authentication.userNameFormat=
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://ldap1.domain.com:389
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.java.naming.security.principal=cn=proxyagent,ou=profile,dc=subdomain,dc=com
ldap.authentication.java.naming.security.credentials=password
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false
ldap.authentication.defaultAdministratorUserNames=admin
#
ldap.synchronization.active=true
ldap.synchronization.java.naming.security.principal=cn=proxyagent,ou=profile,dc=subdomain,dc=com
ldap.synchronization.java.naming.security.credentials=password
ldap.synchronization.queryBatchSize=0
#ldap.synchronization.queryBatchSize=5000
ldap.synchronization.groupQuery=(objectclass=groupofuniquenames)
ldap.synchronization.groupDifferentialQuery=(&(objectclass=groupofuniquenames)(!(modifyTimestamp<\={0})))
ldap.synchronization.personQuery=(objectclass=inetOrgPerson)
ldap.synchronization.personDifferentialQuery=(&(objectclass=inetOrgPerson)(!(modifyTimestamp<\={0})))
ldap.synchronization.modifyTimestampAttributeName=modifyTimestamp
ldap.synchronization.timestampFormat=yyyyMMddHHmmss'Z'
ldap.synchronization.userIdAttributeName=uid
ldap.synchronization.userFirstNameAttributeName=givenName
ldap.synchronization.userLastNameAttributeName=sn
ldap.synchronization.userEmailAttributeName=mail
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupType=groupofuniquenames
#ldap.synchronization.userOrganizationalIdAttributeName=msExchALObjectVersion
ldap.synchronization.defaultHomeFolderProvider=homeDirectory
ldap.synchronization.groupSearchBase=dc=subdomain,dc=com
ldap.synchronisation.personSearchBase=ou=People,o=domain.com,dc=subdoamin,dc=com
ldap.synchronization.userSearchBase=ou=People,o=domain.com,dc=subdomain,dc=com
#ldap.synchronization.groupSearchBase=ou\=Group,o\=domain.com,dc\=subdomain,dc\=com
ldap.synchronization.groupMemberAttributeName=uniqueMember
ldap.synchronization.synchronizeChangesOnly=true
ldap.synchronization.import.cron
ldap.synchronization.syncOnStartup=true
ldap.synchronization.syncWhenMissingPeopleLogIn=true
ldap.synchronization.autoCreatePeopleOnLogin=false
ldap.synchronization.personType=inetOrgPerson
ldap.synchronization.autoSyncMissingUse=true

#
org.alfresco.fileserver=debug

Appendx B - /etc/my.cnf

my.cnf for MySql 5.5

# Copyright (C) 2009 Sun Microsystems, Inc
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# Default values that applies to all MySQL Servers
[mysqld]
open-files-limit=           1024
local-infile
character-set-server=      latin1

# Increase default connect_timeout to avoid intermittent
# disconnects when test servers are put under load see BUG#28359
connect-timeout=            60

log-bin-trust-function-creators=1
key_buffer_size=            64M
sort_buffer=                256K
max_heap_table_size=        128M

datadir=                          /mysql-data
#innodb_data_home_dir=             /mysql-data
loose-innodb_data_file_path=      ibdatafile:4096M:autoextend
loose-innodb_buffer_pool_size=    2G
loose-innodb_write_io_threads=    2
loose-innodb_read_io_threads=     2
loose-innodb_log_buffer_size=     16M
loose-innodb_log_file_size=       1G
loose-innodb_additional_mem_pool_size= 1024M
loose-innodb_log_files_in_group=  2

slave-net-timeout=120

log-bin=mysqld-bin

# Run tests with the performance schema instrumentation
loose-enable-performance-schema
# Run tests with a small number of instrumented objects
# to limit memory consumption with MTR
loose-performance-schema-max-mutex-instances=10000
loose-performance-schema-max-rwlock-instances=10000
loose-performance-schema-max-table-instances=500
loose-performance-schema-max-table-handles=1000

binlog-direct-non-transactional-updates

# Add by eli (needed for ZFS)
skip-innodb_doublewrite
innodb_file_io_threads =         4
innodb_thread_concurrency =      32
innodb_log_group_home_dir =      /mysql-logs
#innodb_flush_method =            O_DIRECT

#
#set-variable=long_query_time=5
slow-query-log-file=/mysql-logs/log-slow-queries.log
slow-query-log = 1
slow_query_log = 1
long_query_time = 1


[mysqldump]
quick
max_allowed_packet = 16M

my.cnf for MySql 5.1 (slight changed)

# Copyright (C) 2009 Sun Microsystems, Inc
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# Default values that applies to all MySQL Servers
[mysqld]
open-files-limit=           1024
local-infile
character-set-server=      latin1

# Increase default connect_timeout to avoid intermittent
# disconnects when test servers are put under load see BUG#28359
connect-timeout=            60

log-bin-trust-function-creators=1
key_buffer_size=            64M
sort_buffer=                256K
max_heap_table_size=        128M

datadir=                          /mysql-data
#innodb_data_home_dir=             /mysql-data
loose-innodb_data_file_path=      ibdatafile:4096M:autoextend
loose-innodb_buffer_pool_size=    2G
#loose-innodb_write_io_threads=    2
#loose-innodb_read_io_threads=     2
loose-innodb_log_buffer_size=     16M
loose-innodb_log_file_size=       1G
loose-innodb_additional_mem_pool_size= 1024M
loose-innodb_log_files_in_group=  2

slave-net-timeout=120

log-bin=mysqld-bin

# Run tests with the performance schema instrumentation
#loose-enable-performance-schema
# Run tests with a small number of instrumented objects
# to limit memory consumption with MTR
#loose-performance-schema-max-mutex-instances=10000
#loose-performance-schema-max-rwlock-instances=10000
#loose-performance-schema-max-table-instances=500
#loose-performance-schema-max-table-handles=1000

#binlog-direct-non-transactional-updates

# Add by eli (needed for ZFS)
skip-innodb_doublewrite
innodb_file_io_threads =         4
innodb_thread_concurrency =      32
innodb_log_group_home_dir =      /mysql-logs
#innodb_flush_method =            O_DIRECT

#
#set-variable=long_query_time=5
slow-query-log-file=/mysql-logs/log-slow-queries.log
slow-query-log = 1
slow_query_log = 1
long_query_time = 1


[mysqldump]
quick
max_allowed_packet = 16M

Troubleshooting

  • Alfresco logs: tail -f /opt/alfresco/alfresco.log
  • Tomcat logs: tail -f /opt/alfresco/tomcat/logs/catalina.out

References

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
%d bloggers like this: