Cron 설정하기 - Synology NAS

시놀로지 NAS를 위한 Cron 추가 설정

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

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

사전 준비

  1. Synology File Station 에서 Rhymix 설치 위치를 확인합니다.

    1. Rhymix가 설치된 위치로 이동 후 [마우스 우클릭 > 속성]에 들어가면 [위치] 속성에 /volume 으로 시작하는 절대 디렉토리가 나옵니다.

    2. ex) /volume2/Data/rhymix/modules/hotopay

  2. 로그를 저장할 위치를 동일한 방법으로 확인합니다.

    1. ex) /volume2/Data/hotopay_logs

  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 실행 스크립트

  • HOTOPAY_DIR : Hotopay가 설치된 디렉토리 (hotopay.cron.php 파일이 존재하는 절대 위치)

  • HOTOPAY_LOG_DIR : Hotopay cron 실행 결과가 저장될 위치

  • SYNOLOGY_PHP_INI_DIR : 시놀로지 웹스테이션의 PHP 스크립트 (user_settings.ini)가 저장된 위치

#!/bin/bash
# *** Hotopay Cron for Synology NAS ***

HOTOPAY_DIR="/volume1//modules/hotopay"
HOTOPAY_LOG_DIR="/volume1//hotopay_logs"
SYNOLOGY_PHP_INI_DIR="/usr/syno/etc/packages/WebStation/php_profile//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>&1
if [ $? -ne 0 ]; then
    echo "Error: hotopay.cron.php execution failed"
    exit 1
fi

스크립트 Cron 적용

  1. 작성한 스크립트를 [제어판 > 작업 스케쥴러]에 등록해주세요.

    1. 사용자: root (필수)

      1. 관리자로 실행해야 스크립트에서 http 권한으로 PHP를 실행할 수 있습니다.

    2. 날짜 : 매일

    3. 시간

      1. 시작시간 : 00:00 (혹은 원하는 시간)

      2. 같은 날에 계속 실행 체크 (하루에 한번만 실행하고 싶다면 패스)

      3. 반복 : 원하는 반복 주기 설정

    4. 작업설정 > 실행명령 : 아래 스크립트 복사 & 붙여넣기

  2. 저장 후 실행해보고 log 파일이 정상 생성되는지 확인해주세요.

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

Last updated