2017-03-31 3 views
0

비디오에 미리보기 이미지를 표시하는 간단한 Django 앱이 있습니다. 앱이 수행하는 첫 번째 작업은 MEDIA_ROOT에있는 모든 미리보기 이미지 파일을 찾는 것입니다. 그 밖의 모든 것은 그로부터 흐릅니다. 아파치가 내 사이트를 올바르게 서비스하고 있지만, 내 media_root에서 파일을 찾을 수 없습니다.OS X Django/Apache 앱이 미디어 파일을 제공하지 않습니다. 파이썬 셸을 사용합니다.

views.py : settings.py에서

def index(request): 
    def walk_dir_tree(path, file_type): 
     return[os.path.basename(x) for x in glob.glob(path + file_type, 
                 recursive=True)] 
    # Gets all .jpgs in media_root 
    all_thumb_files = sorted(walk_dir_tree(
     settings.MEDIA_ROOT + 'thumbnails/**/*', '.jpg'), reverse=True) 
... 
return HttpResponse(template.render(context, request)) 

관련 정보 :

# URLs 
STATIC_URL = '/static/' 
MEDIA_URL = '/media/' 

# Root Dirs: 
STATIC_ROOT = os.path.join(BASE_DIR, "static/") 
# Dev 
MEDIA_ROOT = '/Users/user/Documents/temp/secureDash/' 

HTTP-vhosts.conf :

<VirtualHost *:80> 

    LogLevel debug 

    ServerName securedash 
    ServerAdmin <email> 


    Alias /static /Users/user/icloud/projects/secureDash/static 
    <Directory /Users/user/icloud/projects/secureDash/static> 
     Require all granted 
    </Directory> 

    Alias /media /Users/user/Documents/temp/secureDash 
    <Directory /Users/user/Documents/temp/secureDash> 
     Require all granted 
    </Directory> 

    <Directory /Users/user/icloud/projects/secureDash/secureDash> 
     <Files wsgi.py> 
      Require all granted 
     </Files> 
    </Directory> 

    WSGIDaemonProcess securedash python-path=/Users/user/icloud/projects/secureDash/secureDash python-home=/Users/user/Documents/VirtualEnvs/securedash 
    WSGIProcessGroup securedash 
    WSGIScriptAlias//Users/user/icloud/projects/secureDash/secureDash/wsgi.py 
</VirtualHost> 

테스트로 경로 것을 보장하기 위해 내 미디어에 맞다면, 빠른 스크립트를 작성하여 python3 쉘에서 실행했습니다 :

MEDIA_ROOT = '/Users/user/Documents/temp/secureDash/' 

def walk_dir_tree(path, file_type): 
    return[os.path.basename(x) for x in glob.glob(path + file_type, 
                recursive=True)] 

all_thumb_files = sorted(walk_dir_tree(
    MEDIA_ROOT + 'thumbnails/**/*', '.jpg'), reverse=True) 


# prints a list of all jpgs 
print(walk_dir_tree('/Users/user/Documents/temp/secureDash/thumbnails/**/*', '.jpg')) 
# also prints a list of all jpgs 
print(all_thumb_files) 

아무데도 기록되지 않은 오류가 없습니다. 매번 빈 목록 만 반환합니다. 이 가능성이 내 settings.py 또는 아파치 구성 문제가있는 것으로 생각하지만 여러 조합을 시도하고 아무것도 작동하지 않았습니다.

이 정확한 구성은 제 라즈베리 파이의 "생산"서버에서 작동합니다. 난 그냥 더 가까운 생산 환경과 일치하는 dev 환경을 설정하려고합니다. 차이점은 OS와 MEDIA_ROOT 위치입니다.

장고 1.10 | OSX 10.11 엘 캐피 탄 | 아파치 2.4

+0

코드에서 이전에'print()'디버깅을 해봤습니까? 'index()'뷰 코드에서 콘솔에 몇개의 런타임 값을 출력하는 것처럼 보입니다. –

+0

그래, 그게 내가 생각할 수있는 곳이면 어디든 할 수있다. 'print (all_thumb_files)'는'[]'를 반환합니다. 'print ('settings.MEDIA_ROOT is :'+ settings.MEDIA_ROOT)'는 walk_dir_tree 내부의'/ Users/user/Documents/temp/secureDash /'를 반환합니다 :'print ('path + file_type :'+ path + file_type)' '/ Users/user/Documents/temp/secureDash/thumbnails/**/*. jpg' – brewcrazy

+0

파이썬 버전은 무엇입니까? "버전 3.5에서 변경됨 :"** "."을 사용하는 재귀 적 glob 지원 – mithuntnt

답변

0

이것은 결국 /Users/user/Documents/temp/secureDash/과 함께 사용 허가 문제가되었지만, 그 일을 도와 준 것은 @mithuntnt가 다른 폴더를 glob하기위한 제안이었습니다. 그래서 나는 돌아 왔고 결과를 돌려 준 /Users/user/Documents을 globbed했다. 그런 다음 결과를 반환 한 /temp을 추가하십시오. 그 다음에 /secureDash은 그렇지 않았다. 나는 /secureDash과 같은 레벨에 있었고 그것이 작동했던 /temp에 다른 디렉토리를 시도했다. 그래서 /secureDash에 대한 권한을 확인하고는했다 :

17276808 [email protected] 6 user _www       204B Mar 29 15:04 secureDash 

그래서 내가

chmod -R 755 /Users/user/Documents/temp/secureDash/를 실행 그리고 지금 작은 이미지를로드한다. 아파치 로그에 파일 사용 권한 오류가 발생해서는 안되나? 나는 http-vhosts.conf에 LogLevel debug을 가지고 있었다. 개발 환경에 적합한 LogLevel 설정은 무엇입니까?