|
|
Line 1: |
Line 1: |
| {{BC|Community Sandbox}}
| | #REDIRECT [[Building_Zimbra_using_Git]] |
| __FORCETOC__
| |
| <div class="col-md-12 ibox-content">
| |
| =Building the software yourself=
| |
| {{KB|{{Unsupported}}|{{ZCS 5.0}}||}}
| |
| {{Archive}}{{WIP}}
| |
| See also [[Building Zimbra using Perforce]]
| |
| | |
| [[Category:Build]] [[Category:Fedora]] [[Category:Ubuntu]]
| |
| | |
| == Building Zimbra 5.0.0_RC1 from sources with ThirdParty 5.0.0_BETA3 packages ==
| |
| It seems that in the process of building "open source" edition and
| |
| latest changes of abandoning SourceForge repository, building from
| |
| scratch is not so easy as it seems. The following script helps
| |
| building from sources available at the moment (September 2007).
| |
| | |
| #!/bin/sh
| |
| # Building Zimbra 5.0.0_RC1 with 5.0.0_BETA3 ThirdParty tools
| |
| # Some required packages:
| |
| # mysql: g++ libncurses5-dev libncurses5w-dev
| |
| # cyrus-sasl : libxml2-dev libcurl4-openssl-dev
| |
| # PostFix : libsasl2-dev ?
| |
| # dspam : libmysqlclient15-dev
| |
| # snmp : libperl-dev
| |
| # zimbra : apt-get install ant
| |
| set -e
| |
|
| |
| P4_DIR=zcs-5.0.0_RC1_1538-src
| |
| ZIMBRA_SRC=${P4_DIR}.tgz
| |
| THIRD_PARTY=zcs-5.0.0_BETA3_1277-3rdParty-src
| |
| SOURCEFORGE_MIRROR=easynews.dl.sf.net
| |
| JDK15_BIN=jdk-1_5_0_13-linux-i586.bin
| |
| JDK15_DIR=jdk1.5.0_13
| |
| JDK16_BIN=jdk-6u3-linux-i586.bin
| |
| JDK16_DIR=jdk1.6.0_03
| |
| test "$1" = "clean" && rm -rf ${P4_DIR}
| |
| test -f ${ZIMBRA_SRC} || wget http://files.zimbra.com/downloads/5.0.0_RC1/zcs-5.0.0_RC1_1538-src.tgz
| |
| test -f ${THIRD_PARTY_SRC} || wget ${SOURCEFORGE_MIRROR}/sourceforge/zimbra/${THIRD_PARTY_SRC}
| |
|
| |
| test -d ${P4_DIR} || tar xvzf ${ZIMBRA_SRC}
| |
|
| |
| if test ! -d ${P4_DIR}/ThirdParty ; then
| |
| tar xvz -C ${P4_DIR} -f ${THIRD_PARTY}.tar.gz
| |
| mv ${P4_DIR}/${THIRD_PARTY} ${P4_DIR}/ThirdParty
| |
| fi
| |
|
| |
| if ! test -f ${JDK15_BIN} ; then
| |
| echo "Download JDK 5.0 Update 13 from http://java.sun.com/javase/downloads/index_jdk5.jsp"
| |
| exit 1
| |
| fi
| |
|
| |
| if ! test -f ${JDK16_BIN} ; then
| |
| echo "Download JDK 6 Update 3 http://java.sun.com/javase/downloads"
| |
| exit 1
| |
| fi
| |
| test -d ${JDK15_DIR} || sh ${JDK15_BIN}
| |
|
| |
| if test ! -d ${JDK16_DIR} ; then
| |
| sh ${JDK16_BIN}
| |
| tar cvzf ${JDK16_DIR}.tgz ${JDK16_DIR}
| |
| fi
| |
|
| |
|
| |
| export JAVA_HOME=${PWD}/${JDK15_DIR}
| |
|
| |
| BUILD_PLATFORM=$(${P4_DIR}/ZimbraBuild/rpmconf/Build/get_plat_tag.sh)
| |
|
| |
| # ThirdParty software must be build by root as it uses install target
| |
| if test ! -f ${P4_DIR}/ThirdParty/.built ; then
| |
| # assure some system required users before build
| |
| grep -q zimbra /etc/group || adduser zimbra --disabled-login --home /opt/zimbra
| |
| if ! grep -q postfix /etc/group ; then
| |
| addgroup --system postfix
| |
| adduser --system --ingroup postfix --no-create-home postfix
| |
| fi
| |
| if ! grep -q postdrop /etc/group ;then
| |
| addgroup --system postdrop
| |
| adduser --system --ingroup postdrop --no-create-home postdrop
| |
| fi
| |
| # wipeout is mandatory due to bad linking
| |
| rm -rf /opt/zimbra
| |
| # typo in Makefile(s) that we correct aferwards
| |
| sed -i.orig -e '/chmod -R a+w/d' \
| |
| ${P4_DIR}/ThirdParty/clamav/Makefile \
| |
| ${P4_DIR}/ThirdParty/php/Makefile
| |
| # Build packages as provided by ThirdParty/Makefile
| |
| # All should succeed except some Perl modules
| |
| make -C ${P4_DIR}/ThirdParty
| |
| # Build missing packages
| |
| # if libunwind is unavailable then wget libunwind, ./configure and make install
| |
| make -C ${P4_DIR}/ThirdParty/tcmalloc
| |
| mkdir -p ${P4_DIR}/ThirdPartyBuilds/${BUILD_PLATFORM}/nginx/
| |
| make -C ${P4_DIR}/ThirdParty/nginx
| |
| make -C ${P4_DIR}/ThirdParty/memcached
| |
| # Provide expected filenames
| |
| cp ${P4_DIR}/ThirdPartyBuilds/${BUILD_PLATFORM}/mysql/mysql-standard*.tar.gz \
| |
| ${P4_DIR}/ThirdPartyBuilds/${BUILD_PLATFORM}/mysql/mysql-standard-5.0.45-clientlibs.tgz
| |
| mkdir -p ${P4_DIR}/ThirdPartyBuilds/${BUILD_PLATFORM}/perl
| |
| cp ${P4_DIR}/ThirdParty/Perl/builds/${BUILD_PLATFORM}/perllib.tgz \
| |
| ${P4_DIR}/ThirdPartyBuilds/${BUILD_PLATFORM}/perl/
| |
| ( cd ${P4_DIR}/ThirdParty/amavisd
| |
| rm -rf amavisd-new-2.5.2
| |
| tar xvzf amavisd-new-2.5.2.tar.gz
| |
| patch -p1 -d amavisd-new-2.5.2 < amavisd-2.5.2.patch
| |
| )
| |
| mkdir -p ${P4_DIR}/ThirdParty/java
| |
| cp ${JDK16_DIR}.tgz ${P4_DIR}/ThirdParty/java/jdk1.6.0_02.tgz
| |
| mkdir -p ${P4_DIR}/ThirdPartyBuilds/${BUILD_PLATFORM}/nginx
| |
| # copy windows binaries (.msi,.exe) or use fake touch
| |
| mkdir -p ${P4_DIR}/ZimbraServer/src/windows/
| |
| touch ${P4_DIR}/ZimbraServer/src/windows/ZimbraToast-fake.msi
| |
| chmod -R a+w ${P4_DIR}/ThirdPartyBuilds/*
| |
| chmod -R a+w ${P4_DIR}/ThirdParty/*
| |
| touch ${P4_DIR}/ThirdParty/.built
| |
| fi
| |
|
| |
| test -e /usr/local/java || ln -sf $JAVA_HOME /usr/local/java
| |
| # Zimbra needs to be compiled with jdk1.5 while it runs with 1.6
| |
| make -C ${P4_DIR}/ZimbraBuild allclean all
| |
| | |
| This script shows building process and required fixes to ThirdParty software that ZCS uses. It is verified to build on Debian and Ubuntu.
| |
| But getting to the end is not so simple. It assumes that all required development packages are available. Some of them are listed at the top of the script. If some ThirdParty package fails, one should look at /tmp/ThirdParty.make.log to figure out cause of the failing package.
| |
| | |
| After initial packages build, script additionally builds and adjust
| |
| reguired software locations. It should be noted that ThirdPary build
| |
| needs to be run as root as packages are installed and loaded in
| |
| shared library loader path during build ([http://bugzilla.zimbra.com/show_bug.cgi?id=21700 Zimbra bug 21700]).
| |
| | |
| The last line builds Zimbra suite. But until ThirdParty is complete, it is recommended that you comment this line.
| |
| | |
| Quick instructions to try this approach is to the following as root:
| |
| | |
| mkdir /tmp/zimbra
| |
| cd /tmp/zimbra
| |
| cat > build-zimbra.sh
| |
| # Paste script here and press ^D
| |
| chmod +x build-zimbra.sh
| |
| # install development packages somehow (apt-get, aptitude, dselect, ...)
| |
| ./build-zimbra
| |
| | |
| You will need to download both JDK (5 and 6) packages to build Zimbra.
| |
| | |
| == Fedora Core 5 x86_64 Source Build ==
| |
| | |
| See [[Building_Zimbra_on_Fedora_Core_5_and_x86_64]].
| |
| | |
| == Ubuntu Breezy Source Build ==
| |
| | |
| == Introduction ==
| |
| | |
| After trying to build the source myself using readme_source.txt and and build_cvs_howto.txt, I decided there must be a better way.
| |
| It was quite apparent that the processes for building the Third Party components in those HOWTOs hadn't been followed for quite some time. There were
| |
| issues with Makefiles and the process was generally unwieldy.
| |
| | |
| Here is what I did on an Ubuntu 5.10 (Breezy) system. This process was performed on a laptop without DNS and then confirmed on a VMWare Ubuntu instance.
| |
| | |
| Since Ubuntu is a Debian based system, I downloaded the Debian Developer build from [http://sourceforge.net/project/showfiles.php?group_id=153217&package_id=172045].
| |
| | |
| I successfully installed it using the Ubuntu Breezy Hack posted in the forums ([http://www.zimbra.com/forums/showthread.php?p=16134#post16134]). I managed to get to the Zimbra login and use the system.
| |
| | |
| Then I went through a couple instances of trying to install the source using readme_source.txt and and build_cvs_howto.txt. As a result of getting that process to work, I ended up with something like the following packages installed. This may or not have a bearing on the process I will describe below.
| |
| | |
| sudo apt-get install sudo libidn11 curl fetchmail libgmp3c2 libxml2 libstdc++6 openssl
| |
| sudo apt-get install libssl-dev
| |
| sudo apt-get install ssl-cert
| |
| sudo apt-get install zlib1g zlib1g-dev
| |
| sudo apt-get install autoconf
| |
| sudo apt-get install libpcre3 libpcre3-dev expat libpopt0 libpopt-dev
| |
| sudo apt-get install bison flex
| |
| sudo apt-get install libtool libltdl3-dev
| |
| sudo apt-get install automake1.7
| |
| sudo apt-get install libbz2-dev bzip2 libbz2-1.0
| |
| sudo apt-get install libgmp3-dev
| |
| sudo apt-get install curl libwww-dev libcurl3-dev
| |
| sudo apt-get install libsasl2 libgssapi1-heimdal
| |
| sudo apt-get install libsasl2-modules-gssapi-heimdal
| |
| sudo apt-get install libxml-dev
| |
| | |
| (or in one line:)
| |
| | |
| sudo aptitude install libidn11 curl fetchmail libgmp3c2 libxml2 libstdc++6 openssl libssl-dev ssl-cert zlib1g zlib1g-dev autoconf libpcre3 libpcre3-dev expat libpopt0 libpopt-dev bison flex libtool libltdl3-dev automake1.7 libbz2-dev bzip2 libbz2-1.0 libgmp3-dev curl libwww-dev libcurl3-dev libsasl2 libgssapi1-heimdal libsasl2-modules-gssapi-heimdal libxml-dev
| |
| | |
| For dapper drake, you need libdb3 if it is not already installed:
| |
| | |
| sudo apt-get install libdb3
| |
| | |
| == The Process ==
| |
| | |
| # Download the Debian Developer build from [http://sourceforge.net/project/showfiles.php?group_id=153217&package_id=172045].
| |
| # Unpack the tarball
| |
| # We'll build a new zimbra_core package for Ubuntu
| |
| | |
| The developer tarball (in this case zcs-3.1.0_GA_332.DEBIAN3.1.tgz) unpacks into the following tree:
| |
| | |
| zcs
| |
| |-- bin
| |
| |-- data
| |
| |-- docs
| |
| |-- packages
| |
| `-- util
| |
| `-- modules
| |
| | |
| Assuming you unpack it into the directory ~/repack, you can:
| |
| | |
| $ mkdir ~/repack
| |
| $ tar xfz zcs-3.1.0_GA_332.DEBIAN3.1.tgz
| |
| $ cd zcs
| |
| $ cd packages
| |
| $ mkdir zimbra_core
| |
| $ dpkg -x zimbra-core_3.1.0_GA_332.DEBIAN3.1_i386.deb zimbra_core
| |
| $ cd zimbra_core
| |
| $ dpkg -e ../zimbra-core_3.1.0_GA_332.DEBIAN3.1_i386.deb
| |
| $ cd ../..
| |
| $ pwd
| |
| ~/repack/zcs
| |
| | |
| Now apply Ubuntu patches as described below (I couldn't work out how to up load non-media files, would prefer to host the patches at zimbra.com).
| |
| | |
| * [http://www.bluetoad.com.au/zimbra/ubuntu1.patch patch 1]
| |
| * [http://www.bluetoad.com.au/zimbra/ubuntu2.patch patch 2]
| |
| | |
| The first patch changes the list of prerequisite packages in util/utilfunc.sh to include libgmp3c2 and libgmp3-dev instead of libgmp3:
| |
| | |
| -- util/utilfunc.sh.aside 2006-04-15 05:39:38.000000000 +1000
| |
| +++ util/utilfunc.sh 2006-04-24 08:55:23.000000000 +1000
| |
| @@ -972,7 +972,7 @@
| |
| PACKAGERM='dpkg --purge'
| |
| PACKAGEQUERY='dpkg -s'
| |
| PACKAGEEXT='deb'
| |
| - PREREQ_PACKAGES="sudo libidn11 curl fetchmail libgmp3 libxml2 libstdc++6 openssl"
| |
| + PREREQ_PACKAGES="sudo libidn11 curl fetchmail libgmp3c2 libgmp3-dev libxml2 libstdc++6 openssl"
| |
| else
| |
| PACKAGEINST='rpm -iv'
| |
| PACKAGERM='rpm -ev --noscripts --allmatches'
| |
| | |
| Apply it with:
| |
| | |
| $ wget http://www.bluetoad.com.au/zimbra/ubuntu1.patch
| |
| $ patch -p0 < ubuntu1.patch
| |
| patching file util/utilfunc.sh
| |
| $ rm ubuntu1.patch
| |
| | |
| The second patch does the same to packages/zimbra_core/DEBIAN/control:
| |
| | |
| --- ./DEBIAN/control 2006-04-15 05:36:24.000000000 +1000
| |
| +++ ../zimbra_core_new/./DEBIAN/control 2006-04-24 08:41:30.000000000 +1000
| |
| @@ -5,4 +5,4 @@
| |
| Section: Mail
| |
| Priority: optional
| |
| Architecture: i386
| |
| -Depends: libidn11,curl,fetchmail,libgmp3
| |
| +Depends: libidn11,curl,fetchmail,libgmp3c2,libgmp3-dev
| |
| | |
| Apply it with:
| |
| | |
| $ cd packages/zimbra_core
| |
| $ wget http://www.bluetoad.com.au/zimbra/ubuntu2.patch
| |
| $ patch -p0 < ubuntu2.patch
| |
| patching file ./DEBIAN/control
| |
| $ rm ubuntu2.patch
| |
| | |
| Now repackage the patched zimbra-core deb archive:
| |
| | |
| $ cd ..
| |
| $ mv zimbra-core_3.1.0_GA_332.DEBIAN3.1_i386.deb zimbra-core_3.1.0_GA_332.DEBIAN3.1_i386.deb.aside
| |
| | |
| $ dpkg -b zimbra_core zimbra-core_3.1.0_GA_332.DEBIAN3.1_i386.deb
| |
| | |
| Now /etc/debian_version needs to be edited to trick bin/get_plat_tag.sh. Add a blank line and then 3.1. The coerce.sh script in the forums did this as well.
| |
| | |
| $ cat /etc/debian_version
| |
| testing/unstable
| |
|
| |
| 3.1
| |
| $
| |
| | |
| cd back up to the top of your zcs tree
| |
| | |
| $ sudo ./install.sh
| |
| | |
| Notes on installation questions
| |
| -------------------------------
| |
| | |
| I did 2 installations. One on a VMWare Ubuntu Breezy VM with static IP and hostname in my local network DNS.
| |
| | |
| I also did an install where I used the host as localhost.localdomain with no DNS on my laptop. So either I kept or entered (can't remember) localhost.localdomain as the host when it said the host can not be resolved by DNS. In this case you need to run 'zmprov mcf zimbraMtaDnsLookupsEnabled FALSE' as the zimbra user after the installation has completed.
| |
| | |
| For the MX question I said no both times.
| |
| | |
| I set the admin password as directed by the script (option 6 then 4 etc)
| |
| | |
| Then you'll see stuff like the following for an almost successful installation
| |
| | |
| *** CONFIGURATION COMPLETE - press 'a' to apply
| |
| Select from menu, or press 'a' to apply config (? - help) a
| |
| Save configuration data to a file? [Yes]
| |
| Save config in file: [/opt/zimbra/config.8962]
| |
| Saving config in /opt/zimbra/config.8962...Done
| |
| The system will be modified - continue? [No] yes
| |
| Operations logged to /tmp/zmsetup.log.8962
| |
| Setting local config values...Done
| |
| Setting up CA...Done
| |
| Creating SSL certificate...Done
| |
| Initializing ldap...Done
| |
| Saving CA in ldap...Done
| |
| Installing SSL certificate...Done
| |
| Creating server entry for parker.bluetoad.com.au...Done
| |
| Setting spell check URL...Done
| |
| Setting service ports on parker.bluetoad.com.au...Done
| |
| Adding parker.bluetoad.com.au to zimbraMailHostPool in default COS...Done
| |
| Installing zimlets... com_zimbra_phone... com_zimbra_amzn... com_zimbra_wikipedia... com_zimbra_tracking... com_zimbra_url... com_zimbra_ymaps... com_zimbra_xslt... Done
| |
| Setting MTA auth host...Done
| |
| Creating domain parker.bluetoad.com.au...Done
| |
| Creating user xhc3fwsjhh@parker.bluetoad.com.au...Done
| |
| Creating user _vwniet5@parker.bluetoad.com.au...Done
| |
| Setting spam training accounts...Done
| |
| Creating user admin@parker.bluetoad.com.au...Done
| |
| Creating postmaster alias...Done
| |
| Initializing store sql database...Done
| |
| Setting zimbraSmtpHostname for parker.bluetoad.com.au...Done
| |
| Initializing logger sql database...Done
| |
| Initializing mta config...Done
| |
| Configuring SNMP...Done
| |
| Setting services on parker.bluetoad.com.au...Done
| |
| Setting up zimbra crontab...Done
| |
|
| |
| You have the option of notifying Zimbra of your installation.
| |
| This helps us to track the uptake of the Zimbra Collaboration Suite.
| |
| The only information that will be transmitted is:
| |
|
| |
| The VERSION of zcs installed (3.1.0_GA_332_DEBIAN3.1)
| |
| The ADMIN EMAIL ADDRESS created (admin@parker.bluetoad.com.au)
| |
|
| |
| Notify Zimbra of your installation? [Yes]
| |
| Notifying Zimbra of installation via http://www.zimbra.com/cgi-bin/notify.cgi?VER=3.1.0_GA_332_DEBIAN3.1&MAIL=admin@parker.bluetoad.com.au
| |
|
| |
| Notification complete
| |
|
| |
| Starting servers...Done.
| |
|
| |
| Operations logged to /tmp/zmsetup.log.8962
| |
|
| |
| Configuration complete - press return to exit
| |
| | |
| Browse to see if the Zimbra client works http://parker/
| |
| | |
| Browse to the Zimbra Administration console at https://parker:7071 or https://parker:7071/zimbraAdmin/ and login with admin@yourdomain and the password you set during installation.
| |
| | |
| Using the Admin console, you should create some more accounts for testing or add passwords to the accounts created during the installation.
| |
| | |
| The next thing is being able to deploy source. The ant scripts expect the Tomcat manager webapp to be listening on port 7070.
| |
| | |
| Now the Tomcat manager setup seemed broken so I modified that and also installed the developer version of the Tomcat server.xml file. This must be installed over server.xml.in since that file is used to overwrite server.xml.
| |
| | |
| Check the source out from CVS.
| |
| cvs -z6 -d :pserver:anonymous:@cvs.zimbra.com:/usr/local/cvsroot co main
| |
| | |
| I have placed mine in a directory zcs_src
| |
| | |
| zimbra@parker:~$ mv /opt/zimbra/tomcat/conf/server.xml.in /opt/zimbra/tomcat/conf/server.xml.in.aside
| |
| zimbra@parker:~$ cp ~peter/zimbra/zcs_src/ZimbraServer/conf/tomcat-5.5/server.xml /opt/zimbra/tomcat/conf/server.xml.in
| |
| zimbra@parker:~$ cd /opt/zimbra/tomcat/conf/Catalina/localhost/
| |
| zimbra@parker:~/tomcat/conf/Catalina/localhost$ cp -p manager.xml manager.xml.aside
| |
| | |
| Apply the following patch
| |
| | |
| * [http://www.bluetoad.com.au/zimbra/tomcatManager.patch tomcatManager patch]
| |
| | |
| The patch adds 'debug="0"' and 'path="/manager"' to the <Context> element:
| |
| | |
| --- manager.xml.broken 2006-04-26 15:08:55.000000000 +1000
| |
| +++ manager.xml 2006-04-26 15:10:04.000000000 +1000
| |
| @@ -7,8 +7,8 @@
| |
| -->
| |
|
| |
|
| |
| -<Context docBase="${catalina.home}/server/webapps/manager"
| |
| - privileged="true" antiResourceLocking="false" antiJARLocking="false">
| |
| +<Context path="/manager" docBase="${catalina.home}/server/webapps/manager"
| |
| + debug="0" privileged="true" antiResourceLocking="false" antiJARLocking="false">
| |
|
| |
| <!-- Link to the user database we will get roles from -->
| |
| <ResourceLink name="users" global="UserDatabase"
| |
| | |
| Apply it with:
| |
| | |
| zimbra@parker:~/tomcat/conf/Catalina/localhost$ patch -p0 < ~peter/zimbra/tomcatManager.patch
| |
| patching file manager.xml
| |
| | |
| Logout out as the zimbra user and log back in to pick up the new environment from the installation as Zimbra edit ~/.bashrc
| |
| | |
| Add these lines to your shell rc file:
| |
| | |
| CATALINA_HOME=/opt/zimbra/tomcat
| |
| export CATALINA_HOME
| |
| | |
| zimbra@parker:~$ logout
| |
| peter@parker:~$ sudo su - zimbra
| |
| Password:
| |
| zimbra@parker:~$ tomcat restart
| |
| $ netstat -nat
| |
| | |
| and you should no longer see port 80 being used and port 7070 has a listener now
| |
| | |
| browse to zimbra
| |
| | |
| http://parker:7070/
| |
| | |
| you don't need the domain to login as one of the users created above
| |
| | |
| Try sending some mail to an account you created or the one you have logged in as.
| |
| | |
| You'll need to hit "Get Mail" to refresh your Inbox.
| |
| | |
| Now, let's see if the tomcat manager is working
| |
| | |
| browse to
| |
| | |
| http://parker:7070/manager/html
| |
| | |
| the html directory was a surprise to me. Took a while to find that. Login as zimbra with password zimbra.
| |
| | |
| If there is a login issue you should check /opt/zimbra/tomcat/conf/tomcat-users.zml against zcs_src/ZimbraServer/conf/tomcat-5.5/tomcat-users.xml. The Debian developer build at the moment shipped with the zimbra user set up in the manager role.
| |
| | |
| Modify some permissions
| |
| | |
| $ sudo chown peter:peter /opt/zimbra/conf/msgs/ZsMsg.properties
| |
| $ chmod 644 /opt/zimbra/conf/msgs/ZsMsg.properties
| |
| $ sudo chgrp zimbra /opt/zimbra/apache-tomcat-5.5.15/work/Catalina/localhost/zimbraAdmin/tldCache.ser
| |
| peter@parker:~/zimbra/zcs_src/ZimbraServer$ sudo chmod g+w $_
| |
| peter@parker:~/zimbra/zcs_src$ cd ZimbraWebClient/
| |
| peter@parker:~/zimbra/zcs_src/ZimbraWebClient$ ls
| |
| bin build build.xml img jars src WebRoot ZimbraWebClient.iml
| |
| peter@parker:~/zimbra/zcs_src/ZimbraWebClient$ export JAVA_HOME=/opt/zimbra/java
| |
| peter@parker:~/zimbra/zcs_src/ZimbraWebClient$ export ANT_HOME=/opt/ant
| |
| peter@parker:~/zimbra/zcs_src/ZimbraWebClient$ export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
| |
| | |
| Now see if you can compile
| |
| | |
| $ ant
| |
| | |
| OK see if you can deploy
| |
| | |
| $ ant deploy
| |
| | |
| and also check /opt/zimbra/tomcat/logs/catalina.out
| |
| | |
| Browse to the zimbra app and see if it works.
| |
| | |
| $ cd ../ZimbraServer/
| |
| $ ant
| |
| $ ant service-deploy
| |
| | |
| That does crash Tomcat but you probably managed to deploy the webapp. Tomcat crashes on (see /opt/zimbra/tomcat/log/catalina.out)
| |
| | |
| Zimbra server reserving server socket port=110 bindaddr=null ssl=false
| |
| Fatal error: terminating: PrivilegedServlet init failed
| |
| java.net.SocketException: Permission denied
| |
| at sun.nio.ch.Net.bind(Native Method)
| |
| at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119)
| |
| at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
| |
| at com.zimbra.cs.util.NetUtil.newBoundServerSocket(NetUtil.java:78)
| |
| at com.zimbra.cs.util.NetUtil.reserveServerSocket(NetUtil.java:101)
| |
| at com.zimbra.cs.servlet.PrivilegedServlet.init(PrivilegedServlet.java:79)
| |
| at javax.servlet.GenericServlet.init(GenericServlet.java:211)
| |
| at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
| |
| at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
| |
| at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3915)
| |
| at org.apache.catalina.core.StandardContext.start(StandardContext.java:4176)
| |
| at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
| |
| at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
| |
| at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
| |
| at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:804)
| |
| at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:497)
| |
| at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1195)
| |
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| |
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| |
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| |
| at java.lang.reflect.Method.invoke(Method.java:585)
| |
| at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:503)
| |
| at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
| |
| at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
| |
| at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
| |
| at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
| |
| at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1377)
| |
| at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:636)
| |
| at org.apache.catalina.manager.ManagerServlet.doPut(ManagerServlet.java:423)
| |
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:712)
| |
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
| |
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
| |
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| |
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
| |
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
| |
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
| |
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
| |
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
| |
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
| |
| at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
| |
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
| |
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
| |
| at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
| |
| at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
| |
| at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
| |
| at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
| |
| at java.lang.Thread.run(Thread.java:595)
| |
| | |
| which makes sense since 110 (pop3) is a privileged port and you normally need to be root. I'm going to look at some UML or VServer way of doing this...
| |
| | |
| So for now I just do
| |
| | |
| zimbra@parker:~$ tomcat restart
| |
| | |
| until I work out why that works since I'm zimbra there.
| |
| | |
| from /etc/sudoers:
| |
| %zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmtomcatstart
| |
| | |
| ok then.
| |
| | |
| Now to get the code into Eclipse was easy. I created separate projects for ZimbraWebClient, ZimbraServer and Ajax
| |
| | |
| == CVS Update ==
| |
| | |
| I did a CVS update and found that the database schema had changed. (Don't forget to do a CVS update -d for new directories)
| |
| | |
| After poking around the source tree and looking at the forums and several attempts at , I
| |
| found I needed to
| |
| | |
| $ sudo cp -p ./ZimbraBuild/rpmconf/Upgrade/zmupgrade.pm /opt/zimbra/libexec/
| |
| | |
| Examining zmupgrade.pm, I a saw it called perl scripts. I looked in /ZimbraBuild/rpmconf/Upgrade/upgrade.tgz, the missing one wasn't there... I found it at
| |
| ./main/ZimbraServer/src/db/migrate20060412-NotebookFolder.pl
| |
| | |
| $ sudo cp -p ../main/ZimbraServer/src/db/migrate20060412-NotebookFolder.pl /opt/zimbra/libexec/scripts/
| |
| | |
| Then I needed to edit /opt/zimbra/libexec/zmsetup.pl so that the upgrade would run
| |
| | |
| Before
| |
| | |
| if (! $newinstall && ($prevVersion ne $curVersion )) {
| |
| progress ("Upgrading from $prevVersion to $curVersion\n");
| |
| if (zmupgrade::upgrade($prevVersion, $curVersion)){
| |
| progress ("UPGRADE FAILED - exiting\n");
| |
| exit 1;
| |
| } else {
| |
| progress ("Upgrade complete\n");
| |
| }
| |
| }
| |
| | |
| insert the line
| |
| | |
| $curVersion="3.1.0_GA_333";
| |
| | |
| | |
| or use whatever build will be 1 greater than the build number for your installed version of zimbra-core. E.g. mine was 332.
| |
| | |
| $ grep zimbra-core /opt/zimbra/.install_history
| |
| 1146104795: INSTALLED zimbra-core_3.1.0_GA_332.DEBIAN3.1_i386.deb
| |
| | |
| Then
| |
| | |
| $ /opt/zimbra/libexec/zmsetup.pl
| |
| | |
| should work.
| |
| | |
| Another gotcha was that you needed to run
| |
| | |
| $ ant compress-js-files
| |
| | |
| for ZimbraWebClient to generate the zipped javascript files.
| |
| {{Article Footer|Zimbra Collaboration 5.0|04/16/2014}}
| |