Skip to content

Commit 4a77a79

Browse files
ustcweizhouyadvr
authored andcommitted
CLOUDSTACK-9462: Build packages on Ubuntu 14.04/16.04 and support tomcat6/tomcat7
Changes (1) add systemd support in debian/control and debian/rules for 16.04 (2) add python-setuptools in Build-Depends in debian/control (3) seperate cloudstack-management.service and cloudstack-management.default for CentOS7 and Ubuntu 16.04 (4) add server7-ssl.xml and server7-nonssl.xml in management installation (5) link /usr/share/cloudstack-management/lib and /usr/share/cloudstack-management/bin to correct path (tomcat6 or tomcat7) (6) link /etc/cloudstack/management/server.xml to correct file path (server-nonssl.xml or server7-nonssl.xml) (7) remove *.zip from .gitignore to avoid build error caused by missing /vhds/test.vhd.zip Instruction (1) build packages on Ubuntu 16.04: dpkg-buildpackage -uc -us Output on Ubuntu 16.04: -rw-r--r-- 1 root root 4090 Feb 17 10:12 cloudstack_4.10.0.0-SNAPSHOT_amd64.changes -rw-r--r-- 1 root root 1235 Feb 17 09:53 cloudstack_4.10.0.0-SNAPSHOT.dsc -rw-r--r-- 1 root root 8018248 Feb 17 09:53 cloudstack_4.10.0.0-SNAPSHOT.tar.xz -rw-r--r-- 1 root root 91868746 Feb 17 10:11 cloudstack-agent_4.10.0.0-SNAPSHOT_all.deb -rw-r--r-- 1 root root 52882 Feb 17 10:12 cloudstack-cli_4.10.0.0-SNAPSHOT_all.deb -rw-r--r-- 1 root root 98556216 Feb 17 10:08 cloudstack-common_4.10.0.0-SNAPSHOT_all.deb -rw-r--r-- 1 root root 52864 Feb 17 10:12 cloudstack-docs_4.10.0.0-SNAPSHOT_all.deb -rw-r--r-- 1 root root 585434 Feb 17 10:12 cloudstack-integration-tests_4.10.0.0-SNAPSHOT_all.deb -rw-r--r-- 1 root root 323459934 Feb 17 10:10 cloudstack-management_4.10.0.0-SNAPSHOT_all.deb -rw-r--r-- 1 root root 442656 Feb 17 10:12 cloudstack-marvin_4.10.0.0-SNAPSHOT_all.deb -rw-r--r-- 1 root root 87037576 Feb 17 10:12 cloudstack-usage_4.10.0.0-SNAPSHOT_all.deb (2) setup tomcat6/tomcat7 on management server: tomcat6: cloudstack-setup-management --tomcat6 tomcat7: cloudstack-setup-management --tomcat7 Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
1 parent 50ffbe9 commit 4a77a79

File tree

9 files changed

+152
-17
lines changed

9 files changed

+152
-17
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ tools/cli/build/
5151
*.jar
5252
*.war
5353
*.mar
54-
*.zip
5554
*.iso
5655
*.tar.gz
5756
*.tgz

debian/cloudstack-management.install

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
/etc/cloudstack/management/ehcache.xml
2222
/etc/cloudstack/management/server-ssl.xml
2323
/etc/cloudstack/management/server-nonssl.xml
24-
/etc/cloudstack/management/server.xml
24+
/etc/cloudstack/management/server7-ssl.xml
25+
/etc/cloudstack/management/server7-nonssl.xml
2526
/etc/cloudstack/management/classpath.conf
2627
/etc/cloudstack/management/db.properties
2728
/etc/cloudstack/management/tomcat6-ssl.conf
@@ -33,6 +34,7 @@
3334
/etc/cloudstack/management/log4j-cloud.xml
3435
/etc/cloudstack/management/tomcat-users.xml
3536
/etc/cloudstack/management/context.xml
37+
/etc/default/cloudstack-management
3638
/etc/init.d/cloudstack-management
3739
/etc/security/limits.d/cloudstack-limits.conf
3840
/etc/sudoers.d/cloudstack

debian/cloudstack-management.postinst

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,26 @@ if [ "$1" = configure ]; then
6060

