2009-06-03 2 views
0

이 질문은 다른 사람들이이 문제에 대한 해결책을보다 쉽게 ​​찾을 수 있도록 retitled/retagged되었습니다.플래시 기반 파일 업로드 (swfupload)가 Apache/mod-wsgi와 함께 실패합니다.


나는 아파치/모드 - WSGI 환경에 장고 개발 서버에서 프로젝트를 마이그레이션하려고 노력하는 과정에서입니다. 어제 나에게 물었다면 전환이 매우 원활하게 진행되고 있다고 말했을 것이다. 내 사이트는 접속 가능하고 빠르며 등등입니다. 그러나 사이트의 일부분은 파일 업로드에 의존하고 있으며,이 중 가장 이상하고 가장 큰 문제를 겪고 있습니다. 문제의 특정 페이지는 파일을 포착하고 서버 측 처리를 시작하는 url에 파일 및 관련 메타 데이터를 POST하기 위해 swfupload을 사용합니다. 이것은 개발 서버에서 완벽하게 작동하지만 Apache에서이 URL을 POST 할 때 장고 요청 객체는 비어 있습니다. GET, POST 또는 FILES 데이터가 없습니다.

Wireshark로 스누핑하여 클라이언트 측 문제를 제거했습니다. 내가 알 수있는 한 근본적인 원인은 일종의 아파치 설정 문제에서 비롯된 것인데, 아마도 액세스하려는 임시 파일 디렉토리와 관련이있을 것이다. 필자는 Apache 구성에 대해 상대적으로 신참이며 몇 시간 동안 내 머리를 두드리는 소리가났습니다.

내 아파치 설정 :

<VirtualHost *:80> 
ServerAdmin [email protected] 
ServerName sitename.com 
ServerAlias www.sitename.com 
LogLevel warn 
WSGIDaemonProcess sitename processes=2 maximum-requests=500 threads=1 
WSGIProcessGroup sitename 
WSGIScriptAlias//home/user/src/sitename/apache/django.wsgi 
Alias /static /home/user/src/sitename/static 
Alias /media /usr/share/python-support/python-django/django/contrib/admin/media 
</VirtualHost> 

내 직감이 내가 내 장고 settings.py ('/home/sk/src/sitename/uploads/')에서 지정한 파일 업로드 디렉토리의 권한으로 할 수있는 뭔가가있을 수 있다는 것입니다, 그러나 내 아파치 오류 log는 디버깅을 위해 로그 레벨이 올라간다 할지라도 정렬의 어떤 것도 제안하지 않습니다.

디버깅 방법에 대한 제안 사항은 무엇입니까?

+0

이미지와 관련된 장고 설정은 어떻습니까? 장고 쪽에서 어떻게 처리합니까? – stefanB

+0

http://www.oluyede.org/blog/2007/03/18/django-image-uploading-validation-and-newforms/ (오래된 것일 수도 있음) http://scottbarnham.com/blog/2007/07/31/upload-images-to-a-django/ – stefanB

+0

흠,이 링크의 관련성을 잘 모르겠습니다. 나는 실제로 이미지를 올리는 사용자가 전혀 없다. 적어도 아바타 같은 의미는 아니다. 또한, swfupload를 사용하고 있기 때문에 Django에 내장 된 파일 업로드 처리 (MEDIA_PATH, FileField 등)를 사용하지 않습니다. 내 파일은 최종 저장소 저장소로 전송되기 전에 임시 디렉토리에서 사후 처리됩니다. – bouvard

답변

2

또 다른 가능성은 mod_wsgi의 "이전"릴리스에있는 버그입니다 (필자는 그것을 발견하고 수정하기가 어려웠습니다). 이 bug report에 대한 자세한 정보. following hint (CLI에서도 작동하며 -H 스위치 사용) 덕분에 (컬 업로드의 경우) 수정했습니다.

+0

이것은 정확히 내가 겪고있는 문제와 비슷하게 들린다. 사실 Ubuntu Jaunty의 modwsgi 버전에는이 수정 사항이 포함되어 있지 않다. 필자는 오페라를 사용하고 있지는 않지만 Flash에서도 비슷한 동작을 보입니다. 당신은 승자 Mapio일지도 모릅니다.이 경우, 나는 이것을 확실히 지적하기 위해 맥주를 가장 많이 빚을 것입니다. 나는 오늘 밤 시험 할 것이다. :-) – bouvard

+0

너는 내 불사의 감탄을 가지고있다. 캘리포니아에 있다면, 들러주십시오. 나는 너에게 하나 이상을 빚지고있다. – bouvard

+0

저는 이탈리아에 살고 있지만, 캘리포니아에서 휴가를 가질 수있어서 정말 행복 할 것입니다. – Mapio

3

일반적으로 아파치는 "www-data"사용자로 실행됩니다. 읽기/쓰기 액세스 권한이없는 경우 문제가 발생할 수 있습니다. 그러나 설치 프로그램이 아파치를 사용하여 '/ home/sk/src/sitename/uploads'에 액세스하는 것처럼 보이지 않습니다. 정적 또는/미디어 충돌, 아파치가 WGSI에서 그것을 넘겨 줄 것이기 때문에,이 설정 파일에서의 나의 이해는 아파치보다 오히려 그러한 퍼미션과 로그를 체크 아웃하는 것이 좋다.

+0

+1 : 항상 권한입니다. 항상. 드물게 권한이 아닌 경우 항상 PYTHONPATH입니다. 정말 희귀 한 경우 PYTHONPATH가 아닌 다른 곳에서는 철자가 틀린 파일 이름입니다. –

+0

이 두 의견은 모두 내 직감을 따른다. 오늘 밤 WSGI 사용 권한에 대해 좀 더 조사 할 것입니다. 나는 데몬이 로그인 사용자로 실행되도록 설정하는 것을 포함하여 여러 가지 변형을 시도했지만 (액세스 권한이 있어야 함), 결과는 동일합니다. – bouvard

+0

흠, wsgi 문서 (http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines) Apache가 root로 시작되지 않으면 WSGIDaemonProcess 명령의 user 및 group 매개 변수가 무시됩니다. 그것은 문제 일 수 있습니다. 그렇다면 '/ home/sk/src/sitename/uploads'에 www- 데이터 액세스 권한을 명시 적으로 부여해야합니다. 필자는 필자가 프로그래머가 아닌 sysadmin ... 저런 권한으로 나를 괴롭히는 것입니다. – bouvard

관련 문제