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

Nextcloud의 트랜잭션 파일 잠금 경고를 해결하려면 먼저 잠금 기능이 활성화되어 있는지 확인한 다음 Redis 또는 Valkey와 같은 영구 Redis 호환 백엔드를 구성하십시오. 소규모 인스턴스에서는 Nextcloud가 기본적으로 데이터베이스 잠금 백엔드를 사용할 수 있습니다. 프로덕션 서버 또는 공유 워크로드의 경우 데이터베이스에 대한 잠금 트래픽을 줄이기 위해 Redis 기반 잠금을 사용하는 것이 일반적입니다. Memcached에 파일 잠금을 할당하지 마십시오. Nextcloud는 캐시된 값이 예기치 않게 사라질 수 있다고 경고합니다.

서버에 맞는 잠금 백엔드를 선택하십시오.

트랜잭션 파일 잠금은 파일 작업 중 발생하는 쓰기 충돌을 방지하고 업로드 또는 기타 트랜잭션이 중단될 때 잠금을 해제합니다. 이는 공유 파일 및 외부 저장소를 사용하는 작업을 포함하여 정상적인 작업 중에 데이터 손상을 방지하는 데 도움이 됩니다. 트랜잭션 파일 잠금은 두 사람이 동시에 같은 문서를 편집하는 것을 막거나 현재 상태 표시기를 제공하지는 않으며, 동시 저장을 제어합니다. 자세한 내용은 Nextcloud 35 트랜잭션 파일 잠금 문서를 참조하십시오 .

  • 데이터베이스 백엔드: Nextcloud는 기본적으로 데이터베이스 잠금을 사용합니다. 이는 추가 서비스를 설치하지 않아도 되므로 소규모 개인 설치 환경에는 적합할 수 있지만, 데이터베이스 잠금은 부하를 증가시킵니다. 사용량이 적은 서버에서 경고를 해제하는 경우, 먼저 잠금 기능이 명시적으로 비활성화되어 있지 않은지 확인하십시오.
  • phpredis를 사용한 Redis: 안정적인 단일 서버 및 클러스터 배포 환경에 적합합니다. Redis 호환 서버와 PHP Redis 확장 프로그램, 그리고 Nextcloud의 연결 설정이 필요합니다.
  • Redis 또는 Valkey를 사용하는 KeyValueCache: Nextcloud 34.0.2 버전부터 사용 가능합니다. Nextcloud에 포함된 라이브러리를 사용하므로 PHP Redis 확장 프로그램이 필요하지 않습니다. 이는 확장 프로그램을 사용할 수 없는 경우에 유용하지만, Nextcloud는 원격 키-값 서버를 사용하면 네트워크 오버헤드가 발생할 수 있다고 명시하고 있습니다.
  • Memcached: 분산 캐싱에 사용할 수 있지만 캐시 값이 제거될 수 있으므로 트랜잭션 파일 잠금에는 적합하지 않습니다. .에서 사용하지 마십시오 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 관리자 경고 참조 문서에서는 잠금 경고에 대한 설명과 백엔드 요구 사항 링크를 제공합니다.

단일 서버에서 Redis 잠금을 구성합니다.

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 애플리케이션 노드는 동일한 백엔드를 참조해야 합니다.

PHP Redis 확장 프로그램을 사용할 수 없는 경우

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 구성 , 구성 매개변수) 를 참조하십시오 .

댓글 남기기

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

기존 스토리지를 손상시키지 않고 Nextcloud 데이터를 외장 드라이브로 옮기기

기존 스토리지를 손상시키지 않고 Nextcloud 데이터를 외장 드라이브로 옮기기

영구 UUID 마운트, 유지 관리 모드, 검증된 복사본 및 원본 경로 심볼릭 링크를 사용하여 Linux Nextcloud 데이터 디렉터리를 외부 드라이브로 안전하게 이동합니다.