6161
chmod 0640 ${CONFDIR}/${DBPROPS}
6262
chgrp cloud ${CONFDIR}/${DBPROPS}
63-
invoke-rc.d tomcat6 stop || true
63+
64+
if [ -d "/usr/share/tomcat7" ]; then
65+
rm -f /usr/share/cloudstack-management/bin
66+
rm -f /usr/share/cloudstack-management/lib
67+
ln -s /usr/share/tomcat7/bin /usr/share/cloudstack-management/bin
68+
ln -s /usr/share/tomcat7/lib /usr/share/cloudstack-management/lib
69+
invoke-rc.d tomcat7 stop || true
70+
if [ ! -f "/etc/cloudstack/management/server.xml" ]; then
71+
ln -s /etc/cloudstack/management/server7-nonssl.xml /etc/cloudstack/management/server.xml
72+
fi
73+
elif [ -d "/usr/share/tomcat6" ]; then
74+
rm -f /usr/share/cloudstack-management/bin
75+
rm -f /usr/share/cloudstack-management/lib
76+
ln -s /usr/share/tomcat6/bin /usr/share/cloudstack-management/bin
77+
ln -s /usr/share/tomcat6/lib /usr/share/cloudstack-management/lib
78+
invoke-rc.d tomcat6 stop || true
79+
if [ ! -f "/etc/cloudstack/management/server.xml" ]; then
80+
ln -s /etc/cloudstack/management/server-nonssl.xml /etc/cloudstack/management/server.xml
81+
fi
82+
fi
6483

6584
# Add jdbc MySQL driver settings to db.properties if not present
6685
grep -s -q "db.cloud.driver=jdbc:mysql" ${CONFDIR}/${DBPROPS} || sed -i -e "\$adb.cloud.driver=jdbc:mysql" ${CONFDIR}/${DBPROPS}

debian/control

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Section: libs
33
Priority: extra
44
Maintainer: Wido den Hollander <wido@widodh.nl>
55
Build-Depends: debhelper (>= 9), openjdk-8-jdk | java8-sdk | java8-jdk, genisoimage,
6-
python-mysql.connector, maven (>= 3) | maven3, python (>= 2.7), lsb-release, dh-systemd
6+
python-mysql.connector, maven (>= 3) | maven3, python (>= 2.7), lsb-release, dh-systemd, python-setuptools
77
Standards-Version: 3.8.1
88
Homepage: http://www.cloudstack.org/
99

@@ -15,15 +15,14 @@ Description: A common package which contains files which are shared by several C
1515

1616
Package: cloudstack-management
1717
Architecture: all
18-
Depends: ${misc:Depends}, ${python:Depends}, openjdk-8-jre-headless | java8-runtime-headless | java8-runtime, cloudstack-common (= ${source:Version}), tomcat6 | tomcat7, sudo, jsvc, python-mysql.connector, libmysql-java, augeas-tools, mysql-client, adduser, bzip2, ipmitool, lsb-release
18+
Depends: ${python:Depends}, openjdk-8-jre-headless | java8-runtime-headless | java8-runtime | openjdk-7-jre-headless, cloudstack-common (= ${source:Version}), tomcat6 | tomcat7, sudo, jsvc, python-mysql.connector, libmysql-java, augeas-tools, mysql-client, adduser, bzip2, ipmitool, lsb-release, init-system-helpers (>= 1.14~)
1919
Conflicts: cloud-server, cloud-client, cloud-client-ui
2020
Description: CloudStack server library
2121
The CloudStack management server
2222

2323
Package: cloudstack-agent
2424
Architecture: all
25-
Depends: ${python:Depends}, openjdk-8-jre-headless | java8-runtime-headless | java8-runtime, cloudstack-common (= ${source:Version}), lsb-base (>= 4.0), libcommons-daemon-java, openssh-client, qemu-kvm (>= 1.0), libvirt-bin (>= 0.9.8), uuid-runtime, iproute, ebtables, vlan, jsvc, ipset, python-libvirt, ethtool, iptables, lsb-release
26-
Recommends: init-system-helpers
25+
Depends: ${python:Depends}, openjdk-8-jre-headless | java8-runtime-headless | java8-runtime, cloudstack-common (= ${source:Version}), lsb-base (>= 4.0), libcommons-daemon-java, openssh-client, qemu-kvm (>= 1.0), libvirt-bin (>= 0.9.8), uuid-runtime, iproute, ebtables, vlan, jsvc, ipset, python-libvirt, ethtool, iptables, lsb-release, init-system-helpers (>= 1.14~)
2726
Conflicts: cloud-agent, cloud-agent-libs, cloud-agent-deps, cloud-agent-scripts
2827
Description: CloudStack agent
2928
The CloudStack agent is in charge of managing shared computing resources in
@@ -32,8 +31,7 @@ Description: CloudStack agent
3231

