Systemd 타이머를 사용하여 Nextcloud Cron을 자동으로 실행하세요

Nextcloud 관리자 페이지에 백그라운드 작업이 최근에 실행되지 않았다는 메시지가 표시되면 정리, 알림 및 기타 예약된 작업이 지연될 수 있습니다. systemd 서버에서는 일반적으로 Nextcloud를 cron.php웹 서버 계정으로 systemd 서비스에서 실행한 다음 타이머를 활성화하여 해당 서비스를 예약 실행하면 문제를 해결할 수 있습니다. Nextcloud의 최신 관리 설명서에는 두 개의 유닛으로 구성된 예제가 나와 있습니다. 경로와 서비스 계정은 사용자의 설치 환경에 맞게 설정해야 합니다.

먼저 무엇이 문제인지 확인하세요

Nextcloud 백그라운드 작업은 실행 명령이 cron.php호출될 때 실행됩니다. systemd 서비스 는 실행할 명령을 정의하고, 타이머는 예약된 시간에 해당 서비스를 시작합니다. 서비스가 수동으로 실행되지만 타이머가 작동하지 않는 경우, 타이머 활성화에 집중하십시오. 타이머는 작동하지만 서비스 실행에 실패하는 경우, 명령, PHP 환경 변수 및 권한을 확인하십시오.

편집하기 전에 실제 Nextcloud 디렉터리와 HTTP 사용자를 확인하십시오. 이 예제에서는 Debian 및 Ubuntu에서 흔히 사용되는 /var/www/nextcloud`cd`와 `cd`를 가정합니다. 다른 시스템에서는 `cd` , `cd` 또는 다른 사용자일 수 있습니다. Nextcloud는 파일 소유권의 일관성을 유지하기 위해 HTTP 사용자로 명령줄 작업을 실행해야 합니다. Nextcloud occ 문서를 참조하십시오 .www-datawwwrunapache

systemd에서 사용할 PHP 실행 파일과 cron 스크립트를 테스트하십시오.

sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php

호스트의 계정, PHP 경로 및 Nextcloud 경로를 해당 호스트에 맞게 변경하십시오. 명령 실행 시 PHP 오류, 확장 프로그램 누락, 권한 문제, 유지 관리 모드 또는 데이터베이스 연결 실패 등의 오류가 발생하면 먼저 해당 문제를 해결하십시오. 타이머는 실패한 명령을 자동으로 수정할 수 없습니다.

Nextcloud가 시스템 cron을 사용하는지 확인하십시오.

관리자 설정 → 기본 설정 → 백그라운드 작업 으로 이동하여 Cron이 선택되어 있지 않으면 선택하십시오 . Nextcloud 디렉터리에서 다음 명령을 실행할 수도 있습니다.

cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron

Nextcloud는 관리자 설정에서 Cron을 선택하는 것이 명령줄에서 실행할 경우 필수 사항은 아니라고 명시합니다 cron.php. 스크립트가 자동으로 모드를 설정하기 때문입니다. 하지만 명시적으로 설정하면 프로덕션 모드를 명확히 지정할 수 있습니다. Nextcloud는 프로덕션 환경에서 시스템 cron 사용을 권장하며, 백그라운드 작업 관련 문서에서는 systemd 타이머를 대안 스케줄러로 소개하고 있습니다.

systemd 서비스를 복구하세요

/etc/systemd/system/nextcloudcron.service다음 내용으로 생성하거나 업데이트하십시오 . systemd가 대화형 셸의 .php 파일에 의존하지 않도록 PHP의 전체 경로를 사용하십시오 PATH.

