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