

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# systemd를 사용하여 Hub SDK 배포
<a name="managedintegrations-sdk-v2-cookbook-deployment-hub-deployment-scripts"></a>

**중요**  
 최신 업데이트는 release.tgz 파일의 `hubSystemdSetup` 디렉터리`readme.md`에 있는를 따르세요.

이 섹션에서는 Linux 기반 허브 디바이스에서 서비스를 배포하고 구성하기 위한 스크립트 및 프로세스에 대해 설명합니다.

## 개요
<a name="managedintegrations-sdk-v2-cookbook-deployment-overview"></a>

배포 프로세스는 두 가지 기본 스크립트로 구성됩니다.
+ `copy_to_hub.sh`: 호스트 시스템에서 실행하여 필요한 파일을 허브에 복사합니다.
+ `setup_hub.sh`: 허브에서 실행하여 환경을 구성하고 서비스를 배포합니다.

또한는 프로세스 부트스트랩 시퀀스 및 프로세스 권한 관리를 `systemd/deploy_iotshd_services_on_hub.sh` 처리하고에 의해 자동으로 트리거됩니다`setup_hub.sh`.

## 사전 조건
<a name="managedintegrations-sdk-v2-cookbook-deployment-prerequisites"></a>

배포에 성공하려면 나열된 사전 요구 사항이 필요합니다.
+ 허브에서 systemd 서비스 사용 가능
+ 허브 디바이스에 대한 SSH 액세스
+ 허브 디바이스에 대한 Sudo 권한
+ `scp` 호스트 시스템에 설치된 유틸리티
+ `sed` 호스트 시스템에 설치된 유틸리티
+ 호스트 시스템에 설치된 유틸리티의 압축을 풉니다.

## 파일 구조
<a name="managedintegrations-sdk-v2-cookbook-deployment-file-structure"></a>

파일 구조는 다양한 구성 요소의 구성 및 관리를 용이하게 하여 콘텐츠에 효율적으로 액세스하고 탐색할 수 있도록 설계되었습니다.

```
hubSystemdSetup/
├── README.md
├── copy_to_hub.sh 
├── setup_hub.sh
├── iotshd_config.json  # Sample configuration file
├── local_certs/  # Directory for DHA certificates
└── systemd/ 
    ├── *.service.template  # Systemd service templates 
    └── deploy_iotshd_services_on_hub.sh
```

SDK 릴리스 tgz 파일에서 전체 파일 구조는 다음과 같습니다.

```
IoT-managed-integrations-Hub-SDK-aarch64-v1.0.0.tgz
├──package/
    ├──greengrass/
        ├──artifacts/
        ├──recipes/
    ├──hubSystemdSetup/
        ├── REAME.md
        ├── copy_to_hub.sh 
        ├── setup_hub.sh
        ├── iotshd_config.json  # Sample configuration file
        ├── local_certs/  # Directory for DHA certificates
        └── systemd/ 
            ├── *.service.template  # Systemd service templates 
            └── deploy_iotshd_services_on_hub.sh
```

## 초기 설정
<a name="managedintegrations-sdk-v2-cookbook-deployment-initial-setup"></a>

### SDK 패키지 추출
<a name="managedintegrations-sdk-v2-cookbook-deployment-extract-sdk"></a>

```
tar -xzf managed-integrations-Hub-SDK-v{{Version}}-linux-aarch64-{{timestamp}}.tgz
```

추출된 디렉터리로 이동하여 패키지를 준비합니다.

```
# Create package.zip containing required artifacts
zip -r package.zip package/greengrass/artifacts
# Move package.zip to the hubSystemdSetup directory
mv package.zip ../hubSystemdSetup/
```

### 디바이스 구성 파일 추가
<a name="managedintegrations-sdk-v2-cookbook-deployment-prepare-certificates"></a>

나열된 두 단계에 따라 디바이스 구성 파일을 생성하고 허브에 복사합니다.

1. [디바이스 구성 파일을 추가하여](managedintegrations-sdk-v2-cookbook-hubsetup.md#managedintegrations-sdk-v2-cookbook-genconfig) 필요한 디바이스 구성 파일을 생성합니다. SDK는이 파일을 함수에 사용합니다.

1. [구성 파일을 복사](managedintegrations-sdk-v2-cookbook-hubsetup.md#managedintegrations-sdk-v2-cookbook-config-contents)하여 생성된 구성 파일을 허브에 복사합니다.

## 허브에 파일 복사
<a name="managedintegrations-sdk-v2-cookbook-deployment-copy-files-to-hub"></a>

호스트 시스템에서 배포 스크립트를 실행합니다.

```
chmod +x copy_to_hub.sh
./copy_to_hub.sh {{hub_ip_address}} {{package_file}}
```

**Example 예제**  

```
./copy_to_hub.sh 192.168.50.223 ~/Downloads/EAR3-package.zip
```

이 복사본은 다음을 복사합니다.
+ 패키지 파일(허브에서 package.zip으로 이름이 변경됨)
+ 구성 파일
+ 인증서
+ 시스템화된 서비스 파일

## 허브 설정
<a name="managedintegrations-sdk-v2-cookbook-deployment-set-up-hub"></a>

파일을 복사한 후 SSH를 허브에 넣고 설정 스크립트를 실행합니다.

```
ssh hub@{{hub_ip}}
chmod +x setup_hub.sh
sudo ./setup_hub.sh
```

### 사용자 및 그룹 구성
<a name="managedintegrations-sdk-v2-cookbook-deployment-user-group-config"></a>

기본적으로 SDK 구성 요소에는 사용자 **허브**와 그룹 **허브**를 사용합니다. 여러 가지 방법으로 구성할 수 있습니다.
+ 사용자 지정 사용자/그룹 사용:

  ```
  sudo ./setup_hub.sh --user={{USERNAME}} --group={{GROUPNAME}}
  ```
+ 설정 스크립트를 실행하기 전에 수동으로 생성합니다.

  ```
  sudo groupadd -f {{GROUPNAME}}
  sudo useradd -r -g {{GROUPNAME}} {{USERNAME}}
  ```
+ 에서 명령을 추가합니다`setup_hub.sh`.

## 서비스 관리
<a name="managedintegrations-sdk-v2-cookbook-deployment-manage-services"></a>

모든 서비스를 다시 시작하려면 허브에서 다음 스크립트를 실행합니다.

```
sudo /usr/local/bin/deploy_iotshd_services_on_hub.sh
```

설정 스크립트는 필요한 디렉터리를 생성하고, 적절한 권한을 설정하고, 서비스를 자동으로 배포합니다. SSH/SCP를 사용하지 않는 경우 특정 배포 방법에 `copy_to_hub.sh` 맞게를 수정해야 합니다. 배포하기 전에 모든 인증서 파일 및 구성이 올바르게 설정되었는지 확인합니다.