TB-65: Unix install/upgrade scripts.
This commit is contained in:
parent
517cf1323e
commit
f206b9f4e7
@ -57,6 +57,21 @@ ospackage {
|
||||
into "bin"
|
||||
}
|
||||
|
||||
// Copy the install files
|
||||
from("target/bin/install/install.sh") {
|
||||
fileMode 0775
|
||||
into "bin/install"
|
||||
}
|
||||
|
||||
from("target/bin/install/upgrade.sh") {
|
||||
fileMode 0775
|
||||
into "bin/install"
|
||||
}
|
||||
|
||||
from("target/bin/install/logback.xml") {
|
||||
into "bin/install"
|
||||
}
|
||||
|
||||
// Copy the config files
|
||||
from("target/conf") {
|
||||
exclude "${pkgName}.conf"
|
||||
|
||||
@ -375,6 +375,29 @@
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-install</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/bin/install</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/install</directory>
|
||||
<includes>
|
||||
<include>**/*.sh</include>
|
||||
<include>**/*.xml</include>
|
||||
</includes>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-windows-control</id>
|
||||
<phase>process-resources</phase>
|
||||
@ -395,7 +418,7 @@
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-data-cql</id>
|
||||
<id>copy-data</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
@ -403,10 +426,14 @@
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/data</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/data</directory>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>../dao/src/main/resources</directory>
|
||||
<includes>
|
||||
<include>**/*.cql</include>
|
||||
<include>**/*.sql</include>
|
||||
</includes>
|
||||
<filtering>false</filtering>
|
||||
</resource>
|
||||
|
||||
@ -1,3 +1,19 @@
|
||||
--
|
||||
-- Copyright © 2016-2017 The Thingsboard Authors
|
||||
--
|
||||
-- Licensed under the Apache License, Version 2.0 (the "License");
|
||||
-- you may not use this file except in compliance with the License.
|
||||
-- You may obtain a copy of the License at
|
||||
--
|
||||
-- http://www.apache.org/licenses/LICENSE-2.0
|
||||
--
|
||||
-- Unless required by applicable law or agreed to in writing, software
|
||||
-- distributed under the License is distributed on an "AS IS" BASIS,
|
||||
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
-- See the License for the specific language governing permissions and
|
||||
-- limitations under the License.
|
||||
--
|
||||
|
||||
DROP MATERIALIZED VIEW IF EXISTS thingsboard.device_by_tenant_and_name;
|
||||
DROP MATERIALIZED VIEW IF EXISTS thingsboard.device_by_tenant_and_search_text;
|
||||
DROP MATERIALIZED VIEW IF EXISTS thingsboard.device_by_tenant_by_type_and_search_text;
|
||||
|
||||
@ -39,7 +39,7 @@ public class ThingsboardInstallService {
|
||||
@Value("${install.upgrade:false}")
|
||||
private Boolean isUpgrade;
|
||||
|
||||
@Value("${install.upgrade.form_version:1.2.3}")
|
||||
@Value("${install.upgrade.from_version:1.2.3}")
|
||||
private String upgradeFromVersion;
|
||||
|
||||
@Value("${install.data_dir}")
|
||||
|
||||
@ -35,6 +35,7 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class CassandraDatabaseSchemaService implements DatabaseSchemaService {
|
||||
|
||||
private static final String CASSANDRA_DIR = "cassandra";
|
||||
private static final String SCHEMA_CQL = "schema.cql";
|
||||
|
||||
@Value("${install.data_dir}")
|
||||
@ -47,7 +48,7 @@ public class CassandraDatabaseSchemaService implements DatabaseSchemaService {
|
||||
public void createDatabaseSchema() throws Exception {
|
||||
log.info("Installing Cassandra DataBase schema...");
|
||||
|
||||
Path schemaFile = Paths.get(this.dataDir, SCHEMA_CQL);
|
||||
Path schemaFile = Paths.get(this.dataDir, CASSANDRA_DIR, SCHEMA_CQL);
|
||||
loadCql(schemaFile);
|
||||
|
||||
}
|
||||
|
||||
@ -22,20 +22,44 @@ import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.thingsboard.server.dao.util.SqlDao;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
|
||||
@Service
|
||||
@Profile("install")
|
||||
@Slf4j
|
||||
@SqlDao
|
||||
public class SqlDatabaseSchemaService implements DatabaseSchemaService {
|
||||
|
||||
private static final String SQL_DIR = "sql";
|
||||
private static final String SCHEMA_SQL = "schema.sql";
|
||||
|
||||
@Value("${install.data_dir}")
|
||||
private String dataDir;
|
||||
|
||||
@Value("${spring.datasource.url}")
|
||||
private String dbUrl;
|
||||
|
||||
@Value("${spring.datasource.username}")
|
||||
private String dbUserName;
|
||||
|
||||
@Value("${spring.datasource.password}")
|
||||
private String dbPassword;
|
||||
|
||||
@Override
|
||||
public void createDatabaseSchema() throws Exception {
|
||||
|
||||
log.info("Installing SQL DataBase schema...");
|
||||
//TODO:
|
||||
|
||||
Path schemaFile = Paths.get(this.dataDir, SQL_DIR, SCHEMA_SQL);
|
||||
try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) {
|
||||
String sql = new String(Files.readAllBytes(schemaFile), Charset.forName("UTF-8"));
|
||||
conn.createStatement().execute(sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
63
application/src/main/scripts/install/install.sh
Executable file
63
application/src/main/scripts/install/install.sh
Executable file
@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright © 2016-2017 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
key="$1"
|
||||
|
||||
case $key in
|
||||
--loadDemo)
|
||||
LOAD_DEMO=true
|
||||
shift # past argument
|
||||
;;
|
||||
*)
|
||||
# unknown option
|
||||
;;
|
||||
esac
|
||||
shift # past argument or value
|
||||
done
|
||||
|
||||
if [ "$LOAD_DEMO" == "true" ]; then
|
||||
loadDemo=true
|
||||
else
|
||||
loadDemo=false
|
||||
fi
|
||||
|
||||
CONF_FOLDER=${pkg.installFolder}/conf
|
||||
configfile=${pkg.name}.conf
|
||||
jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
|
||||
installDir=${pkg.installFolder}/data
|
||||
|
||||
source "${CONF_FOLDER}/${configfile}"
|
||||
|
||||
run_user=${pkg.name}
|
||||
|
||||
su -s /bin/sh -c "java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardInstallApplication \
|
||||
-Dinstall.data_dir=${installDir} \
|
||||
-Dinstall.load_demo=${loadDemo} \
|
||||
-Dspring.jpa.hibernate.ddl-auto=none \
|
||||
-Dinstall.upgrade=false \
|
||||
-Dlogging.config=${pkg.installFolder}/bin/install/logback.xml \
|
||||
org.springframework.boot.loader.PropertiesLauncher" "$run_user"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ThingsBoard installation failed!"
|
||||
else
|
||||
echo "ThingsBoard installed successfully!"
|
||||
fi
|
||||
|
||||
exit $?
|
||||
58
application/src/main/scripts/install/logback.xml
Normal file
58
application/src/main/scripts/install/logback.xml
Normal file
@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
|
||||
Copyright © 2016-2017 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<!DOCTYPE configuration>
|
||||
<configuration>
|
||||
|
||||
<appender name="fileLogAppender"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${pkg.logFolder}/install.log</file>
|
||||
<rollingPolicy
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${pkg.logFolder}/install.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
<maxFileSize>100MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
<totalSizeCap>3GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<logger name="org.thingsboard.server.install" level="INFO">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</logger>
|
||||
|
||||
<logger name="org.thingsboard.server.service.install" level="INFO">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</logger>
|
||||
|
||||
<logger name="org.thingsboard.server" level="INFO" />
|
||||
<logger name="akka" level="INFO" />
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="fileLogAppender"/>
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
62
application/src/main/scripts/install/upgrade.sh
Executable file
62
application/src/main/scripts/install/upgrade.sh
Executable file
@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright © 2016-2017 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
for i in "$@"
|
||||
do
|
||||
case $i in
|
||||
--fromVersion=*)
|
||||
FROM_VERSION="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
# unknown option
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -z "${FROM_VERSION// }" ]]; then
|
||||
echo "--fromVersion parameter is invalid or unspecified!"
|
||||
echo "Usage: upgrade.sh --fromVersion={VERSION}"
|
||||
exit 1
|
||||
else
|
||||
fromVersion="${FROM_VERSION// }"
|
||||
fi
|
||||
|
||||
CONF_FOLDER=${pkg.installFolder}/conf
|
||||
configfile=${pkg.name}.conf
|
||||
jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
|
||||
installDir=${pkg.installFolder}/data
|
||||
|
||||
source "${CONF_FOLDER}/${configfile}"
|
||||
|
||||
run_user=${pkg.name}
|
||||
|
||||
su -s /bin/sh -c "java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardInstallApplication \
|
||||
-Dinstall.data_dir=${installDir} \
|
||||
-Dspring.jpa.hibernate.ddl-auto=none \
|
||||
-Dinstall.upgrade=true \
|
||||
-Dinstall.upgrade.from_version=${fromVersion} \
|
||||
-Dlogging.config=${pkg.installFolder}/bin/install/logback.xml \
|
||||
org.springframework.boot.loader.PropertiesLauncher" "$run_user"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ThingsBoard upgrade failed!"
|
||||
else
|
||||
echo "ThingsBoard upgraded successfully!"
|
||||
fi
|
||||
|
||||
exit $?
|
||||
Loading…
x
Reference in New Issue
Block a user