Changes between Version 5 and Version 6 of DjangoDocumentKoreanTranslation/modpython


Ignore:
Timestamp:
03/07/09 05:28:29 (6 years ago)
Author:
spike
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DjangoDocumentKoreanTranslation/modpython

    v5 v6  
    66= mod_python에서 장고 운영하기 =
    77
    8 [http://httpd.apache.org/ Apache] with [http://www.modpython.org/ mod_python]은 제품 서버(production server)에서 장고를 사용하기 위해
    9 현재 가장 선호되는 설정입니다.
    10 
    11 mod_python은 [http://perl.apache.org/ mod_perl]과 유사합니다 : 아파치 내에서 파이썬을 임베딩하고,
    12 아파치가 시작할때 파이썬 코드를 메모리에 로드합니다.
    13 코드는 아파치 프로세스가 살아있는 동안 메모리에 남아 있으며,
    14 이는 다른 서버구성보다 주목할만한 성능 향상을 이끌어 냅니다.
    15 
    16 장고는 아파치 2.x 와 mod_python 3.x 를 필요로 하며,
    17 반드시 [http://httpd.apache.org/docs/2.2/mod/worker.html worker MPM]에 대비되는 [http://httpd.apache.org/docs/2.2/mod/prefork.html prefork MPM] 아파치를 사용해야 합니다.
     8[http://httpd.apache.org/ Apache] with [http://www.modpython.org/ mod_python]은 제품 서버(production server)에서 장고를 사용하기 위해 현재 가장 선호되는 설정입니다.
     9
     10mod_python은 [http://perl.apache.org/ mod_perl]과 유사합니다 : 아파치 내에서 파이썬을 임베딩하고, 아파치가 시작할때 파이썬 코드를 메모리에 로드합니다. 코드는 아파치 프로세스가 살아있는 동안 메모리에 남아 있으며, 이는 다른 서버구성보다 주목할만한 성능 향상을 이끌어 냅니다.
     11
     12장고는 아파치 버전 2.x  이상과 mod_python 버전 3.x 이상을 필요로 하며,
     13반드시 [http://httpd.apache.org/docs/2.2/mod/worker.html worker MPM]에 대신 [http://httpd.apache.org/docs/2.2/mod/prefork.html prefork MPM] 아파치를 사용해야 합니다.
    1814
    1915[../fastcgi/ FastCGI, SCGI 또는 AJP 에서 장고 운영하기]도 살펴보세요.
     
    2319= 기본 설정 =
    2420
    25 mod_python에서 장고를 설정하기 위해서, 먼저 여러분은 mod_python 모듈이 활성화된
     21mod_python에서 장고를 설정하기 위해서, 먼저 mod_python 모듈이 활성화된
    2622아파치가 설치되어 있어야 합니다,
    2723
    28 그리고 나서 여러분의 {{{httpd.conf}}} 파일을 열어서 다음을 추가하십시오:
     24그리고 나서 `httpd.conf` 파일을 열어서 다음을 추가하십시오
    2925{{{
    3026<Location "/mysite/">
     
    3531</Location>
    3632}}}
    37 ...그리고 {{{mysite.settings}}}를 여러분의 장고 프로젝트의 설정 파일에 대한 파이썬 경로로 대체하십시오.
    38 
    39 이는 아파치에게 지시를 합니다: "장고 mod_python 핸들러를 사용하여,
    40 '/mysite/' 이하의 어떠한 URL에 대해서든 mod_python을 사용하라."
     33
     34`DJANGO_SETTINGS_MODULE`에는 {{{mysite.settings}}}를 장고 프로젝트의 설정
     35파일의 파이썬 경로로 다시 설정하시기 바랍니다.
     36
     37위 설정은, "장고에서는 mod_python 핸들러를 사용해서, '/mysite/' 아래 모든 URL에 대해서
     38mod_python을 사용한다."는 설정입니다.
     39
    4140mod_python은 어떤 설정을 사용해야 하는지 {{{DJANGO_SETTINGS_MODULE}}}의 값으로 알수 있습니다.
    4241
    43 {{{<Directory>}}} 지시자가 아니라, {{{<Location>}}} 지시자가 사용되고 있는 것을 주의하십시오.
    44 전자는 여러분의 파일시스템상의 위치를 가리키는데 반해,
    45 {{{<Location>}}}은 웹사이트의 URL 구조상의 위치를 가리킵니다.
    46 여기서는 {{{<Directory>}}} 가 의미 없습니다.
    47 
    48 또한, 만약  여러분의 장고 프로젝트가 컴퓨터의 기본  {{{PYTHONPATH}}}상에 없다면,
    49 여러분의 프로젝트를 어디서 찾아야 하는지를 mod_python에게 알려줘야 합니다.
    50 
    51 .. parsed-literal:
     42{{{<Directory>}}} 지시자가 아니라, {{{<Location>}}} 지시자가 사용되고 있는 것에
     43주의하세요.
     44
     45{{{<Directory>}}}는 파일시스템상의 위치를 가리키는데 반해, {{{<Location>}}}은 웹사이트의 URL에서의 위치를 가리킵니다. 여기서는 {{{<Directory>}}} 가 의미 없습니다.
     46
     47또, 만약 장고 프로젝트가 기본 {{{PYTHONPATH}}} 안에 없다면,
     48프로젝트를 어디서 찾아야 하는지를 mod_python에게 알려줘야 합니다.
     49
    5250{{{
    5351<Location "/mysite/">
     
    5957</Location>
    6058}}}
    61 여러분이 사용하는 {{{PythonPath}}} 값은 여러분의 어플리케이션에서 import 하려고 하는
    62 모든 모듈들의 부모 디렉토리를 꼭 포함해야 합니다. 또한
    63 {{{DJANGO_SETTINGS_MODULE}}} location 의 부모 디렉토리를 포함해야 합니다.
    64 이는 바로 파이썬을 대화형으로 사용할때
    65 path를 설정하는 것과 똑같은 상황입니다.
    66 여러분이 무언가를 import 하려 할때마다, 파이썬은 import 가 성공할 때까지
     59
     60여기서 사용하는 {{{PythonPath}}} 값은 어플리케이션에서 import 하려고 하는
     61모든 모듈들의 부모 디렉토리를 반드시 포함해야 합니다. 또한
     62{{{DJANGO_SETTINGS_MODULE}}} 의 실제 경로도 포함해야 합니다.
     63이 점은 바로 파이썬을 대화형으로 사용할때 path를 설정하는 것과 똑같은 상황입니다.
     64파이썬에서는 import 할때마다, import가 성공할 때까지
    6765{{{sys.path}}} 안의 모든 디렉토리를 처음부터 끝까지 차례로 시도해 봅니다.
    6866
    69 예제를 보면 확실해 집니다. 가령
    70 {{{/usr/local/django-apps/}}} 디렉토리 아래에 여러분의 어떤 어플리케이션
    71 ({{{/usr/local/django-apps/weblog/}}} 같은)이 있고, 여러분의 설정 파일은
    72 {{{/var/www/mysite/settings.py}}} 이라서 여러분은 {{{DJANGO_SETTINGS_MODULE}}} 를
    73 위의 예제처럼 설정했습니다. 이 경우, 여러분은 {{{PythonPath}}} 지시자를
    74 아래와 같이 작성할 필요가 있습니다:
     67다음 예를 보면 확실해 집니다. 가령
     68{{{/usr/local/django-apps/}}} 디렉토리 아래에 어떤 어플리케이션
     69({{{/usr/local/django-apps/weblog/}}} 같은)이 있고, 설정 파일은
     70{{{/var/www/mysite/settings.py}}} 이라서 {{{DJANGO_SETTINGS_MODULE}}} 를
     71위의 예제처럼 설정했습니다. 이 경우, {{{PythonPath}}} 지시자를
     72아래와 같이 작성할 필요가 있습니다
    7573{{{
    7674        PythonPath "['/usr/local/django-apps/', '/var/www'] + sys.path"
     
    7876
    7977
    80 이 path 에서, {{{import weblog}}} 와 {{{import mysite.settings}}} 둘 다 작동합니다. 만약 여러분의
    81 코드 어딘가에 {{{import blogroll}}}가 있고 {{{blogroll}}}이 {{{weblog/}}} 디렉토리
    82 아래에 위치하고 있다면, 여러분은 *또한* {{{/usr/local/django-apps/weblog/}}} 를
     78이 path 에서, {{{import weblog}}} 와 {{{import mysite.settings}}} 둘 다 작동합니다. 만약 코드 어딘가에 {{{import blogroll}}}가 있고 {{{blogroll}}}이 {{{weblog/}}} 디렉토리
     79아래에 위치하고 있다면, *또한* {{{/usr/local/django-apps/weblog/}}} 를
    8380{{{PythonPath}}} 안에 넣어야 합니다.
    84 기억하십시오:여러분이 작접 import 하려고 하는
     81기억하십시오: 직접 import 하려고 하는
    8582모든 것들의 '''부모 디렉토리'''는 반드시 파이썬 path 상에 있어야 합니다.
    8683
    87 .. note:
    88 {{{
    89 만약 여러분이 Windows를 사용중이라면, 일반적으로 Windows는 역슬래시 문자(\)를
    90 운영체제의 경로 구분자로 사용하지만, 우리는 여전히 슬래시(/)를 경로에 사용할 것을
    91 추천합니다. 아파치는 슬래시 포맷을 어떻게 운영체제 포맷으로 변경할지 알기 때문에,
    92 이 방식이 간편하고(portable) 더 읽기 쉽습니다.
     84{{{
     85만약 Windows를 사용중이라면, 일반적으로 Windows는 역슬래시 문자(\)를
     86경로 구분자로 사용하지만, 우리는 여전히 슬래시(/)를 경로에 사용하기를 바랍니다.
     87 아파치는 경로 문자를 어떻게 운영체제에 맞게 변경할지 이미 알기 때문에,
     88슬래쉬를 사용하는 편이 간편하고(portable) 더 읽기 쉽습니다.
    9389(이는 이중-이스케이프 역슬래시(\\) 문제를 피하는 꽁수입니다.)
    9490}}}
    9591
    96     Windows 시스템상에서 이것 역시 유효합니다:
     92    Windows 시스템에서도 역시 마찬가지입니다.
    9793{{{
    9894PythonPath "['c:/path/to/project'] + sys.path"
    9995}}}
    100 여러분은 또한 {{{PythonAutoReload Off}}} 지시자를 성능을 위해 추가할 수 있습니다.
     96
     97또한 성능을 위해서 {{{PythonAutoReload Off}}} 지시자를 사용할 수도 있습니다.
    10198전체 옵션들은 [http://modpython.org/live/current/doc-html/directives.html mod_python 문서]에서 볼 수 있습니다.
    10299
    103 여러분은 제품 서버(production server)상에서는 반드시 {{{PythonDebug Off}}}로 설정해야 합니다.
    104 {{{PythonDebug On}}} 인채로 두면, 만약 mod_python 안에서 뭔가 잘못 되었을때
    105  여러분의 사용자들은 보기흉한(그리고 적나라한) 파이썬 traceback 들을 보게 될것입니다.
    106 
    107 아파치를 재 시작하면, /mysite/ 또는 그 아래의 어떠한 요청에 대해서도 장고가 처리를 합니다.
    108 장고의 URLconf는 "/mysite/" 를 trim 하지 않음을 주의 하십시오 - full URL이 전달됩니다.
    109 
    110 
    111 장고를 mod_python으로 운용할때, 여러분의 파이썬 코드를 변경할때마다
    112 아파치를 재 시작할 필요가 있습니다.
    113 
    114 = 한 아파치상에서 장고 다중 설치 =
    115 
    116 한 아파치 인스턴스 상에서 다중 설치된 장고를 실행 시킬 수 있습니다. 바로 VirtualHost 를
    117 아래와 같이 사용합니다:
     100실제로 외부로 서비스할 때는 반드시 {{{PythonDebug Off}}}로 설정해야 합니다.
     101{{{PythonDebug On}}} 인 채로 두면, mod_python 안에서 뭔가 잘못 되었을때
     102 사용자들은 보기 흉한(그리고 적나라한) 에러메세지를 보게 됩니다.
     103
     104아파치를 재시작하면, 모든 요청을 장고가 처리를 합니다.
     105장고의 URLconf는 "/mysite/" 를 처리하지 않습니다.
     106
     107장고를 mod_python으로 실행할 때, 파이썬 코드를 변경할때마다 아파치를 재시작할 필요가 있습니다.
     108
     109= 아파치 하나로 장고 여러개 실행하기 =
     110
     111아파치 하나로 여러개의 장고를 실행 시킬 수 있습니다. 바로 VirtualHost를 사용하면
     112됩니다.
    118113{{{
    119114NameVirtualHost *
     
    131126</VirtualHost>
    132127}}}
    133 만약 여러분이 같은 {{{VirtualHost}}}에서 두개의 장고를 설치할 필요가 있다면,
    134 여러분은 mod_python의 캐시가 꼬이지 않도록 하기 위한 특별한 예방책이 필요합니다.
    135 {{{PythonInterpreter}}} 지시자를 사용하여 각기 다른 {{{<Location>}}} 지시자들이 인터프리터를
    136 분리하도록 하십시오:
     128만약 같은 {{{VirtualHost}}}에서 장고를 하나 이상 실행해야 한다면,
     129mod_python이 꼬이지 않도록 특별한 방법이 필요합니다.
     130다음과 같이 {{{PythonInterpreter}}} 지시자를 사용하여 각기 다른 {{{<Location>}}} 지시자들이 인터프리터를 분리하도록 하십시오
    137131{{{
    138132<VirtualHost *>
     
    150144</VirtualHost>
    151145}}}
    152 각기 다른 두개의 {{{Location}}} 블럭 안에 있는 한, {{{PythonInterpreter}}} 의 값은
    153 전혀 문제되지 않습니다.
     146각기 다른 두개의 {{{Location}}} 블럭 안에만 있으면, {{{PythonInterpreter}}}의 값은 전혀 문제되지 않습니다.
    154147
    155148= mod_python에서 개발 서버(developement server) 실행하기 =
    156149
    157 만약 여러분이 개발 서버(developement server)에서 mod_python을 사용한다면,
    158 여러분은 코드를 바꿀때마다 아파치를 재시작 해야하는 불편함을 피할 수 있습니다.
    159 바로 {{{httpd.conf}}} 파일에 {{{MaxRequestsPerChild 1}}}을 설정하여 매 요청마다 강제로 아파치가 모든것을 리로드 하도록 합니다.
    160 하지만 제품 서버(production server) 상에서는 이렇게 하지 마십시오. 그렇지 않으면,
    161 여러분의 장고 권한들을 재호출합니다.
    162 
    163 만약 여러분이 여기저기 흩어진 {{{print}}} 문을 사용하여 디버깅하는 개발자 부류라면,
    164 mod_python 에서 {{{print}}} 문은 아무 효과가 없음을 주의 하십시오; 혹시 기대했을지 모를,
    165 아파치 로그에도 보이지 않습니다. 만약 mod_python 환경에서
    166 디버깅 정보를 꼭 찍어야 할 필요가 있다면, 이렇게 하십시오:
     150만약 개발 서버(developement server)에서 mod_python을 사용한다면,
     151코드를 바꿀때마다 아파치를 재시작 해야하는 합니다. 아주 불편합니다. 코드를 조금만
     152바꿔도 아파치를 다시 재시작해야하니까요. 개발할 때, 이런 불편함을 피하는 방법이
     153있습니다.
     154바로 {{{httpd.conf}}} 파일에 {{{MaxRequestsPerChild 1}}}을 설정해서 매 요청마다 강제로
     155아파치가 모든 것을 다시 시작하도록 만들 수 있습니다.
     156
     157하지만 실제 서비스에서는 이 방법은 당연히 성능에 문제를 일으킵니다. 사용하지 마십시오.
     158
     159만약 여러분이 여기저기 흩어진 {{{print}}} 문을 사용하여 디버깅하는 데 익숙한 개발자라면,
     160mod_python 환경에서는 {{{print}}}로 출력해도 그 결과를 확인할 수 없습니다.; 혹시
     161아파치 로그에 있지 않을까 생각했다면, 잘못 생각했습니다. 보이지 않습니다. mod_python
     162환경에서 디버깅 정보를 찍어야 할 때는,
     163
    167164{{{
    168165assert False, 내가_알고_싶은_값
    169166}}}
    170 혹은 디버깅 정보를 여러분 페이지의 템플릿에 추가 하십시오.
    171 
    172167
    173168= 미디어 파일 처리하기 =
    174169
    175 장고 자체는 미디어 파일들을 처리하지 않습니다; 장고는 그 작업을 여러분이 선택한
    176 웹 서버에게 남깁니다.
    177 
    178 우리는 분리된 웹서버 — 바꿔말하면, 장고를 실행하지 않는  — 미디어 처리를 위한
    179 웹서버를 사용할것을 추천합니다. 여기 몇가지 좋은 선택이 있습니다:
     170장고 자체는 고정된 파일들을 처리하지 않습니다; 장고는 웹 서버에게 넘깁니다.
     171
     172우리는 분리된 웹서버 — 즉, 장고를 실행하지 않는  — 미디어 처리를 위한 별도의 웹서버를
     173사용할것을 권합니다. 여기 이런 용도에 맞는 좋은 서버들이 있습니다
    180174
    181175 * [http://www.lighttpd.net/ lighttpd]
     
    183177 * [http://httpd.apache.org/ A stripped-down version of Apache]
    184178
    185 그렇지만, 만약 여러분이 선택의 여지가 없고
    186 장고가 실행되는 동일 아파치 {{{VirtualHost}}} 상에서 미디어 파일들을 처리해야 한다면,
    187 사이트 특정 부분의 mod_python 을 끄는 방법이 있습니다:
     179그렇지만, 만약 선택의 여지가 없고 장고가 실행되는 아파치 {{{VirtualHost}}}에서 미디어 파일들을 처리해야 한다면, 사이트 특정 부분의 mod_python 을 끄는 방법이 있습니다
    188180{{{
    189181<Location "/media">
     
    191183</Location>
    192184}}}
    193 바로 {{{Location}}}을 미디어 파일들의 루트 URL로 변경하십시오.
    194 여러분은 정규 표현식으로 매치하기 위해 {{{<LocationMatch>}}}를 사용할 수도 있습니다.
    195 
    196 이 예는 사이트 루트에 장고를 설정하지만 {{{media}}} 서브디렉토리와
    197 {{{.jpg}}}, {{{.gif}}} 또는 {{{.png}}}로 끝나는 URL은 장고를 불가능하게 하는
    198 설정을 합니다:
     185바로 {{{Location}}}을 미디어 파일들의 루트 주소 URL로 변경하십시오. 정규 표현식으로 매치하기 위해 {{{<LocationMatch>}}}를 사용할 수도 있습니다.
     186
     187아래 예는 다른 경로는 장고를 사용하지만 {{{media}}} 서브디렉토리와
     188{{{.jpg}}}, {{{.gif}}} 또는 {{{.png}}}로 끝나는 URL은 아파치에서 처리하도록 합니다.
    199189{{{
    200190<Location "/">
     
    215205= admin 파일들 처리하기 =
    216206
    217 장고 개발 서버는 자동으로 admin media 파일들을 처리합니다만, 다른 서버구성을
    218 사용할 경우는 이에 해당하지 않음을 주의 하십시오. admin 파일들을 처리하기 위해,
    219 아파치, 또는 여러분이 사용중인 어떠한 미디어 서버에 대한 설정을
    220 여러분이 해야 합니다.
    221 
    222 admin 파일은 장고 배포판의 ({{{django/contrib/admin/media}}}) 에
    223 위치합니다.
    224 
    225 여기 두가지 추천 방법이 있습니다:
    226 
    227     1. 여러분의 document root 내에 admin media 파일들에 대한 심볼릭 링크를 만듭니다.
    228        이 경우, 여러분의 모든 장고 관련 파일들 — 코드 '''그리고''' 템플릿들 — 은 한 장소에 있게되며, 여러분은 여전히 변경된 최신의 admin 템플릿들을 얻기 위해, {{{svn update}}}를 할 수 있습니다.
    229     2. 또는, 여러분의 아파치 document root 안에 admin media 파일들을 복사합니다.
     207장고 개발 서버는 자동으로 admin media 파일들을 처리하지만, 그 외에는
     208처리하지 않을 수도 있다는 점에 주의하세요. admin 파일들을 처리하기 위해,
     209아파치, 또는 사용 중인 미디어 서버에 대한 설정을 해야 합니다.
     210
     211admin 파일은 장고 배포판의 ({{{django/contrib/admin/media}}}) 에 있습니다.
     212
     213여기 두가지 방법이 있습니다
     214
     215    1. document root 내에 admin media 파일에 대한 심볼릭 링크를 만듭니다.
     216       이 경우, 모든 장고 관련 파일들 — 코드 '''그리고''' 템플릿들 — 은 한 장소에 있게되며, 여전히 변경된 최신의 admin 템플릿들을 얻기 위해, {{{svn update}}}를 할 수 있습니다.
     217    2. 또는, 아파치 document root 안에 admin media 파일들을 복사합니다.
    230218
    231219= mod_python에서 eggs 사용하기 =
    232220
    233221만약 [http://peak.telecommunity.com/DevCenter/PythonEggs Python egg]에서 장고를 설치했거나 장고 프로젝트에 egg를 사용 중이라면,
    234 추가 설정이 필요합니다. 여러분의 프로젝트(또는 어딘가에)에 아래와 같은 내용을 포함하는
    235 별도의 파일을 생성하십시오:
     222추가 설정이 필요합니다. 프로젝트(또는 어딘가에)에 아래와 같은 내용을 포함하는
     223별도의 파일을 생성하십시오
    236224{{{
    237225import os
    238226os.environ['PYTHON_EGG_CACHE'] = '/some/directory'
    239227}}}
    240 여기, {{{/some/directory}}} 는 아파치 웹서버 프로세스가
    241 쓰기를 하는 디렉토리입니다.
    242 egg가 필요로 하는 코드들의 압축을 푸는 위치로 사용됩니다.
    243 
    244 그리고나서 여러분은 mod_python에게 다른 무엇보다도 먼저
    245 이 파일을 import 할것을 지시해야 합니다.
     228
     229여기, {{{/some/directory}}} 는 아파치 프로세스가 쓰기 권한을 가진 디렉토리입니다.
     230egg가 사용될 때 egg 코드들이 임시로 압축이 해제되는 곳으로 사용됩니다.
     231
     232그리고나서 mod_python에게 다른 무엇보다도 먼저 이 파일을 import할 것을 지정해야 합니다.
    246233이는 mod_python에 [http://www.modpython.org/live/current/doc-html/dir-other-pimp.html PythonImport] 지시자를 사용하면 됩니다.
    247 여러분은 mod_python에 위에서 설명한대로
     234mod_python에는 위에서 설명한대로
    248235{{{PythonInterpreter}}} 지시자를
    249236명시해둬야 합니다
    250 (이 경우 여러분은 다중 설치를 사용 하지 않더라도 이것을 해야 합니다). 그리고 나서 {{{PythonImport}}} 줄을 메인 서버 설정에 추가 하십시오(즉, {{{Location}}} 또는 {{{VirtualHost}}} 섹션의 바깥). 예를 들어:
     237(이 경우 다중 설치를 사용 하지 않더라도 이것을 해야 합니다). 그리고 나서 {{{PythonImport}}} 줄을 메인 서버 설정에 추가 하십시오(즉, {{{Location}}} 또는 {{{VirtualHost}}} 섹션의 바깥). 예를 들어
    251238{{{
    252239PythonInterpreter my_django
    253240PythonImport /path/to/my/project/file.py my_django
    254241}}}
    255 여러분은 [http://www.modpython.org/live/current/doc-html/dir-other-pimp.html mod_python 매뉴얼]에서 설명한 대로
    256 절대 경로(또는 일반적인 도트 import 경로)를 사용할 수 있습니다. 우리는 여러분의
    257 프로젝트에 접근 하기 위해 파이썬 path 수정이 필요할 수도 있는데,
     242[http://www.modpython.org/live/current/doc-html/dir-other-pimp.html mod_python 매뉴얼]에서 설명한 대로
     243절대 경로(또는 일반적인 도트 import 경로)를 사용할 수 있습니다. 우리는 프로젝트에 접근 하기 위해 파이썬 path 수정이 필요할 수도 있는데,
    258244{{{PythonImport}}} 라인이 처리되는 시점에서는 이것이 아직  완료가 되지 않았기 때문에
    259245위의 예제에서 우리는 절대 경로를 사용했습니다.
     
    262248= 에러 처리 =
    263249
    264 여러분이 아파치/mod_python을 사용할 때, 에러는 장고에 의해 잡힙니다 - 다른 말로,
    265 에러를 아파치 레벨에 전파 하지 않으며, 아파치 {{{error_log}}} 에도
    266 나타나지 않습니다.
    267 
    268 이에 대한 예외는 여러분의 장고 프로그램에서 무언가 정말 있을 수 없는 일이
    269 발생한 경우입니다. 이 경우, 여러분은 브라우저에서 "Internal Server Error" 페이지를
    270 보게 될 것이며 full Python traceback 이 아파치 {{{error_log}}} 파일에 남겨집니다.
    271 {{{error_log}}} traceback은 여러줄에 걸쳐 출력됩니다. (예, 이것은
    272 보기 흉하고 읽기도 어렵습니다만, 이게 mod_python 이 처리하는 방식입니다.)
     250아파치 mod_python을 사용할 때, 에러는 장고에서 잡힙니다 - 즉, 장고에서 발생하는 에러는
     251아파치로 전달되지 않고, 당연히 아파치 {{{error_log}}} 에도 나타나지 않습니다.
     252
     253단, 예외가 있다면 장고 애플리케이션에서 무언가 정말 있을 수 없는 일이
     254발생한 경우입니다. 이 경우, 브라우저에서 "Internal Server Error" 페이지가
     255나타나면서 파이썬 에러메세지가 아파치 {{{error_log}}} 파일에 남겨집니다.
     256이 에러메세지는 여러줄에 걸쳐 출력됩니다. (예, 이것은 보기 흉하고 읽기도 어렵습니다만, 이게 mod_python 이 처리하는 방식입니다.)
    273257
    274258= segment fault 가 났다면 =
    275259
    276 만약 아파치가 segment fault 를 낸다면, 두가지 예상 원인이 있는데,
    277 둘다 장고 자체의 문제가 아닙니다.
    278 
    279     1. 여러분의 파이썬 코드가 아파치에 임베딩된 버전과
    280       충돌나는 "pyexpat" 모듈을 임포팅 하고 있기 때문일 수 있습니다.
    281       전체 정보는 [http://www.dscpl.com.au/articles/modpython-006.html Expat Causing Apache Crash] 를 보십시오.
    282     2. 여러분이 데이터베이스 후단부로 MySQL을 사용하여 mod_python과 mod_php를
     260만약 아파치가 segment fault 에러를 낸다면, 예상되는 두가지 원인이 있습니다. 둘다 장고 자체의 문제가 아닙니다.
     261
     262    1. 파이썬 코드가 아파치에 올려진 버전과 충돌나는 "pyexpat" 모듈을 임포팅 하고 있기
     263         때문일 수 있습니다. 자세한 정보는 [http://www.dscpl.com.au/articles/modpython-006.html Expat Causing Apache Crash] 를 보십시오.
     264    2. 데이터베이스로 MySQL을 사용하여 mod_python과 mod_php를
    283265      동일 아파치 인스턴스에서 실행중이기 때문일 수 있습니다. 어떤 경우,
    284       이는 PHP와 Python의 MySQL 후단부에서의 버전 충돌에 의한 것으로 알려진
    285       mod_python 이슈를 일으킵니다. [http://modpython.org/FAQ/faqw.py?req=show&file=faq02.013.htp mod_python FAQ entry]에 전체 정보가 있습니다.
    286 
    287 만약 여러분에게 mod_python 설정 문제가 계속된다면,
    288 장고 프레임워크 없이, mod_python 기본 사이트가 잘 작동하도록 하십시오.
    289 이는 mod_python 에 한정된 문제를 고립시키는 쉬운 방법입니다.
     266      이는 PHP와 Python의 MySQL의 버전 충돌에 의한 것으로 알려진 mod_python 버그를
     267                발생시킵니다. [http://modpython.org/FAQ/faqw.py?req=show&file=faq02.013.htp mod_python FAQ entry]에 전체 정보가 있습니다.
     268
     269mod_python에서 문제가 계속된다면, 장고를 제외한 채로, mod_python만 설정해서 기본
     270사이트가 잘 작동하는지 확인해봅니다. 이렇게 해서 문제를 고립시켜서 원인을 파악할 수
     271있습니다.
    290272[http://www.dscpl.com.au/articles/modpython-001.html Getting mod_python Working]에 이 절차가 자세하게 있습니다.
    291273
    292 다음 단계는 테스트 코드를 열어서 여러분이 사용하는 장고 관련 코드 —
    293 view, model, URLconf, RSS 설정 따위 등에 대한 모든 import 들을 추가 하십시오.
    294 이들 import들을 여러분의 테스트 핸들러 함수에 넣고 브라우저에서
    295 여러분의 테스트 URL에 접속하십시오. 만약 이것이 문제를 발생시킨다면,
    296 import 한 장고 코드들이 문제를 일으키는 것임이 확인된 것입니다. 크래시
     274다음 단계는 테스트 코드를 열어서 사용하는 장고 관련 코드 —
     275view, model, URLconf, RSS 설정 따위 등에 대한 모든 import들을 추가 하십시오.
     276이들 import들을 테스트 핸들러 함수에 넣고 브라우저에서
     277테스트 URL에 접속하십시오. 만약 이것이 문제를 발생시킨다면,
     278import 한 장고 코드들이 문제를 일으키는 것임이 확인된 것입니다. 문제
    297279멈출때까지 import 를 점차적으로 줄여나가서, 문제를 발생시키는
    298280특정 모듈을 찾습니다. 필요하다면 해당 모듈 안으로 더 들어가
Back to Top