Redis를 사용하여 Nextcloud의 파일 잠금 경고를 해결하세요
Nextcloud 파일 잠금 기능을 안정적으로 활성화하고, 적절한 Redis 또는 Valkey 백엔드를 선택한 다음, 동시 파일 변경 위험 없이 경고가 사라지는지 확인하십시오.
Nextcloud의 트랜잭션 파일 잠금 경고를 해결하려면 먼저 잠금 기능이 활성화되어 있는지 확인한 다음 Redis 또는 Valkey와 같은 영구 Redis 호환 백엔드를 구성하십시오. 소규모 인스턴스에서는 Nextcloud가 기본적으로 데이터베이스 잠금 백엔드를 사용할 수 있습니다. 프로덕션 서버 또는 공유 워크로드의 경우 데이터베이스에 대한 잠금 트래픽을 줄이기 위해 Redis 기반 잠금을 사용하는 것이 일반적입니다. Memcached에 파일 잠금을 할당하지 마십시오. Nextcloud는 캐시된 값이 예기치 않게 사라질 수 있다고 경고합니다.
트랜잭션 파일 잠금은 파일 작업 중 발생하는 쓰기 충돌을 방지하고 업로드 또는 기타 트랜잭션이 중단될 때 잠금을 해제합니다. 이는 공유 파일 및 외부 저장소를 사용하는 작업을 포함하여 정상적인 작업 중에 데이터 손상을 방지하는 데 도움이 됩니다. 트랜잭션 파일 잠금은 두 사람이 동시에 같은 문서를 편집하는 것을 막거나 현재 상태 표시기를 제공하지는 않으며, 동시 저장을 제어합니다. 자세한 내용은 Nextcloud 35 트랜잭션 파일 잠금 문서를 참조하십시오 .
memcache.locking.소규모 홈 서버의 경우, 잠금 경고가 없고 데이터베이스 부하가 크지 않다면 데이터베이스 잠금만으로도 충분할 수 있습니다. 사용량이 많은 인스턴스, 여러 애플리케이션 서버 또는 데이터베이스 외부에서 파일 잠금을 처리하려는 경우에는 Redis 또는 Valkey를 선택하십시오. 현재 Nextcloud 35 메모리 캐싱 지침에서는 일반적인 단일 서버 배포 환경에서 로컬 캐시에는 APCu를, 잠금에는 Redis를 권장합니다. 클러스터링된 웹 노드는 모두 동일한 Redis 또는 Valkey 엔드포인트 또는 클러스터를 사용해야 합니다.
일반적으로 Nextcloud 설치 디렉터리에 있는 활성 Nextcloud 구성 파일을 찾으십시오 config/config.php. 변경하기 전에 백업하십시오. filelocking.enabled및 항목을 검색하십시오 memcache.locking. 구성 참조는 기본적으로 잠금을 활성화하도록 설정되어 있습니다. 명시적으로 false로 설정된 값이 있으면 true로 변경하거나 해당 재정의를 제거하십시오.
'filelocking.enabled' => true,
기존 키의 복사본을 두 개 추가하지 마십시오. PHP 구성 배열에는 각 설정에 대해 유효한 값이 하나만 포함되어야 합니다. 컨테이너 또는 관리형 호스팅 패널을 사용하는 경우, 업그레이드 또는 재배포 후에도 설정이 유지되도록 해당 패널에서 지원하는 구성 메커니즘을 통해 변경하십시오. Nextcloud 35 관리자 경고 참조 문서에서는 잠금 경고에 대한 설명과 백엔드 요구 사항 링크를 제공합니다.
Debian이나 Ubuntu에서는 패키지 이름이 일반적으로 `php-redis-php` redis-server와 같은 형식입니다 php-redis. 사용 중인 배포판의 패키지 이름을 사용하고 웹 서버에서 사용하는 PHP 버전에 맞는 PHP 모듈을 선택하세요. 기존 Redis 백엔드를 사용하는 경우 Redis 서비스를 설치하고 시작한 다음 웹 SAPI에 대해 PHP Redis 확장 기능이 활성화되어 있는지 확인하십시오. CLI 전용 PHP 모듈은 PHP-FPM이나 Apache가 해당 모듈을 로드할 수 있음을 보장하지 않습니다.
기존 배열에 잠금 백엔드 및 연결 세부 정보를 추가합니다 config.php. 이 예에서는 Redis가 동일한 머신에서 실행 중이고 localhost 포트 6379에서 수신 대기하며 Nextcloud PHP 프로세스에서 액세스할 수 있다고 가정합니다.
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
Redis 서버에서 인증 정보가 필요한 경우 설정하십시오. Redis를 공용 인터넷에 노출하지 않도록 하고, 호스트 또는 사설 네트워크로 제한한 후 인증 및 방화벽 규칙을 구성하십시오. Unix 소켓을 사용하는 경우 소켓 경로를 Redis 호스트 및 포트 0으로 지정하고 웹 서버 사용자가 해당 소켓에 액세스할 수 있는지 확인하십시오. Redis가 실제로 로컬에 있고 일관되게 공유되는 경우가 아니라면 localhost 설정을 다중 서버 배포 환경에 복사하지 마십시오. 모든 Nextcloud 애플리케이션 노드는 동일한 백엔드를 참조해야 합니다.
Nextcloud 34.0.2 이상 버전에서는 KeyValueCache를 사용하여 별도의 PHP 확장 프로그램 없이 Redis 또는 Valkey에 연결할 수 있습니다. 호스트 및 자격 증명을 사용자 환경에 맞게 변경하여 다음과 같이 백엔드 및 키-값 저장소를 구성하십시오.
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => 'localhost',
'port' => 6379,
],
],
Redis와 KeyValueCache를 서로 경쟁하는 잠금 공급자로 구성하지 마십시오. 자격 증명, TLS, 소켓, Sentinel 또는 클러스터 토폴로지에 대해서는 Nextcloud 설명서를 참조하십시오. 단일 서버 예제를 추측하여 적용하지 마십시오.
서비스 구성을 변경한 경우 Redis 호환 서비스를 다시 시작하고, PHP 확장 프로그램을 설치하거나 활성화한 경우 웹 서버 또는 PHP-FPM 프로세스를 다시 시작하십시오. 배포판의 서비스 이름을 사용하여 서비스 상태를 확인하십시오. 예를 들어, systemctl status redis-server많은 Debian 또는 Ubuntu 시스템에서는 서비스 이름을 사용합니다. 서비스가 활성화되어 있고 PHP 프로세스가 연결할 수 있는지 확인하십시오. 컨테이너 배포 환경에서는 두 서비스가 네트워크 네임스페이스를 공유하는 경우가 아니면 localhost가 아닌 컨테이너 네트워크의 Redis 서비스 이름을 사용해야 합니다.
관리자 계정으로 Nextcloud에 로그인하고 관리 개요를 새로 고침하세요. 구성된 백엔드에 접속할 수 있고 설정이 로드되면 트랜잭션 파일 잠금 경고가 사라져야 합니다. 테스트 파일을 업로드, 다운로드 및 동기화한 다음, Redis 연결 또는 권한 오류가 발생하는지 Nextcloud 및 PHP 로그를 검토하세요. 경고가 계속 발생하는 경우 일반적으로 오타, 중복 구성 키, 잘못된 PHP 확장/SAPI, 차단된 네트워크 연결, 잘못된 소켓 권한 또는 연결할 수 없는 백엔드와 관련이 있습니다. 잠금을 비활성화하기보다는 이러한 특정 원인을 수정하세요.
배포별 옵션에 대해서는 토폴로지를 변경하기 전에 버전별 공식 참조 자료( 트랜잭션 파일 잠금 , 메모리 캐싱 및 Redis/Valkey 구성 , 구성 매개변수) 를 참조하십시오 .
Nextcloud 파일 잠금 기능을 안정적으로 활성화하고, 적절한 Redis 또는 Valkey 백엔드를 선택한 다음, 동시 파일 변경 위험 없이 경고가 사라지는지 확인하십시오.
최신 업데이트, HTTPS 및 HSTS 지원, 정확한 리버스 프록시 신뢰 설정, 그리고 공용 서버 검사를 통해 Nextcloud 스캔에서 흔히 발견되는 문제들을 해결하세요.
기존 파일을 암호화하기 전에 필요한 스토리지에 맞게 Nextcloud SSE를 구성하고, 암호화 키를 보호하고, 전송 및 CPU 사용량에 미치는 영향을 측정하십시오.
Nextcloud의 파일 검색 기능을 Elasticsearch에 연결하고, 문서 콘텐츠를 색인화하고, 서버 및 보안 요구 사항에 맞는 설정을 선택하세요.
Nextcloud에서 지정된 보존 기간이 지나면 삭제된 파일을 제거하도록 설정하고, 백그라운드 작업을 안정적으로 예약하며, 모든 사용자의 휴지통을 비우는 명령을 사용하지 않도록 구성하십시오.
Nextcloud의 OCC 복구 기능을 안전하게 실행하고, 데이터베이스 변경 사항을 미리 보고, 경고가 계속 표시되는 이유를 확인하십시오.
PHP, Nginx 또는 Apache, 임시 저장소 및 시간 초과 설정을 조정하여 Nextcloud 브라우저의 대용량 파일 업로드를 허용하고, 어떤 제한 사항이 파일 업로드를 차단하는지 확인하십시오.
Nextcloud에서 실제로 사용하는 PHP 메모리 제한을 설정하고, 해당 서비스를 재시작한 다음, 관리자 개요에서 512MB 설정이 제대로 되었는지 확인하십시오.
Nextcloud의 S3 백엔드를 사용하여 호환되는 객체 스토리지 버킷을 마운트하고, 올바른 엔드포인트, 자격 증명, 액세스 범위 및 검증 단계를 설정하십시오.
영구 UUID 마운트, 유지 관리 모드, 검증된 복사본 및 원본 경로 심볼릭 링크를 사용하여 Linux Nextcloud 데이터 디렉터리를 외부 드라이브로 안전하게 이동합니다.