3332
Package: cloudstack-usage
3433
Architecture: all
35-
Depends: openjdk-8-jre-headless | java8-runtime-headless | java8-runtime, cloudstack-common (= ${source:Version}), jsvc, libmysql-java
36-
Recommends: init-system-helpers
34+
Depends: openjdk-8-jre-headless | java8-runtime-headless | java8-runtime, cloudstack-common (= ${source:Version}), jsvc, libmysql-java, init-system-helpers (>= 1.14~)
3735
Description: CloudStack usage monitor
3836
The CloudStack usage monitor provides usage accounting across the entire cloud for
3937
cloud operators to charge based on usage parameters.

debian/rules

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,20 @@ override_dh_auto_install:
8585
chmod 0440 $(DESTDIR)/$(SYSCONFDIR)/sudoers.d/$(PACKAGE)
8686

8787
ln -s tomcat6-nonssl.conf $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/tomcat6.conf
88-
ln -s server-nonssl.xml $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/server.xml
8988
install -D packaging/debian/init/cloud-management $(DESTDIR)/$(SYSCONFDIR)/init.d/$(PACKAGE)-management
9089
install -D client/target/utilities/bin/cloud-update-xenserver-licenses $(DESTDIR)/usr/bin/cloudstack-update-xenserver-licenses
91-
ln -s /usr/share/tomcat6/bin $(DESTDIR)/usr/share/$(PACKAGE)-management/bin
9290
# Remove configuration in /ur/share/cloudstack-management/webapps/client/WEB-INF
9391
# This should all be in /etc/cloudstack/management
9492
rm $(DESTDIR)/usr/share/$(PACKAGE)-management/webapps/client/WEB-INF/classes/*.*
9593
ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/management $(DESTDIR)/usr/share/$(PACKAGE)-management/conf
96-
ln -s ../../../usr/share/tomcat6/lib $(DESTDIR)/usr/share/$(PACKAGE)-management/lib
9794
ln -s ../../../var/log/$(PACKAGE)/management $(DESTDIR)/usr/share/$(PACKAGE)-management/logs
9895
ln -s ../../../var/cache/$(PACKAGE)/management/temp $(DESTDIR)/usr/share/$(PACKAGE)-management/temp
9996
ln -s ../../../var/cache/$(PACKAGE)/management/work $(DESTDIR)/usr/share/$(PACKAGE)-management/work
10097

98+
install -d -m0755 debian/$(PACKAGE)-management/lib/systemd/system
99+
install -m0644 packaging/systemd/$(PACKAGE)-management.service.ubuntu debian/$(PACKAGE)-management/lib/systemd/system/$(PACKAGE)-management.service
100+
install -m0644 packaging/systemd/$(PACKAGE)-management.default.ubuntu $(DESTDIR)/$(SYSCONFDIR)/default/$(PACKAGE)-management
101+
101102
# cloudstack-common
102103
mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-common
103104
mkdir $(DESTDIR)/usr/share/$(PACKAGE)-common/scripts
@@ -149,7 +150,7 @@ override_dh_installinit:
149150
dh_installinit -pcloudstack-management -pcloudstack-agent -pcloudstack-usage --onlyscripts --no-start
150151

151152
override_dh_systemd_enable:
152-
dh_systemd_enable -pcloudstack-agent -pcloudstack-usage
153+
dh_systemd_enable -pcloudstack-management -pcloudstack-agent -pcloudstack-usage
153154

154155
override_dh_installdocs:
155156
dh_installdocs -A tools/whisker/LICENSE tools/whisker/NOTICE INSTALL.md

packaging/build-deb.sh

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# specific language governing permissions and limitations
1717
# under the License.
1818

19-
set -e
19+
#set -e
2020

2121
#
2222
# This script builds Debian packages for CloudStack and does
@@ -43,11 +43,21 @@ set -e
4343
cd `dirname $0`
4444
cd ..
4545

46-
dpkg-checkbuilddeps
46+
DCH=$(which dch)
47+
if [ -z "$DCH" ] ; then
48+
echo -e "dch not found, please install devscripts at first. \nDEB Build Failed"
49+
exit
50+
fi
4751

48-
VERSION=$(grep '^ <version>' pom.xml| cut -d'>' -f2 |cut -d'<' -f1)
52+
VERSION=$(head -n1 debian/changelog |awk -F [\(\)] '{print $2}')
4953
DISTCODE=$(lsb_release -sc)
5054

55+
/bin/cp debian/changelog /tmp/changelog.orig
56+
5157
dch -b -v "${VERSION}~${DISTCODE}" -u low -m "Apache CloudStack Release ${VERSION}"
58+
sed -i '0,/ UNRELEASED;/s// unstable;/g' debian/changelog
59+
60+
dpkg-checkbuilddeps
61+
dpkg-buildpackage -uc -us
5262

53-
dpkg-buildpackage -j2 -b -uc -us
63+
/bin/mv /tmp/changelog.orig debian/changelog
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
# Required for a tocmat cloned service
19+
SERVICE_NAME=cloudstack-management
20+
21+
# Where your java installation lives
22+
#JAVA_HOME="/usr/lib/jvm/java"
23+
24+
# Where your cloudstack-management installation lives
25+
CATALINA_BASE="/usr/share/cloudstack-management"
26+
CATALINA_HOME="/usr/share/cloudstack-management"
27+
JASPER_HOME="/usr/share/cloudstack-management"
28+
CATALINA_TMPDIR="/usr/share/cloudstack-management/temp"
29+
30+
31+
if [ -r "/etc/cloudstack/management/cloudmanagementserver.keystore" ] ; then
32+
JAVA_OPTS="-Djava.awt.headless=true -Dcom.sun.management.jmxremote=false -Xmx2g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/cloudstack/management/ -XX:PermSize=512M -XX:MaxPermSize=800m -Djavax.net.ssl.trustStore=/etc/cloudstack/management/cloudmanagementserver.keystore -Djavax.net.ssl.trustStorePassword=vmops.com "
33+
else
34+
JAVA_OPTS="-Djava.awt.headless=true -Dcom.sun.management.jmxremote=false -Xmx2g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/cloudstack/management/ -XX:PermSize=512M -XX:MaxPermSize=800m"
35+
fi
36+
37+
TOMCAT_USER="cloud"
38+
39+
SECURITY_MANAGER="false"
40+
41+
SHUTDOWN_WAIT="30"
42+
43+
SHUTDOWN_VERBOSE="false"
44+
45+
# Set the TOMCAT_PID location
46+
CATALINA_PID="/var/run/cloudstack-management.pid"
47+
48+
CLASSPATH=/usr/share/java/commons-daemon.jar:/usr/share/cloudstack-management/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar:/etc/cloudstack/management:/usr/share/cloudstack-common:/usr/share/cloudstack-management/setup
49+
50+
BOOTSTRAP_CLASS=org.apache.catalina.startup.Bootstrap
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
# Systemd unit file for CloudStack Management server
19+
#
20+
# clone tomcat service, see /usr/lib/systemd/system/tomcat.service
21+
22+
[Unit]
23+
Description=CloudStack Management Server
24+
After=syslog.target network.target
25+
26+
[Service]
27+
UMask=0022
28+
Type=forking
29+
Environment="NAME=cloudstack-management"
30+
EnvironmentFile=-/etc/default/cloudstack-management
31+
ExecStartPre=/bin/bash -c "/bin/systemctl set-environment JAVA_HOME=$( readlink -f $( which java ) | sed s:bin/.*$:: )"
32+
ExecStart=/usr/bin/jsvc -user "${TOMCAT_USER}" -cp "$CLASSPATH" \
33+
-outfile SYSLOG -errfile SYSLOG \
34+
-pidfile "${CATALINA_PID}" ${JAVA_OPTS} \
35+
-Dcatalina.base="${CATALINA_BASE}" -Dcatalina.home="${CATALINA_HOME}" -Djava.io.tmpdir="${CATALINA_TMPDIR}" "${BOOTSTRAP_CLASS}"
36+
ExecStop=/usr/bin/jsvc -cp "$CLASSPATH" -pidfile "$CATALINA_PID" \
37+
-stop "$BOOTSTRAP_CLASS"
38+
39+
[Install]
40+
WantedBy=multi-user.target

python/lib/cloudutils/serviceConfigServer.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ def checkHostName():
8989
if os.path.exists("/etc/cloudstack/management/server.xml"):
9090
bash("rm -f /etc/cloudstack/management/server.xml")
9191
bash("ln -s /etc/cloudstack/management/server7-ssl.xml /etc/cloudstack/management/server.xml")
92+
bash("rm -f /usr/share/cloudstack-management/bin")
93+
bash("rm -f /usr/share/cloudstack-management/lib")
94+
bash("ln -s /usr/share/tomcat7/bin /usr/share/cloudstack-management/bin")
95+
bash("ln -s /usr/share/tomcat7/lib /usr/share/cloudstack-management/lib")
9296
else:
9397
if not os.path.exists("/etc/cloudstack/management/server-ssl.xml") or not os.path.exists("/etc/cloudstack/management/tomcat6-ssl.conf"):
9498
raise CloudRuntimeException("Cannot find /etc/cloudstack/management/server-ssl.xml or /etc/cloudstack/management/tomcat6-ssl.conf, https enable failed")
@@ -98,6 +102,10 @@ def checkHostName():
98102
bash("rm -f /etc/cloudstack/management/tomcat6.conf")
99103
bash("ln -s /etc/cloudstack/management/server-ssl.xml /etc/cloudstack/management/server.xml")
100104
bash("ln -s /etc/cloudstack/management/tomcat6-ssl.conf /etc/cloudstack/management/tomcat6.conf")
105+
bash("rm -f /usr/share/cloudstack-management/bin")
106+
bash("rm -f /usr/share/cloudstack-management/lib")
107+
bash("ln -s /usr/share/tomcat6/bin /usr/share/cloudstack-management/bin")
108+
bash("ln -s /usr/share/tomcat6/lib /usr/share/cloudstack-management/lib")
101109
if not bash("iptables-save |grep PREROUTING | grep 6443").isSuccess():
102110
bash("iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 6443")
103111
else:
@@ -107,6 +115,10 @@ def checkHostName():
107115
if os.path.exists("/etc/cloudstack/management/server.xml"):
108116
bash("rm -f /etc/cloudstack/management/server.xml")
109117
bash("ln -s /etc/cloudstack/management/server7-nonssl.xml /etc/cloudstack/management/server.xml")
118+
bash("rm -f /usr/share/cloudstack-management/bin")
119+
bash("rm -f /usr/share/cloudstack-management/lib")
120+
bash("ln -s /usr/share/tomcat7/bin /usr/share/cloudstack-management/bin")
121+
bash("ln -s /usr/share/tomcat7/lib /usr/share/cloudstack-management/lib")
110122
else:
111123
if not os.path.exists("/etc/cloudstack/management/server-nonssl.xml") or not os.path.exists("/etc/cloudstack/management/tomcat6-nonssl.conf"):
112124
raise CloudRuntimeException("Cannot find /etc/cloudstack/management/server-nonssl.xml or /etc/cloudstack/management/tomcat6-nonssl.conf, https enable failed")
@@ -116,6 +128,10 @@ def checkHostName():
116128
bash("rm -f /etc/cloudstack/management/tomcat6.conf")
117129
bash("ln -s /etc/cloudstack/management/server-nonssl.xml /etc/cloudstack/management/server.xml")
118130
bash("ln -s /etc/cloudstack/management/tomcat6-nonssl.conf /etc/cloudstack/management/tomcat6.conf")
131+
bash("rm -f /usr/share/cloudstack-management/bin")
132+
bash("rm -f /usr/share/cloudstack-management/lib")
133+
bash("ln -s /usr/share/tomcat6/bin /usr/share/cloudstack-management/bin")
134+
bash("ln -s /usr/share/tomcat6/lib /usr/share/cloudstack-management/lib")
119135
bash("touch /var/run/cloudstack-management.pid")
120136
bash("chown cloud.cloud /var/run/cloudstack-management.pid")
121137
#distro like sl 6.1 needs this folder, or tomcat6 failed to start

0 commit comments

Comments
 (0)