This is Joe's modified version of Hunter's Alfresco Install document. It describes how to install Alfresco WCM plus local MIT modifications. Note that this document describes only version 2.1.1 Enterprise. |
Note: Next revision cycle, start building everything into $HOME/\[app\]-\[version#\] and creating a symlink to $HOME/\[app\] so that there is no question about what the current, in use, directory is. |
Note: When downloading software to install in these instructions, unless
otherwise indicated, always download the tomcat tarball, and avoid binary
installers. Binary installers tend to make inaccurate assumptions about what
libraries you have installed on your system, as well as other problems.
1. get the Alfresco software:
1a. You need the MIT modified version of Alfresco WCM from somewhere. The name of the file is:
alfresco-enterprise-tomcat-wcm-mitmods-2.1.1.tar.gz
Note, you can also get the untarred version of this from our subversion repository:
svn+ssh://svn.mit.edu/alfresco-dev/tags/release/alfresco-enterprise-tomcat-wcm-mitmods-2.1.1/
1b. Log into http://customers.alfresco.com using provided Alfresco username and
password. Get a license from:
\[Company Home\] - \[Downloads\] - \[Limited Downloads\] |
Such as:
enterprise-network-developer-unlimited.lic
Store the software in a convenient temporary directory on the system
receiving the install, such as /tmp/alfresco or /root/alfresco.
2. If this system is currenlty in use as an Alfresco server, suspend any
services directly dependent upon Alfresco (such as Thalia IME), and then
suspend Alfresco itself.
2a. Suspend any services directly dependent upon Alfresco, such as Thalia
IME. This is highly dependent upon what that service is.
2b. Suspend Alfresco.
cd /home/alfresco-\[current version\] ./alfresco.sh stop |
2c. Scan the process list to see when the Alfresco processes finish
shutting down and terminate. Repeat until no alfresco processes are left.
ps aux | grep alfresco
This may take some time to do. If it takes longer then 5 minutes, kill
the process directly.
kill \-9 \[process number\] |
2d. Back up the current repository, and copy the backup to a backup storage
server.
3. Prepare the home directories. If this system had previous installations of
Alfresco, move the previous repository stores and database to a backup
location. Then create the home directories.
cd /home mkdir /home/alfresco-\[new version\] mkdir /home/alf_data |
If this is going to be a clustered machine, create the cluster directories.
mkdir /home/alf_data/cluster-A mkdir /home/alf_data/cluster-B mkdir /home/alf_data/cluster-\[repeat for each stack in cluster\] mkdir /home/alf_data/replication |
4. Unpack the software into the correct directory.
cd /home/alfresco-\[new version\] tar \-xzvf /root/alfresco/alfresco-enterprise-tomcat-wcm-mitmods-2.1.1.tar.gz |
5. Copy the alfresco.sh file from the ISDA software repository to the new
Alfresco home directory.
scp \[krb-id\]@\[software-repository\]:alfresco.sh /home/alfresco-\[new-version\] |
Edit the alfresco.sh file to use the local file paths.
6. Copy the license to the license directory.
cp /root/alfresco/enterprise-network-developer-unlimited.lic \ /home/alfresco-\[new version\]/tomcat/shared/classes/alfresco/extension/license |
7. Set up the dir.root location by adding it to the
custom-repository.properties file.
dir.root=/home/alfresco-2.1.1-enterprise/alf_data
8. Setup MySQL database to be used by this system, if this is a new install.
If this is an upgrade, backup the database with mysqldump.
8a. Login to MySQL server as root and connect to the MySQL database
8b. If this is a new install, create a new database and setup a user.
8b1. Create the database.
create database alfresco; Where alfresco is the name of the
database to create
8b2. Grant permissions to user.
grant all on alfresco.* to 'username'@'localhost' identified by
'password' with grant option;
grant all on alfresco.* to 'username'@'localhost.localdomain'
identified by 'password' with grant option;
Replace the database, password and user names as needed, to match
the alfresco server. Select a password that will be secure.
9. If this is going to be the second independent instance of Alfresco on a
server, then edit the files:
$ALF_HOME/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/alfresco-shared.properties
$ALF_HOME/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/web-client-config-wcm.xml
Alter the option avm.remote.port to have a unique port number, and the
ports for RMI and JMX.
10. Edit the virtualization server properties file and change the server address.
vi virtual-tomcat/conf/alfresco-virtserver.properties
Edit alfresco.virtserver.domain to have the IP address of the server
receiving the Alfresco software:
alfresco.virtserver.domain=18-92-1-223.ip.alfrescodemo.net
11. Note: you do not need to upgrade TinyMCE or edit any jsp files.
12. If this is going to be a clustered system, move or alter the following
files to make a cluster configuration.
12a. Move the following files in
$ALF_HOME/tomcat/share/classes/alfresco/extension
cp replicating-content-services-context.xml.sample \
replicating-content-services-context.xml
cp ehcache-custom.xml.sample.cluster ehcache-custom.xml
12b. Select an ID for the cluster ID, and alter the following properties
in the custom-repository.properties file.
cluster.id=A
dir.root=/home/export # Set to an appropriate local, usually a SAN mount
dir.root.replicated=${dir.root}/replication
dir.contentstore=${dir.root}/contentstore
dir.contentstore.replicated=${dir.root.replicated}/contentstore
dir.contentstore.deleted=${dir.root}/contentstore.deleted
dir.auditcontentstore=${dir.root}/audit.contentstore
dir.indexes = ${dir.root}/lucene-indexes
dir.indexes.lock = ${dir.indexes}/locks
index.recovery.mode = AUTO
index.tracking.cronExpression=0/5 * * * * ?
system.bootstrap.config_check.strick = true
13. Configure the deployment script and remote (deployed-to) server. This is very dependent on the configuration of the remote server, which we don't necessarily know. It may require more extensive changes to the script, if the remote server isn't what we expect. If so, skip this step or pass it on to someone who knows more about the remote server.
13a. Identify or create an Alfresco deployment user which has read access to the web project to be deployed. (This requires that the user has a sandbox in the web project as at least a Content Reviewer). Note the Alfresco username and password of this user.
13b. On the remote (linux) server, identify or create a remote user with write access to the desired deployment destination path. Ensure that the root account on the Alfresco server can ssh as this user to the remote server without being prompted for a password. If this is not already set up, you should do the following:
13c. Edit ${ALF_HOME}/deploy/deploy.sh
There are four environment variables we care about.
DEPLOY_REMOTE_SERVER is the fully qualified hostname of the remote server. (e.g., "export DEPLOY_REMOTE_SERVER=isda-ist1.mit.edu")
DEPLOY_REMOTE_USER is the username (from 13b.) of an account on the remote server with passwordless ssh login access. (e.g., "export DEPLOY_REMOTE_USER=deploy_bot")
DEPLOY_REMOTE_DESTPATH is the path to the directory on the remote machine to which you want to deploy. (e.g., "export DEPLOY_REMOTE_DESTPATH=/home/apache-tomcat-5.5.23/webapps/ROOT")
DEPLOY_ALFRESCO_USER is the username (from 13a.) for the Alfresco account with read access to the web project to be deployed (e.g., "export DEPLOY_ALFRESCO_USER=deploy_bot")
DEPLOY_PASSWORD is the Alfresco password for the DEPLOY_ALFRESCO_USER user. (e.g., "export DEPLOY_PASSWORD=deploy_bot_password_or_something")
---
That's it for now.
----
Okay, Brian performed steps 1 through 12 on Alumni's server (cms-prod-wcm1.mit.edu) and set up a remote web server (cms-test-wcm1.mit.edu) with tomcat (actually a SASH stack), and gave me root access. Here's what I did.
ON CMS-PROD-WCM1:
1) I had to make sure all .sh files were executable and in UNIX format, since they came from a Windows box. (This step should be unnecessary if I fix the tarball)
cd /home/repos/alfresco; for a in `find -name \*.sh`; do chmod a+x $a; dos2unix $a; done |
2) I generated a strong password for admin and edited /home/repos/alfresco/virtual-tomcat/conf/alfresco-virtserver.properties to set "alfresco.server.password" to this value.
3) I created $ALF_EXT/custom-authority-services-context.xml (copied from version in /root) and added <value>jcalz_admin</value> to the admin list. \[NOTE: an older version of this file had a bean definition which caused a circular reference here. The new version is correct. In general, this file should be copied out of authority-services-context.xml in the alfresco WAR file before it is edited\] |
4) Created the logs directories for tomcat and virtual tomcat. (Apparently the tomcat startup scripts get upset if the directories aren't there. This step should be unnecessary if I fix the tarball)
mkdir tomcat/logs; mkdir virtual-tomcat/logs |
5) I edited $ALF_EXT/web-client-config-custom.xml and changed the <deployment> element to include
<commands> <command name="deploy-to-cms-test-wcm1" program="bash"> <param>-c</param> <param>${ALF_HOME}/deploy/deploy-to-cms-test-wcm1.sh</param> </command> </commands> |
6) I copied $ALF_HOME/deploy/deploy.sh to $ALF_HOME/deploy/deploy-to-cms-test-wcm1.sh
7) I generated a strong password for an Alfresco "deploy_bot" account.
8) I ran "ssh-keygen -t dsa" and accepted the default location and left the passphrase blank.
9) I copied the generated public key file to cms-test-wcm1
scp ~/.ssh/id_dsa.pub cms-test-wcm1: |
10) I logged into the remote server as root:
ssh -l root cms-test-wcm1 |
ON CMS-TEST-WCM1:
11) I did:
adduser deploy_bot; (note, this is the WEB SERVER "deploy_bot" account, not the ALFRESCO "deploy_bot" account) mkdir /home/deploy_bot/.ssh; chown deploy_bot /home/deploy_bot/.ssh chmod 700 /home/deploy_bot/.ssh; cat ~/id_dsa.pub >> /home/deploy_bot/.ssh/authorized_keys chown deploy_bot /home/deploy_bot/.ssh/authorized_keys chmod 600 /home/deploy_bot/.ssh/authorized_keys rm ~/id_dsa.pub |
12) I ensured that the deploy_bot account had write access to the deployment destination path:
chmod a+rx /home/www chmod a+rx /home/www/sash-server chmod a+rx /home/www/sash-server/servers/ chmod a+rx /home/www/sash-server/servers/alumni/ chown deploy_bot /home/www/sash-server/servers/alumni/webapps chown deploy_bot /home/www/sash-server/servers/alumni/webapps/ROOT |
(There may be better ways of doing this, but this shouldn't be a big deal)
13) I logged out of cms-test-wcm1
ON CMS-PROD-WCM1:
14) I tried "ssh -l deploy_bot cms-test-wcm1.mit.edu" and accepted the host key. (This step stores the host key in known_hosts and is actually important, since you don't want the deployment script to be prompted to accept or not accept the host key.)
15) I edited "$ALF_HOME/deploy/deploy-to-cms-test-wcm1.sh" and set:
export DEPLOY_ALFRESCO_USER=deploy_bot export DEPLOY_ALFRESCO_PASSWORD=[Strong password from step 7] export DEPLOY_REMOTE_SERVER=cms-test-wcm1.mit.edu export DEPLOY_REMOTE_USER=deploy_bot export DEPLOY_REMOTE_DESTPATH=/home/www/sash-server/servers/alumni/webapps/ROOT |
16) I went into $ALF_HOME and did ./alfresco.sh start, and waited for the server to come up.
FROM THE WEB BROWSER:
17) I logged into http://cms-prod-wcm1.mit.edu:8080/alfresco, with the admin/admin password
18) I went into User Management and set the admin account password to the strong password from step 2.
19) I created the deploy_bot account, and set its password to the strong password from step 7.
20) I created the jcalz_admin account, and set its password to my desired password.
21) I logged out as admin and back in as jcalz_admin
22) I created a Web Project and specified "command:deploy-to-cms-test-wcm1" as the deploy destination, gave deploy_bot content reviewer access, and copied some stuff into it, and took a snapshot.
23) I tested deployment: success!