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 -pSet MySql log location
setprop mysql/log = astring: /mysql-logs svcadm refresh svc:/application/database/mysql:version_51Append 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=50500Start & Login to alfresco
Start alfresco
/opt/alfresco/alfresco.sh startLogin to Alfresco Explorer or Alfresco Share
Alfresco has two ways to access the application — Alfresco Explorer and Alfresco Share.
- Go to http://localhost:8080/alfresco – to launch the Alfresco explorer
- Go to http://localhost:8080/share – to launch the 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.propertiesauthentication.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=inetOrgPersonAlfresco 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=debugAppendx 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 = 16Mmy.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 = 16MTroubleshooting
- Alfresco logs: tail -f /opt/alfresco/alfresco.log
- Tomcat logs: tail -f /opt/alfresco/tomcat/logs/catalina.out
References