Solution Central을 사용하여 빌딩 블록 배포
이 시나리오에서는 데이터베이스와 ThingWorx가 시스템에 설치되고 Solution Central을 사용하여 빌딩 블록을 ThingWorx 인스턴스에 배포합니다.
다음 단원의 단계를 완료하십시오.
사전 요구 사항
빌딩 블록을 배포하기 전에 다음 사전 요구 사항을 완료하십시오.
호환되는 ThingWorx 버전을 포함하여 빌딩 블록 시스템 요구사항을 검토합니다. 자세한 내용은 시스템 요구사항를 참조하십시오.
ThingWorx의 호환되는 버전에 대한 ThingWorx 시스템 요구사항을 검토합니다. 자세한 내용은 ThingWorx 도움말 센터의 시스템 요구사항을 참조하십시오.
호환되는 ThingWorx 버전을 설치합니다. 자세한 내용은 ThingWorx 설치를 참조하십시오.
ThingWorx에서 확장 가져오기를 활성화하도록 구성합니다. 자세한 내용은 ThingWorx 도움말 센터의 확장 프로그램 가져오기를 참조하십시오.
ThingWorx 서버 표준 시간대가 UTC로 설정되어 있는지 확인합니다. 자세한 정보는 ThingWorx 도움말 센터의 Java, Apache Tomcat 및 ThingWorx 설치를 참조하십시오.
라이선스를 적용합니다. 자세한 내용은 ThingWorx 도움말 센터의 ThingWorx Platform용 라이선스를 참조하십시오.
Solution Central에 대한 액세스 권한을 얻습니다. Solution Central은 빌딩 블록을 배포하는 데 사용될 뿐만 아니라 ThingWorx 환경 간에 배포 및 사용자 정의를 이동하는 데(예: 테스트 환경에서 생산 환경으로) 권장되는 도구입니다. 자세한 내용은 ThingWorx Solution Central Help Center를 참조하십시오.
Linux에 데이터베이스를 설치하는 경우 sqlcmd 도구를 설치합니다.
Microsoft SQL Server Management Studio를 설치합니다. 자세한 내용은 https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15를 참조하십시오.
스크립트 시간 초과 설정 업데이트
스크립트 시간 초과 설정을 업데이트하려면 ThingWorx 관리자는 다음 단계를 완료해야 합니다.
1. ThingWorx 서버에서 ThingWorxPlatform 폴더로 이동합니다.
2. 텍스트 편집기에서 platform-settings.json 파일을 엽니다.
3. ScriptTimeout 설정을 찾아 1200으로 업데이트합니다.
4. platform-settings.json 파일을 저장한 후 닫습니다.
5. ThingWorx 서버를 다시 시작합니다.
* 
스크립트 로그에 다음과 유사한 메시지가 나타나면 위의 단계를 반복하여 ScriptTimeout 설정을 늘립니다.
[message: Execution of Script terminated after : 1200 seconds. Timeout configured for 1200 seconds.]
자세한 내용은 ThingWorx 도움말 센터의 platform-settings.json 구성 세부 정보를 참조하십시오.
세션 제한 시간 설정 업데이트
기본적으로 유휴 사용자 세션은 30분 후에 시간 초과됩니다.
세션 시간 초과 설정을 변경하려면 ThingWorx 관리자는 다음 단계를 완료해야 합니다.
1. ThingWorx에서 시스템 > 하위 시스템으로 이동합니다.
2. 편집 모드에서 UserManagementSubsystem을 엽니다.
3. 구성 아래에서 유휴 세션 제한 시간(분) 설정을 변경합니다.
4. 저장을 클릭합니다.
5. ThingWorx 서버를 다시 시작합니다.
MS SQL JDBC 드라이버 설치
ThingWorx 인스턴스가 PostgreSQL을 지속성 공급자로 하여 구성된 경우, MS SQL JDBC 드라이버를 설치하려면 다음 단계를 완료하십시오. ThingWorx 인스턴스가 MS SQL을 지속성 공급자로 하여 구성된 경우, 다음 섹션으로 건너뛰십시오.
1. https://docs.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-ver15#sql-version-compatibility 링크에서 Microsoft JDBC Driver 7.4.1 for SQL Server의 JRE11 호환 버전을 다운로드합니다.
2. JDBC JAR 파일을 Tomcat 설치의 lib 디렉터리(<TOMCAT_HOME>/lib)에 복사합니다.
3. Tomcat 서버를 다시 시작하여 JDBC 드라이버를 ThingWorx에 사용할 수 있도록 로드합니다.
빌딩 블록 데이터베이스 및 데이터베이스 사용자 생성
다음 단계를 완료하십시오.
1. 마스터 데이터베이스에서 빌딩 블록 데이터베이스 사용자에 대한 로그인 및 암호를 작성합니다. 데이터베이스에 대한 암호 복잡성 권장 사항을 따릅니다.
Windows의 경우, Microsoft SQL Server Management Studio의 쿼리 편집기에서 Transact-SQL 명령 사용:
CREATE LOGIN <bbadmin> WITH PASSWORD = '<password>';
위 명령에서 <bbadmin><password>를 빌딩 블록 데이터베이스 사용자의 로그인 및 암호로 바꿉니다.
Linux의 경우:
1. Linux 클라이언트에서 명령 프롬프트를 엽니다.
2. SQL 서버에 로그인을 생성하려면 다음 명령 사용:
sqlcmd –S <database-server-name> -U <sql-administrator-username> -P <sql-administrator-password> \
-Q "create login <bbadmin> with password = '<bbadmin-password>'" \
GO; \
exit
위 명령에서 <database-server-name>를 데이터베이스 서버 이름으로 바꾸고, <sql-administrator-username><sql-administrator-password>를 SQL 관리자 사용자 이름 및 암호로 바꾸며, <bbadmin><bbadmin-password>를 빌딩 블록 데이터베이스 사용자의 로그인 및 암호로 바꿉니다.
2. 빌딩 블록에서 사용할 MSSQL(Microsoft SQL Server) 데이터베이스를 작성합니다.
Windows의 경우, Microsoft SQL Server Management Studio의 쿼리 편집기에서 Transact-SQL 명령 사용:
CREATE DATABASE <bbdb> COLLATE SQL_Latin1_General_CP1_CI_AS;
ALTER DATABASE <bbdb> SET READ_COMMITTED_SNAPSHOT ON;
ALTER DATABASE <bbdb> SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE <bbdb> SET ARITHABORT ON;
위 명령에서 <bbdb>를 데이터베이스 이름으로 바꿉니다.
Linux의 경우:
1. Linux 클라이언트에서 명령 프롬프트를 엽니다.
2. 다음 명령을 사용하여 SQL Server 데이터베이스를 작성하고 변수를 데이터베이스 서버 이름과 SQL 관리자 사용자 이름 및 암호로 바꿉니다.
sqlcmd –S <database-server-name> \
-U <sql-administrator-username> -P <sql-administrator-password> \
-Q "create database <bbdb> COLLATE SQL_Latin1_General_CP1_CI_AS; ALTER DATABASE <bbdb> SET READ_COMMITTED_SNAPSHOT ON; ALTER DATABASE <bbdb> SET ALLOW_SNAPSHOT_ISOLATION ON;ALTER DATABASE <bbdb> SET ARITHABORT ON"
위 명령에서 <database-server-name>을 데이터베이스 서버 이름으로, <sql-administrator-username><sql-administrator-password>를 SQL 관리자 사용자 이름 및 암호로, <bbdb>를 데이터베이스 이름으로 바꿉니다.
3. 1단계에서 생성한 로그인에 대한 데이터베이스 사용자를 생성합니다. 로그인에 사용한 것과 동일한 이름을 데이터베이스 사용자에 사용합니다.
Windows의 경우, 2단계에서 작성한 데이터베이스에 대해 열린 SQL Server Management Studio의 쿼리 편집기에서 Transact-SQL 명령 사용:
CREATE USER <bbadmin> FOR LOGIN <bbadmin>;
ALTER ROLE [db_owner] ADD MEMBER <bbadmin>;
위 명령에서 <bbadmin>을 1단계에서 생성한 로그인 이름으로 바꿉니다.
Linux의 경우:
1. Linux 클라이언트에서 명령 프롬프트를 엽니다.
2. 다음 명령을 사용하여 빌딩 블록 데이터베이스에 대한 데이터베이스 사용자를 생성하고 변수를 데이터베이스 서버 이름, SQL 관리자 사용자 이름 및 암호로 바꿉니다.
sqlcmd –S <database-server-name> \
-U <sql-administrator-username> -P <sql-administrator-password> \
-Q "use <bbdb>; create user <bbadmin> for login <bbadmin>;ALTER ROLE [db_owner] ADD MEMBER <bbadmin>"
위 명령에서 <database-server-name>을 데이터베이스 서버 이름으로, <sql-administrator-username><sql-administrator-password>를 SQL 관리자 이름 및 암호로, <bbdb>를 데이터베이스 이름으로, <bbadmin>을 1단계에서 생성한 로그인 이름으로 바꿉니다.
Solution Central을 사용하여 빌딩 블록 배포
* 
빌딩 블록을 ThingWorx HA 시스템에 배포하는 경우 클러스터를 단일 인스턴스로 축소하고 확장을 설치한 다음 클러스터를 다시 확장하는 것이 좋습니다. 이렇게 하면 새 확장이 시작될 때 각 서버에서 로드되므로 성능이 향상되고 최종 일관성 문제를 방지할 수 있습니다. 자세한 내용은 ThingWorx 도움말 센터에서 ThingWorx HA에서 ThingWorx Extension 관리를 참조하십시오.
Solution Central을 사용하여 빌딩 블록을 ThingWorx 인스턴스에 배포하려면 ThingWorx 관리자는 다음 단계를 완료해야 합니다.
1. ThingWorx Composer라이선스가 설치되어 있는지 확인합니다. 자세한 내용은 PTC 기술 자료의 기술 지원 문서를 참조하십시오.
2. Solution Central을 설정합니다. 자세한 내용은 Solution Central 도움말 센터의 Getting Started with Using Solution Central을 참조하십시오.
3. Solution Central에 ThingWorx 인스턴스를 등록합니다. 자세한 내용은 Solution Central 도움말 센터의 Register Your ThingWorx Instance를 참조하십시오.
4. ThingWorx Composer에서 관리 > Solution Central > PTC 솔루션으로 이동합니다.
5. 배포하려는 빌딩 블록의 확인란을 선택합니다. 다음과 같은 빌딩 블록 세트를 사용할 수 있습니다.
Manufacturing Building Blocks
6. 원클릭 배포를 클릭합니다. 배포할 모든 확장이 나열된 창이 열립니다.
7. 모두 배포를 클릭합니다.
확장이 다운로드되고 설치됩니다. 이 작업은 몇 분쯤 걸릴 수 있습니다. 프로세스가 완료되면 알림이 수신됩니다.
자세한 내용은 ThingWorx Solution Central Help Center를 참조하십시오.
InitializeSolution 서비스 실행
InitializeSolution 서비스를 실행하여 데이터베이스 사물이 빌딩 블록 데이터베이스에 연결되도록 구성하고 데이터베이스 테이블을 작성하며 빌딩 블록에 대한 관리자 사물을 등록합니다.
서비스를 실행하려면 ThingWorx 관리자는 다음 단계를 완료해야 합니다.
1. ThingWorx Composer에서 PTC.Base.Manager 사물로 이동합니다.
2. 다음 구성 매개 변수를 가져옵니다.
a. 서비스에서 GetSolutionDeploymentConfigurationParameters 서비스를 찾아 실행합니다. 서비스 출력은 존재하는 빌딩 블록 세트에 동적으로 기반하여 InitializeSolution 서비스에 필요한 구성 매개변수를 포함하는 JSON입니다. 서비스 출력 JSON은 다음과 유사합니다.
{
"databaseUser": {
"types": [
"STRING"
],
"description": "Name of the database user used for DPM database Thing",
"optional": false
},
"twxAdminUserName": {
"types": [
"STRING"
],
"description": "Thingworx Admin Username",
"optional": false
},
"overrideComponentDeploymentState": {
"types": [
"BOOLEAN"
],
"description": "If true, the current component deployment state is ignored and the DeployComponent service will be rerun.",
"optional": true
},
"twxAdminPassword": {
"types": [
"STRING"
],
"description": "Thingworx Admin Password",
"optional": false
},
"databasePassword": {
"types": [
"STRING"
],
"description": "Password of the database user used for DPM database Thing",
"optional": false
},
"twxURL": {
"types": [
"STRING"
],
"description": "Thingworx URL",
"optional": false
},
"databaseJDBCString": {
"types": [
"STRING"
],
"description": "JDBC Connection String for the DPM database Thing",
"optional": false
},
"databaseThing": {
"types": [
"STRING"
],
"description": "The default database thing (PTC.DBConnection.MSSQLDatabase)",
"optional": true
}
}
b. 서비스 출력에 반환된 JSON을 복사하고 텍스트 편집기에 붙여넣습니다.
c. JSON을 편집하여 각 구성 매개 변수의 중괄호 사이에 있는 콘텐츠를 사이트에 특정한 값으로 바꿉니다.
databaseUser - 시스템 관리 권한이 있는 데이터베이스 사용자의 로그인 이름입니다.
twxAdminUserName - ThingWorx 관리자 사용자의 이름입니다.
twxAdminPassword - ThingWorx 관리자 사용자의 암호입니다.
databasePassword - 시스템 관리 권한이 있는 데이터베이스 사용자의 로그인 암호입니다.
databaseJDBCString - 빌딩 블록 데이터베이스에 대한 JDBC 연결 문자열입니다.
twxURL - ThingWorx 인스턴스에 대한 URL입니다.
databaseThing - 기본 데이터베이스 사물(PTC.DBConnection.MSSQLDatabase)입니다.
다음은 편집된 JSON의 예입니다.
{
"databaseUser": "<bbadmin>",
"twxAdminUserName": "Administrator",
"twxAdminPassword": "<twxadminpassword>",
"databasePassword": "<password>",
"databaseJDBCString": "jdbc:sqlserver://<databaseHost>:<databasePort>;databaseName=<bbdatabaseName>",
"twxURL": "http://<host>:<port>/Thingworx",
"databaseThing": "PTC.DBConnection.MSSQLDatabase"
}
다음은 실제 값을 사용하여 편집한 JSON의 예입니다.
{
"databaseUser": "BBadmin",
"twxAdminUserName": "Administrator",
"twxAdminPassword": "ThingWorx!BB9876",
"databasePassword": "945DaTaBase!39525",
"databaseJDBCString": "jdbc:sqlserver://localhost:1433;databaseName=dpmdb",
"twxURL": "http://MyCompany.com:8080/Thingworx",
"databaseThing": "PTC.DBConnection.MSSQLDatabase"
}
3. 서비스에서 InitializeSolution 서비스를 찾아 실행합니다. 이때 2.c단계에서 편집한 JSON을 서비스에 대한 deploymentConfig 입력 매개 변수로 사용합니다.
서비스가 완료되면 배포된 빌딩 블록과 해당 구성 상태(Configured, Not Configured 또는 Error)를 나열하는 인포테이블이 출력에 표시됩니다. 빌딩 블록에 Error 또는 Not Configured 상태가 있는 경우 다음 문제 해결 단계를 완료하십시오.
a. InitializeSolution 서비스를 실행하기 전에 JSON에 지정된 데이터베이스 자격 증명이 유효한지 확인합니다.
b. 서비스 출력에 여전히 Error 또는 Not Configured 상태가 있는 빌딩 블록이 있는 경우 ThingWorx 응용 프로그램 및 스크립트 오류 로그를 검토하고 발견된 모든 오류를 처리합니다. 그런 다음 InitializeSolution 서비스를 실행합니다.
c. 서비스 출력에 여전히 Error 또는 Not Configured 상태가 있는 빌딩 블록이 있는 경우
"overrideComponentDeploymentState": true
를 포함하도록 JSON을 업데이트하고 InitializeSolution 서비스를 실행합니다.
UpdateDBSchema 서비스 실행
UpdateDBSchema 서비스를 실행하여 데이터베이스 테이블에 필요한 제약 조건을 적용합니다.
서비스를 실행하려면 ThingWorx 관리자는 다음 단계를 완료해야 합니다.
1. ThingWorx Composer에서 PTC.DBConnection.Manager 사물로 이동합니다.
2. 서비스에서 UpdateDBSchema 서비스를 찾아 실행합니다.
서비스가 완료되면 데이터베이스 업데이트를 보여주는 인포테이블이 서비스 출력 창에 표시됩니다.
도움이 되셨나요?