# Apache CloudStack Installation basics This document describes how to develop, build, package and install Apache CloudStack. For more information please refer to the official [documentation](http://docs.cloudstack.apache.org) or the developer [wiki](https://cwiki.apache.org/confluence/display/CLOUDSTACK/Home). Apache CloudStack developers use various platforms for development, this guide was tested against a CentOS 6.5 x86_64 setup. * [Setting up development environment](https://cwiki.apache.org/confluence/display/CLOUDSTACK/Setting+up+CloudStack+Development+Environment) for Apache CloudStack. * [Building](https://cwiki.apache.org/confluence/display/CLOUDSTACK/How+to+build+CloudStack) Apache CloudStack. ## Setting up Development Environment Install tools and dependencies used for development: $ yum install git ant ant-devel java-1.6.0-openjdk java-1.6.0-openjdk-devel mysql mysql-server tomcat6 mkisofs gcc python MySQL-python openssh-clients wget # yum -y update # yum -y install java-1.7.0-openjdk # yum -y install java-1.7.0-openjdk-devel # yum -y install mysql-server # yum -y install git # yum -y install genisoimage Set up Maven (3.0.5): # wget http://www.us.apache.org/dist/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz # tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /usr/local # cd /usr/local # ln -s apache-maven-3.0.5 maven # echo export M2_HOME=/usr/local/maven >> ~/.bashrc # or .zshrc or .profile # echo export PATH=/usr/local/maven/bin:${PATH} >> ~/.bashrc # or .zshrc or .profile # source ~/.bashrc Start the MySQL service: $ service mysqld start ## Getting the Source Code You may get the source code from the repository hosted on Apache: $ git clone https://git-wip-us.apache.org/repos/asf/cloudstack.git Or, you may fork the repository from the official Apache CloudStack mirror on [Github](https://github.com/apache/cloudstack) To checkout a specific branch, for example 4.4, do: $ git fetch origin $ git checkout -b 4.4 origin/4.4 ## Building Clean and build: $ mvn clean install -P systemvm,developer Clear old database (if any) and deploy the database schema: $ mvn -P developer -pl developer -Ddeploydb Export the following variable if you need to run and debug the management server: $ export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=500m -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n" Start the management server: $ mvn -pl :cloud-client-ui jetty:run If this works, you've successfully setup a single server Apache CloudStack installation. Open the following URL on your browser to access the Management Server UI: http://localhost:8080/client/ The default credentials are; user: admin, password: password and the domain field should be left blank which is defaulted to the ROOT domain. ## Building with non-redistributable plugins CloudStack supports several plugins that depend on libraries with distribution restrictions. Because of this they are not included in the default build. Enable these additional plugins activate their respective profiles. For convenience adding -Dnoredist will enable all plugins that depend on libraries with distribution restrictions. The build procedure expects that the required libraries are present in the maven repository. The following procedure can be used to add the libraries to the local maven repository. Details on obtaining the required libraries can be found in this file. Note that this will vary between releases of CloudStack $ cd deps $ ./install-non-oss.sh To build all non redistributable components, add the noredist flag to the build command: $ mvn clean install -P systemvm,developer -Dnoredist ## Packaging and Installation Before packaging, please make sure you go through the "Building" section above. This section describes packaging and installation. ### Debian/Ubuntu To create debs install the following extra packages: # apt-get -y install python-mysqldb # apt-get -y install debhelper # apt-get -y install tomcat6 Then: $ mvn -P deps # -D noredist, for noredist as described in the "Building" section above $ dpkg-buildpackage -uc -us All the deb packages will be located one level down. ### RHEL/CentOS To create rpms, install the following extra packages: # yum -y install rpm-build # yum -y install tomcat6 # yum -y install ws-commons-util # yum -y instal gcc # yum -y install glibc-devel # yum -y install MySQL-python Then: $ cd packaging/centos63 $ package.sh To create packages for noredist add the `-p noredist` option to the package script. All the rpm packages will be created in `dist/rpmbuild/RPMS/x86_64` directory. ## Notes If you will be using Xen as your hypervisor, please download [vhd-util](http://download.cloud.com.s3.amazonaws.com/tools/vhd-util) If management server is installed on RHEL/CentOS, then copy vhd-util into: /usr/lib64/cloud/common/scripts/vm/hypervisor/xenserver/ If management server is installed on Ubuntu, then put vhd-util into: /usr/lib/cloud/common/scripts/vm/hypervisor/xenserver/vhd-util