# Cron 설정하기 - Synology NAS

> **시놀로지 NAS는 Hotopay를 실행하기에 적합한 환경이 아닙니다.**

> Synology 환경에서 발생하는 모든 버그는 Hotopay의 지원 대상이 아니며, 버그들을 직접 찾고 수정하실 수 있을 경우에만 사용하는 것을 권장드립니다.

## 사전 준비 <a href="#preparations" id="preparations"></a>

1. Synology File Station 에서 Rhymix 설치 위치를 확인합니다.
   1. Rhymix가 설치된 위치로 이동 후 \[마우스 우클릭 > 속성]에 들어가면 \[위치] 속성에 `/volume` 으로 시작하는 절대 디렉토리가 나옵니다.
   2. ex) `/volume2/Data/rhymix/modules/hotopay`
2. 로그를 저장할 위치를 동일한 방법으로 확인합니다.
   1. ex) `/volume2/Data/hotopay_logs`&#x20;
3. Synology Web Station에서 \[스크립트 언어 설정 > 사용자 지정된 프로파일] 항목을 참고하여 라이믹스를 돌리고 있는 PHP 프로파일 이름을 확인합니다.
4. SSH에 접속하여 `/usr/syno/etc/packages/WebStation/php_profile` 디렉토리 하단의 올바른 라이믹스 PHP 프로파일을 찾아줍니다.
   1. `/usr/syno/etc/packages/WebStation/PHPSettings.json`  파일을 참고하면 PHP 프로파일을 쉽게 찾을 수 있습니다.
   2. 만약 프로파일이 `00000000-0000-0000-0000000000000000` 이라면, `/usr/syno/etc/packages/WebStation/php_profile/00000000-0000-0000-0000000000000000/conf.d/user_settings.ini` 파일이 존재해야합니다.
5. **아래 스크립트를 참고하여 명기된 변수를 알맞은 값으로 변경해주세요.**

### Synology NAS의 Cron 실행 스크립트 <a href="#synology-cron-script" id="synology-cron-script"></a>

* `HOTOPAY_DIR` : Hotopay가 설치된 디렉토리 (hotopay.cron.php 파일이 존재하는 절대 위치)
* `HOTOPAY_LOG_DIR` : Hotopay cron 실행 결과가 저장될 위치
* `SYNOLOGY_PHP_INI_DIR` :  시놀로지 웹스테이션의 PHP 스크립트 (`user_settings.ini`)가 저장된 위치

<pre class="language-sh"><code class="lang-sh">#!/bin/bash
# *** Hotopay Cron for Synology NAS ***

HOTOPAY_DIR="/volume1/<a data-footnote-ref href="#user-content-fn-1">path/to</a>/modules/hotopay"
HOTOPAY_LOG_DIR="/volume1/<a data-footnote-ref href="#user-content-fn-2">path/to</a>/hotopay_logs"
SYNOLOGY_PHP_INI_DIR="/usr/syno/etc/packages/WebStation/php_profile/<a data-footnote-ref href="#user-content-fn-3">00000000-0000-0000-0000000000000000</a>/conf.d"
LOG_DURATIONS=14 # days

HOTOPAY_LOG_FILE_NAME="hotopay_cron_$(date +\%Y\%m\%d_\%H\%M\%S).log"

# Check if the log directory exists, if not create it
if [ ! -d "$HOTOPAY_LOG_DIR" ]; then
    mkdir -p "$HOTOPAY_LOG_DIR"
fi

# Check if the hotopay.cron.php file exists
if [ ! -f "$HOTOPAY_DIR/hotopay.cron.php" ]; then
    echo "Error: hotopay.cron.php not found in $HOTOPAY_DIR"
    exit 1
fi

# Logrotate
find "$HOTOPAY_LOG_DIR" -type f -name "*.log" -mtime +"$LOG_DURATIONS" -exec rm {} \;

cd "$HOTOPAY_DIR"
sudo -u http php80 -c "$SYNOLOGY_PHP_INI_DIR" hotopay.cron.php > "$HOTOPAY_LOG_DIR/$HOTOPAY_LOG_FILE_NAME" 2>&#x26;1
if [ $? -ne 0 ]; then
    echo "Error: hotopay.cron.php execution failed"
    exit 1
fi
</code></pre>

## 스크립트 Cron 적용 <a href="#apply-job-scheduler" id="apply-job-scheduler"></a>

1. 작성한 스크립트를 \[제어판 > 작업 스케쥴러]에 등록해주세요.
   1. **사용자: root** (필수)
      1. 관리자로 실행해야 스크립트에서 http 권한으로 PHP를 실행할 수 있습니다.
   2. 날짜 : 매일
   3. 시간
      1. 시작시간 : 00:00 (혹은 원하는 시간)
      2. 같은 날에 계속 실행 체크 (하루에 한번만 실행하고 싶다면 패스)
      3. 반복 : 원하는 반복 주기 설정
   4. 작업설정 > 실행명령 : 아래 스크립트 복사 & 붙여넣기
2. 저장 후 실행해보고 log 파일이 정상 생성되는지 확인해주세요.

내용이 복잡하기에 차근차근 진행해보시는 것을 권장드립니다.

[^1]: Rhymix가 설치된 절대 위치

[^2]: Rhymix가 설치된 절대 위치 혹은 로그를 저장할 위치

[^3]: Synology PHP profile명


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hotopaydocs.potatosoft.kr/cron-synology-nas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
