문제

Django를 웹 프레임 워크로 사용한 다음 Apache 및 Lighttpd를 각각 웹 서버 및 정적 미디어 서버로 사용하고 있습니다. Lighty는 모든 정적 콘텐츠를 잘 제공하지만 사용자가 업로드 한 새 파일을 제공하도록 구성해야합니다. LightTPD는 Apache (Django)와 다른 기계에서 실행 중입니다. 디렉토리를 작성한 Django 코드와 이미지 파일 생성 코드가 내 Apache 시스템에서 실행되어 현재 동일한 컴퓨터 자체에서 저장됩니다. 이 디렉토리와 파일 생성이 내 정적 미디어 서버에서 발생하고 미디어 서버 자체가 제공해야합니다. os.mkdir 및 urllib.urlretrieve 함수를 각각 사용하여 디렉토리를 만들고 Django (Apache) 시스템에서 파일을 저장하고 있습니다. 어쨌든 이런 것들을 작동시키기 위해 구성 조정을 할 수 있거나 미디어 서버에 스크립트를 작성하고 Django Machine에서 EM을 호출해야합니까?

도움이 되었습니까?

해결책

가장 간단한 대답은 사용자가 두 웹 서버 모두 액세스 할 수있는 공유 디렉토리에 업로드한다는 것입니다. 그런 다음 즉시 사용할 수 있습니다. UNIX를 사용하는 경우 (사운드와 같은 소리) NFS는 가능한 솔루션입니다. 귀하의 사이트가 여러 서버로 확장 될 것이라고 생각되면 RSYNC를 사용하여 여러 에지 서버로 푸시하고 샤드 체계를 구현하는 것도 또 다른 솔루션입니다.

조심해. 앱에 따라 고려해야 할 보안 문제가 많이 있습니다.

모든 파일이 공개적으로 액세스 가능한 디렉토리로 이동하면 사용자가 다른 사람들 파일의 이름을 추측하고 다운로드 할 수 있습니다. 이 경우 Django에서 얇은 보안 층으로 제공하고 싶을 것입니다.

사용자를 믿지 마십시오! 업로드 한 내용이 특정 허용 세트에 있는지 확인하십시오. 어떠한 상황에서도 원하는대로 업로드 할 수 없습니다. 물론 사용자는 신뢰할 수있는 소수의 사람들이 아니라면. 그럼에도 불구하고 수표를해야합니다. 아마도 .php 파일을 업로드해서는 안됩니다. 마지막으로 제공하려는 것은 서버에서 임의의 스크립트를 실행하는 능력입니다. 최소한 파일을 제공하고 아무것도 실행하지 않도록 디렉토리를 구성하십시오.

행운을 빕니다

다른 팁

이것은 내가 rsync를 사용하는 종류입니다. 기본 서버에서 원하는 것을 수행 한 다음 정기적으로 (또는 주문형) RSYNC 푸시를 정적 서버로 푸시하십시오. RSYNC는 빠른 해킹으로 생산할 수있는 것보다 빠르고 (그리고 더 특징적인).

편집증이기 때문에 모든 고객 사이트의 시간당 RSYNC를 2 개의 백업 서버로 가져옵니다. 그 중 하나는 차고에 있습니다. 방금 1.7GB 고객 사이트 (변경되지 않은)에 대해 "RSYNC -A"를 시간에 시간을 보냈으며 3 개의 다른 디렉토리를위한 3 개의 네트워크 핸드 셰이크를 포함하여 9.92 초 벽 클록 타임이 걸렸습니다. Presto-Bango, Timestamps, 소유자/그룹 등으로 완성 된 것이 변경되었다.

당신이 진실, 멀티 머신, 인간과 관련이없는 백업 작동 할 때 서버 고장에 대해 Blasé가 어떻게 될 수 있는지 놀랍습니다. 나는 정말로 잘 자고있다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top