> For the complete documentation index, see [llms.txt](https://kopens.gitbook.io/plantpulse-platform/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kopens.gitbook.io/plantpulse-platform/admin/modules/startup.md).

# startup (운영 스크립트)

## 역할

플랫폼 전체의 시작 / 정지 / 재시작 / 노드 관리 스크립트를 모은 **운영의 단일 진입점**. `env.sh` 한 파일로 전체 모듈의 설정을 일괄 관리합니다.

| 항목    | 값                                                     |
| ----- | ----------------------------------------------------- |
| 모듈명   | `plantpulse-startup`                                  |
| 설치 경로 | `/opt/kopens/plantpulse-platform/plantpulse-startup/` |
| 핵심 자산 | `env.sh`, `startup.jar`, 운영 스크립트 50+                  |

## 핵심 파일

| 파일                | 역할                                   |
| ----------------- | ------------------------------------ |
| `env.sh`          | 전역 환경 변수 (모든 모듈이 참조)                 |
| `env-reset.sh`    | env.sh 변경 후 템플릿 재생성                  |
| `env-validate.sh` | env.sh 정합성 검증                        |
| `startup.jar`     | 통합 부트스트래퍼 (START / STOP / CONFIGURE) |
| `configure.sh`    | 템플릿 → 실제 설정 파일 생성                    |
| `prepare-ssl.sh`  | TLS 인증서 자동 생성                        |
| `prepared.sh`     | 시작 전 환경 검증                           |

## 스크립트 카테고리

### 전체 라이프사이클

```bash
cd /opt/kopens/plantpulse-platform/plantpulse-startup

./start.sh                # 포그라운드 (검증용)
./start-daemon.sh         # 백그라운드 (운영)
./stop.sh                 # 안전 종료
./restart.sh              # stop → clean → start-daemon
./status.sh               # 포트 기반 모듈 상태
./kill.sh                 # 강제 종료 (응답 없을 때 — 데이터 손상 위험)
./clean.sh                # 임시 파일 / PID 정리 (정지 후)
```

### 환경 / 설정

```bash
./env.sh                  # source 만 (변수 export)
./env-validate.sh         # 변수 정합성
./env-reset.sh            # env.sh 변경 반영
./configure.sh            # 템플릿 적용
./prepare-ssl.sh          # TLS 인증서 생성
```

### 모듈별 재시작

```bash
./restart-server.sh           # 웹 서버
./restart-batch.sh            # 배치
./restart-cep.sh              # CEP
./restart-data-gateway.sh     # 데이터 게이트웨이
./restart-sql.sh              # SQL 서비스
./restart-monitor.sh          # 모니터
./restart-warehouse.sh        # 웨어하우스
./restart-plugin.sh           # 플러그인 (OPC-UA + AAS)
./restart-opcua-server.sh     # OPC-UA 만
./restart-aasx-server.sh      # AAS 만
./restart-messaging.sh        # Kafka + MQTT + STOMP
./restart-storage.sh          # Cassandra + PostgreSQL + Valkey + MinIO
./restart-analytics.sh        # Spark + Hive + Kyuubi + Gravitino
./restart-timeseries.sh       # 시계열 엔진 + UI
./restart-workflow.sh         # Temporal + Kestra
```

### Cassandra 노드 운영

```bash
./node-status.sh              # 클러스터 상태 (nodetool status)
./node-info.sh                # 노드 상세 정보
./node-cql.sh                 # CQL 셸 (cqlsh)
./node-psql.sh                # PostgreSQL 셸 (psql)
./node-compact.sh             # 수동 컴팩션
./node-compactionstats.sh     # 컴팩션 진행
./node-cleanup.sh             # 노드 정리
./node-flush.sh               # Memtable 플러시
./node-drain.sh               # 노드 Drain
./node-repair.sh              # 노드 복구
./node-repair-table.sh        # 테이블 단위 복구
./node-tpstats.sh             # 스레드풀 통계
./node-table-stats.sh         # 테이블 통계
./node-table-histograms.sh    # 테이블 히스토그램
./node-sstable-size.sh        # SSTable 크기
./node-disk.sh                # 디스크 사용량
./node-error.sh               # 에러 로그
./node-cache-clear.sh         # 캐시 초기화
./node-topic.sh               # Kafka 토픽 관리
./node-added.sh               # 노드 추가
./node-remove.sh              # 노드 제거
./node-upgrade.sh             # 노드 업그레이드
./node-init-cms.sh            # CMS 초기화
./node-train-zstd.sh          # ZStandard 압축 학습
```

### 로그 / 메모리

```bash
./log-viewer.sh               # 통합 로그 뷰어 (multitail)
./log-delete.sh               # 오래된 로그 정리
./memory-check.sh             # 모듈별 메모리 사용량
./memory-rank.sh              # 메모리 사용 순위
./ps.sh                       # 모듈별 프로세스
```

## env.sh 핵심 카테고리

| 카테고리      | 변수                                                                                   |
| --------- | ------------------------------------------------------------------------------------ |
| Platform  | `PP_HOME`, `PP_MODE`, `PP_SCHEME`, `PP_OPTIONS`                                      |
| Network   | `PP_HOST_IP`, `PP_SERVICE_IP`, `PP_MASTER_IP`, `PP_PUBLIC_IP`                        |
| Data      | `PP_DATA_DIR`, `PP_TEMP_DIR`, `PP_BACKUP_DIR`, `PP_DATA_DISK_NAME`                   |
| Resources | `PP_CLUSTER_CORES`, `PP_CLUSTER_MEMORY_BY_CORE`                                      |
| Locale    | `PP_LANG`, `PP_TZ`, `JAVA_TOOL_OPTIONS`                                              |
| Storage   | `PP_REDIS_*`, `PP_POSTGRES_*`, `PP_CASSANDRA_*`, `PP_MINIO_*`                        |
| Messaging | `PP_KAFKA_*`, `PP_MQTT_*`, `PP_STOMP_*`, `PP_MQ_*`, `PP_TOPIC_PREFIX`                |
| Analytics | `PP_HIVE_*`, `PP_SPARK_*`, `PP_KYUUBI_*`, `PP_GRAVITINO_*`                           |
| Workflow  | `PP_TEMPORAL_*`, `PP_KESTRA_*`                                                       |
| TLS       | `PP_TLS_ENABLED`, `PP_TLS_DOMAIN`, `PP_TLS_SAN_*`, `PP_TLS_KEYSTORE_PASSWORD`        |
| API Keys  | `PP_API_KEY`, `PP_CEP_API_KEY`, `PP_DATA_GATEWAY_API_KEY`, `PP_FLOW_WEBHOOK_API_KEY` |
| AI        | `PP_AI_OPENAI_*` (OpenAI 호환 LLM 프록시)                                                 |

## 설정 변경 표준 흐름

```mermaid
flowchart LR
  A[1. env.sh 편집] --> B[2. env-validate.sh]
  B --> C[3. configure.sh<br/>템플릿 적용]
  C --> D[4. restart.sh<br/>전체 재시작]
  D --> E[5. status.sh<br/>검증]
```

> **부팅 시점 반영**: env.sh 변경 사항은 컨테이너 / 프로세스 재시작 시점에만 반영됩니다. `./restart.sh` 없이 적용되지 않습니다.

## 관련 문서

* [모듈 인덱스](/plantpulse-platform/admin/modules.md)
* [시작 가이드](/plantpulse-platform/installation/startup-guide.md)
* [운영 관리](/plantpulse-platform/installation/database.md)
* [프로퍼티 레퍼런스](/plantpulse-platform/admin/properties-reference.md)
