Crontab 설정 방법

개요

사이트를 운영하다 보면 탈퇴한 회원의 정보나 삭제된 사진의 섬네일, 확인하지 않은 알림 등 불필요한 데이터가 쌓이게 됩니다. 이런 데이터를 정기적으로 삭제해 주면 디스크 공간을 절약하고 쾌적한 서버 환경을 유지할 수 있습니다.

라이믹스는 불필요한 데이터를 삭제하기 위한 몇 개의 쉘(PHP-CLI) 스크립트를 제공합니다. cron을 사용할 수 있는 리눅스 서버 환경이라면 정기적으로 이 스크립트들을 실행할 수 있습니다. 다량의 데이터를 삭제하는 작업에는 상당히 긴 시간이 걸릴 수도 있기 때문에 웹에서는 실행할 수 없습니다.

쉘 스크립트 목록

cron으로 실행할 수 있는 쉘 스크립트들은 common/scripts폴더에 자리잡고 있습니다.

clean_empty_dirs.php: 첨부파일, 회원정보, 섬네일 폴더 내에 남아 있는 빈 폴더들을 제거합니다.

clean_garbage_files.php: 파일만 업로드하고 글 작성을 취소하여 남은 파일, 대용량 업로드가 중단되어 남은 파일 등을 제거합니다. 문서나 댓글 등에 종속되지 않고 10일 이상 지난 파일을 제거 대상으로 봅니다.

clean_old_logs.php: 30일 이상 지난 메일 및 SMS 발송 로그, 스팸필터 로그 등을 삭제합니다.

clean_old_notifications.php: 30일 이상 지난 알림을 삭제합니다.

clean_old_thumbnails.php: 90일 이상 지난 섬네일을 삭제합니다. 오래된 글의 섬네일도 표시할 필요가 있는 웹진형 게시판을 운영하는 경우에는 사용하지 마시기 바랍니다. 삭제한 섬네일을 다시 생성하려면 더 많은 서버 자원이 소요됩니다.

crontab 설정 예제

동시에 여러 스크립트를 실행하면 과부하가 걸릴 수 있으므로, 방문자가 적은 시간대에 약간씩 시간차를 두고 실행하시기 바랍니다. 매일 일정한 시각에 백업을 수행하신다면 백업 전에 정리하는 것이 편리합니다.

아래의 예제는 매일 새벽 5시 5~20분 사이에 4개의 스크립트를 모두 실행합니다. 빈 폴더를 제거하는 스크립트를 맨 마지막에 실행하면 효과적입니다.

05 05 * * * php /라이믹스/설치경로/common/scripts/clean_garbage_files.php >> /라이믹스/설치경로/files/cron.log 2>&1

10 05 * * * php /라이믹스/설치경로/common/scripts/clean_old_notifications.php >> /라이믹스/설치경로/files/cron.log 2>&1

15 05 * * * php /라이믹스/설치경로/common/scripts/clean_old_thumbnails.php >> /라이믹스/설치경로/files/cron.log 2>&1

20 05 * * * php /라이믹스/설치경로/common/scripts/clean_empty_dirs.php >> /라이믹스/설치경로/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 설정 후에는 며칠간 이 파일을 모니터링하며 정상 작동 여부를 확인하시기 바랍니다.

윈도우 서버는 지원하지 않습니다.