Crontab 설정 방법
개요 #
사이트를 운영하다 보면 탈퇴한 회원의 정보나 삭제된 사진의 섬네일, 확인하지 않은 알림 등 불필요한 데이터가 쌓이게 됩니다. 이런 데이터를 정기적으로 삭제해 주면 디스크 공간을 절약하고 쾌적한 서버 환경을 유지할 수 있습니다.
라이믹스는 불필요한 데이터를 삭제하기 위한 몇 개의 쉘(PHP-CLI) 스크립트를 제공합니다. cron을 사용할 수 있는 리눅스 서버 환경이라면 정기적으로 이 스크립트들을 실행할 수 있습니다. 다량의 데이터를 삭제하는 작업에는 상당히 긴 시간이 걸릴 수도 있기 때문에 웹에서는 실행할 수 없습니다.
쉘 스크립트 목록 #
터미널이나 cron에서 실행할 수 있는 쉘 스크립트들은 각 모듈의 scripts
폴더에 있으며,
라이믹스 설치 경로에서 php index.php 모듈명.스크립트명 [변수]
명령으로 실행합니다.
아래의 설명에서는 모듈명.스크립트명
을 이름으로 사용합니다.
file.cleanEmptyDirs
: 첨부파일, 회원정보, 섬네일 폴더 내에 남아 있는 빈 폴더들을 제거합니다.file.cleanGarbageFiles
: 파일만 업로드하고 글 작성을 취소하여 남은 파일, 대용량 업로드가 중단되어 남은 파일 등을 제거합니다. 문서나 댓글 등에 연결되지 않고 10일 이상 지난 파일을 삭제하는 것이 기본값이지만, 변수를 전달하여 변경할 수 있습니다. (일부 서드파티 자료가 파일 업로드 후 정상적으로 연결하지 않고isvalid=N
상태로 파일을 방치하는 경우가 있으니 주의하십시오.)file.cleanThumbnails
: 오래된 섬네일 이미지를 삭제합니다. 기본값은 90일입니다. 오래된 글의 섬네일도 표시할 필요가 있는 웹진형 게시판을 운영하는 경우에는 사용하지 마시기 바랍니다. 삭제한 섬네일을 다시 생성하려면 더 많은 서버 자원이 소요됩니다.module.cleanMiscLogs
: 메일 및 SMS 발송 로그, 푸시 발송 로그, 스팸필터 로그 등 여러 모듈에서 생성하는 잡다한 로그를 일괄 삭제합니다. 기본값은 30일입니다.ncenterlite.cleanNotifications
: 오래된 알림을 삭제합니다.
수동 실행 예제 #
예를 들어 60일 이상 지난 알림을 삭제하는 명령은 아래와 같습니다.
php index.php ncenterlite.cleanNotifications 60
crontab 설정 예제 #
동시에 여러 스크립트를 실행하면 과부하가 걸릴 수 있으므로, 방문자가 적은 시간대에 약간씩 시간차를 두고 실행하시기 바랍니다. 매일 일정한 시각에 백업을 수행하신다면 백업 전에 정리하는 것이 편리합니다.
아래의 예제는 매일 새벽 5시 5~20분 사이에 4개의 스크립트를 모두 실행합니다. 빈 폴더를 제거하는 스크립트를 맨 마지막에 실행하면 효과적입니다.
05 05 * * * php /라이믹스/설치경로/index.php file.cleanGarbageFiles >> /라이믹스/설치경로/files/cron.log 2>&1
10 05 * * * php /라이믹스/설치경로/index.php file.cleanThumbnails >> /라이믹스/설치경로/files/cron.log 2>&1
15 05 * * * php /라이믹스/설치경로/index.php module.cleanMiscLogs >> /라이믹스/설치경로/files/cron.log 2>&1
15 05 * * * php /라이믹스/설치경로/index.php ncenterlite.cleanNotifications >> /라이믹스/설치경로/files/cron.log 2>&1
20 05 * * * php /라이믹스/설치경로/index.php file.cleanEmptyDirs >> /라이믹스/설치경로/files/cron.log 2>&1
주의사항 #
- 라이믹스에 포함된 쉘 스크립트들은 웹에서 실행할 수 없으며, 웹크론 서비스 등으로 호출할 경우 오류를 표시하고 종료됩니다.
- 평소 웹서버를 실행하는 계정(예:
apache
,nginx
,www-data
등)에서 crontab을 사용하여야 합니다. 다른 계정을 사용하거나 서버 관리자(root
) 계정으로 실행을 시도할 경우 나중에 사이트에서 퍼미션 문제가 발생하거나 캐시파일이 꼬일 위험이 있습니다. 어느 계정을 사용해야 할지 모르시겠다면files/config/config.php
파일 또는files/cache
폴더의 소유자를 확인하십시오. - 오래된 섬네일을 보존할 필요가 있는 사이트에서는
clean_old_thumbnails.php
를 실행하지 마십시오. - 위의 예제를 따라하면 쉘 스크립트의 실행 결과가
files/cron.log
파일에 기록됩니다. crontab 설정 후에는 며칠간 이 파일을 모니터링하며 정상 작동 여부를 확인하시기 바랍니다. - 윈도우 서버는 지원하지 않습니다.