[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

User웹 서버 계정과 PHP 및 Nextcloud 위치에 맞는 경로를 모두 변경하십시오 . 조건은 작업을 실행하기 전에 인스턴스가 정상적으로 작동하는지 확인합니다. 조건이 충족되지 않으면 systemd는 서비스를 건너뛸 수 있습니다. 조건을 제거하거나 변경하기 전에 Nextcloud가 유지 관리 모드인지 확인하고 저널을 검사하십시오. KillMode=processNextcloud 예제에서 사용하는 것처럼 cron 프로세스가 종료된 후에도 cron에 의해 시작된 외부 프로그램이 계속 실행될 수 있도록 를 유지하십시오. 서비스 단위에는 [Install]섹션이 필요하지 않습니다.

타이머를 복구하고 활성화하세요

생성하세요 /etc/systemd/system/nextcloudcron.timer. 이 일정은 부팅 후 5분 뒤에 시작되며, 각 서비스 활성화 후 5분씩 기다립니다.

[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

systemd를 다시 로드하여 유닛 파일을 읽도록 한 다음, 한 번의 명령으로 타이머를 활성화하고 시작하십시오.

sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer

활성화하면 다음 부팅 시 타이머가 시작되지만, --now활성화하지 않으면 즉시 시작됩니다. 반복 타이머처럼 서비스 자체를 활성화하지 마십시오. 타이머는 `<time>` 아래에 있는 단위입니다 timers.target. Nextcloud의 최신 설명서에는 이러한 간격 설정과 필요한 활성화 명령이 설명되어 있습니다. 이전 버전의 설명서에는 서비스 설치 관련 내용이 포함되어 있었지만, 현재는 더 이상 사용되지 않으므로 최신 설명서의 예제를 따르십시오.

실행 누락 원인을 추적하고 수정 사항을 확인합니다.

타이머의 상태와 다음 예정된 실행 시간을 확인하세요.

systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer

타이머는 대기 중 또는 활성 상태로 표시되어야 하며, 목록에는 다음 활성화 시간이 표시되어야 합니다. 그런 다음 서비스의 최근 실행 기록을 확인하십시오.

systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today

각 서비스 실행이 실패하더라도 타이머가 활성화되어 있을 수 있으므로 두 유닛 모두 검토하십시오. 서비스가 없거나 systemd에서 파일을 거부하는 경우, `systemd install` 명령을 실행하여 systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer보고된 구문 또는 경로 문제를 수정하고 systemd를 다시 로드하십시오. 서비스가 종료되지 않으면 저널 출력에서 ​​잘못된 PHP 경로, 잘못된 사용자, 실패 조건 또는 Nextcloud 런타임 오류를 확인할 수 있습니다. 타이머에 다음 실행 일정이 없는 경우 정확한 타이머 파일 이름을 확인하고 `systemd install` 명령을 실행한 daemon-reload다음 `systemd install` 명령으로 타이머가 활성화되었는지 확인하십시오 systemctl is-enabled nextcloudcron.timer.

다음 타이머 활성화 후 Nextcloud 백그라운드 작업 상태를 다시 확인하십시오. 오래된 경고 메시지가 아닌 최근 실행 시간이 표시되어야 합니다. 타이머와 서비스 모두 성공적으로 실행되었다고 보고하지만 관리자 페이지가 여전히 최신 상태가 아닌 경우 인스턴스 로그와 웹 서버에서 사용하는 PHP 버전을 확인하십시오. 명령줄 PHP는 웹 런타임과 다를 수 있습니다. 이 설정은 일반 Linux 호스트에서 systemd 스케줄링을 사용하는 방법을 설명합니다. 컨테이너 및 어플라이언스 설치 환경에서는 자체 서비스 관리자를 통해 cron을 관리할 수 있으므로 컨테이너 파일에 접근할 수 없는 호스트 유닛을 추가하는 대신 해당 플랫폼에서 지원하는 방법을 사용하십시오.

댓글 남기기

Systemd 타이머를 사용하여 Nextcloud Cron을 자동으로 실행하세요

Nextcloud의 cron 모드를 확인하고, systemd 서비스와 타이머를 복구하고, 백그라운드 작업이 시작 후 및 5분마다 실행되는지 확인하십시오.

Redis를 사용하여 Nextcloud의 파일 잠금 경고를 해결하세요

Nextcloud 파일 잠금 기능을 안정적으로 활성화하고, 적절한 Redis 또는 Valkey 백엔드를 선택한 다음, 동시 파일 변경 위험 없이 경고가 사라지는지 확인하십시오.

Nextcloud에서 A+ 보안 등급을 획득하기 위해 필요한 것

Nextcloud에서 A+ 보안 등급을 획득하기 위해 필요한 것

최신 업데이트, HTTPS 및 HSTS 지원, 정확한 리버스 프록시 신뢰 설정, 그리고 공용 서버 검사를 통해 Nextcloud 스캔에서 흔히 발견되는 문제들을 해결하세요.

Nextcloud 서버 측 암호화를 활성화하고 영향 분석을 통해 효과를 확인하세요.

기존 파일을 암호화하기 전에 필요한 스토리지에 맞게 Nextcloud SSE를 구성하고, 암호화 키를 보호하고, 전송 및 CPU 사용량에 미치는 영향을 측정하십시오.

Nextcloud에 Elasticsearch 전문 검색 기능을 추가하세요

Nextcloud의 파일 검색 기능을 Elasticsearch에 연결하고, 문서 콘텐츠를 색인화하고, 서버 및 보안 요구 사항에 맞는 설정을 선택하세요.

Nextcloud에서 삭제된 파일에 대한 신뢰할 수 있는 만료 정책을 설정하세요

Nextcloud에서 삭제된 파일에 대한 신뢰할 수 있는 만료 정책을 설정하세요

Nextcloud에서 지정된 보존 기간이 지나면 삭제된 파일을 제거하도록 설정하고, 백그라운드 작업을 안정적으로 예약하며, 모든 사용자의 휴지통을 비우는 명령을 사용하지 않도록 구성하십시오.

Nextcloud의 누락된 데이터베이스 인덱스 경고를 지우세요

Nextcloud의 누락된 데이터베이스 인덱스 경고를 지우세요

Nextcloud의 OCC 복구 기능을 안전하게 실행하고, 데이터베이스 변경 사항을 미리 보고, 경고가 계속 표시되는 이유를 확인하십시오.

Nextcloud의 웹 업로드 제한을 2GB 이상으로 상향 조정하세요

Nextcloud의 웹 업로드 제한을 2GB 이상으로 상향 조정하세요

PHP, Nginx 또는 Apache, 임시 저장소 및 시간 초과 설정을 조정하여 Nextcloud 브라우저의 대용량 파일 업로드를 허용하고, 어떤 제한 사항이 파일 업로드를 차단하는지 확인하십시오.

Nextcloud 웹 서버의 PHP 메모리 경고를 해결하는 방법

Nextcloud에서 실제로 사용하는 PHP 메모리 제한을 설정하고, 해당 서비스를 재시작한 다음, 관리자 개요에서 512MB 설정이 제대로 되었는지 확인하십시오.

S3 호환 버킷을 Nextcloud 외부 스토리지에 연결하기

Nextcloud의 S3 백엔드를 사용하여 호환되는 객체 스토리지 버킷을 마운트하고, 올바른 엔드포인트, 자격 증명, 액세스 범위 및 검증 단계를 설정하십시오.