Fix: Fix Readme file.
This commit is contained in:
parent
20b7f9416d
commit
b852d8963d
78
README.md
78
README.md
|
@ -1,51 +1,75 @@
|
||||||
# SDTcloud App Format
|
# SDTcloud App Format
|
||||||
|
|
||||||
### SDTcloud 앱을 만들기 위한 앱 포맷입니다.
|
## SDTcloud 앱을 만들기 위한 앱 포맷입니다.
|
||||||
|
### 코드 구성
|
||||||
```bash
|
```bash
|
||||||
|
sdtcloud-app-format
|
||||||
|
├── app-setting.sh
|
||||||
|
├── config1.json
|
||||||
|
├── config2.json
|
||||||
|
├── install.sh
|
||||||
|
├── main.py
|
||||||
|
├── README.md
|
||||||
|
└── sdt-cloud-app.service
|
||||||
```
|
```
|
||||||
|
- 배포될 앱은 실행 파일, Config 파일, 앱 설치 shell script와 같이 필수 파일 있어야 합니다.
|
||||||
|
- app-setting.sh 파일은 앱 생성 기본 양식을 저장하고자 하는 이름의 앱으로 변경 시켜주는 스크립트 입니다.
|
||||||
|
- SDT cloud에서 배포 되는 앱은 리눅스의 Systemd에 의해서 관리됩니다.
|
||||||
|
- 앱을 배포하기 위해서는 실행 파일 이외에 .service 파일이 반드시 필요합니다.
|
||||||
|
|
||||||
### 코드 내용
|
### 살행 코드 내용
|
||||||
- SDTcloud에 앱을 동작시키기 위해서는 앱을 실행하는 코드에 다음 내용이 포함되어 있어야 합니다.
|
- SDT Cloud는 현재 Python과 Java 언어에 대해서 앱 배포가 가능합니다.
|
||||||
- Config 파일 Load path를 고정된 위치에서 가져오도록 코드를 작성해야 합니다.
|
- 두 언어를 작성할 때, Config 파일을 읽을 위치를 코드 내에서 지정해야 합니다.
|
||||||
|
- SDT Cloud는 device에 아래 위치에 앱을 설치하고 관리합니다.
|
||||||
|
```bash
|
||||||
|
/usr/local/sdt/app
|
||||||
|
```
|
||||||
- 즉, SDTcloud의 앱은 "/usr/local/sdt/app" 디렉토리에 보관되고 관리 되므로, "/usr/local/sdt/app/앱이름/config.json" 경로와 같이 config 파일을 읽도록 코드를 작성해야 합니다.
|
- 즉, SDTcloud의 앱은 "/usr/local/sdt/app" 디렉토리에 보관되고 관리 되므로, "/usr/local/sdt/app/앱이름/config.json" 경로와 같이 config 파일을 읽도록 코드를 작성해야 합니다.
|
||||||
- 또한, 앱이름은 사용자가 배포할 때마다 앱의 이름이 변경될 수 있으므로 프로세스가 매개변수를 입력받아 동적으로 변경가능하도록 설계 해야 합니다.
|
- 또한, 앱이름은 사용자가 배포할 때마다 앱의 이름이 변경될 수 있으므로 프로세스가 매개변수를 입력받아 동적으로 변경가능하도록 설계 해야 합니다.
|
||||||
- 예를 들어 python의 경우 앱을 실행할 때, 앱이름을 매개 변수로 입력 받아서 실행하도록 설계 되어야 합니다.
|
|
||||||
```bash
|
```bash
|
||||||
python3 main.py -config example-app
|
## Python의 경우
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('-app',help='')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
with open(f'/usr/local/sdt/app/{args.app}/config.json', encoding='UTF-8') as f:
|
||||||
|
jsonData = json.load(f)
|
||||||
|
```
|
||||||
|
- 따라서 python의 경우 앱을 실행할 때, 앱이름을 매개 변수로 입력 받아서 실행하도록 설계 되어야 합니다.
|
||||||
|
```bash
|
||||||
|
python3 main.py -app example-app
|
||||||
```
|
```
|
||||||
|
|
||||||
### 파일 구성
|
### 앱 생성
|
||||||
- 앱을 만들기 위해 SDT Cloud는 Linux 시스템의 Systemd를 사용합니다. 따라서, 앱은 Systemd를 통해서 실행되어야 하므로 실행 파일은 다음 구성으로 준비되어야 합니다.
|
- 배포하고자 하는 앱이 Python이며, 실행 파일은 main.py이고 config 파일이 config.json 이며, 이 앱의 이름을 example-app으로 앱을 저장할 것이라면,
|
||||||
- 앱 실행 파일: main.py (실행하고자 하는 앱의 코드 종류에 맞게 실행 파일이 있어야 함)
|
|
||||||
- 앱을 실행하기 위한 Systemd 파일: app.service
|
|
||||||
|
|
||||||
|
|
||||||
### Setting
|
|
||||||
- 배포하고자 하는 앱이 Python이며, 실행 파일은 main.py이고 config 파일이 pyConfig.json 이며, 이 앱의 이름을 example-app으로 앱을 저장할 것이라면,
|
|
||||||
- 앱을 저장하기 위해 다음 명령어로 셋팅해야 합니다.
|
- 앱을 저장하기 위해 다음 명령어로 셋팅해야 합니다.
|
||||||
```bash
|
```bash
|
||||||
$ mv config1.json pyConfig.json
|
$ mv config1.json config.json
|
||||||
$ vi pyConfig.json -> config 값 수정
|
$ vi config.json -> config 값 수정
|
||||||
$ ./app-setting.sh example-app
|
$ ./app-setting.sh example-app /usr/bin/python3 main.py
|
||||||
```
|
```
|
||||||
- 위 작업이 완료되면 앱이 SDT cloud에 배포하기 위한 기본적인 앱 파일 구조가 생성된 것 입니다.
|
- 3번 코드 라인 설명은 다음과 같습니다.
|
||||||
- 이후, 본인이 만들고자 하는 앱을 Systemd에 정상적으로 동작시키기 위해 service 파일을 수정합니다.
|
- example-app: 앱 이름
|
||||||
- 앱 이름을 example-app으로 했으므로...
|
- /usr/bin/python3: python3 bin 파일 위치 → 이 같은 경우는 정확한 bin 파일 경로로 작성해야 합니다.
|
||||||
|
- main.py: python3 실행 파일
|
||||||
|
- 위 작업을 완료하면 앱이 SDT cloud를 통해 배포하기 위한 기본적인 앱 파일 구조가 완성됩니다.
|
||||||
|
- service 파일을 확인 하면 다음과 같습니다.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ vi example-app.service
|
$ vi example-app.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=sdt-cloud-app
|
Description=example-app
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/python3 /usr/local/sdt/app/appName/main.py -config appName -> 내용 수정!!
|
ExecStart=/usr/bin/python3 /usr/local/sdt/app/appName/main.py -app appName
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
- service 파일에서 'ExecStart' 옵션을 본인이 배포하는 앱의 코드 언어에 맞게 수정합니다.
|
- 이후, StackBase(gitea)에 앱을 업로드 합니다.
|
||||||
- 여기서 주의 해야할 점은 '/usr/local/sdt/app/appName/', '-config appName' 값은 수정해서는 안됩니다.
|
- 업로드 하기전 아래 작업을 수행 후, gitea에 새 저장소로 추가합니다.
|
||||||
- 수정 완료 후, 생성한 앱을 SDT cloud의 gitea에 저장합니다.
|
```bash
|
||||||
|
$ rm -rf .git
|
||||||
|
```
|
Loading…
Reference in New Issue