2013-05-21 1 views
1

mod_python을 사용하여 Apache의 배후에 cherrypy를 배포 할 때 문제가 있습니다.mod_python을 사용하여 Cherrypy behing apache

#!/usr/bin/env python 
    2 # -*- coding: utf8 -*- 
    3 
    4 import os.path 
    5 import cherrypy 
    6 from mako.template import Template 
    7 from mako.lookup import TemplateLookup 
    8 from mako import exceptions 
    9 from mako.exceptions import RichTraceback 
10 from ReadFromDB import * 
11 from DeleteFromDB import * 
12 from InsertToDB import * 
13 from BasePage import BasePage 
14 from ModifyEntryDB import * 
15 #from cherrypy.process.plugins import Daemonizer 
16 #from cherrypy import Application 
17 
18 current_dir = os.path.dirname(os.path.abspath(__file__)) 
19 mainlookup = TemplateLookup(directories=['./templates'], output_encoding='utf-8', input_encoding='utf-8', en coding_errors='replace', format_exceptions = True) 
20 
21 class Main(BasePage): 
22   readfromdb = ReadFromDB() 
23   deletefromdb = DeleteFromDB() 
24   inserttodb = InsertToDB() 
25   modifyentrydb = ModifyEntryDB() 
26 
27   def index(self): 
28     try: 
29       mIndextemplate = mainlookup.get_template("main_index.txt") 
30       return mIndextemplate.render() 
31     except: 
32 
33       traceback = RichTraceback() 
34       for (filename, lineno, function, line) in traceback.traceback: 
35         print "File %s, line %s, in %s" % (filename, lineno, function) 
36         print line, "\n" 
37       print "%s: %s" % (str(traceback.error.__class__.__name__), traceback.error) 
38 
39   index.exposed = True 
40 
41 #config = { 
42 #  '/bootstrap/css':{ 
43 #    'tools.staticdir.on': True, 
44 #    'tools.staticdir.dir': os.path.abspath(os.path.join(os.path.dirname(__file__), 'static')) 
45 #  } 
46 #} 
47 def start(): 
48   cherrypy.tree.mount(Main(),config="/development/webadmin-interface/webadmin.conf") 
49   cherrypy.engine.start() 
50 
51 
52 
53 #cherrypy.quickstart(Main(), "/", "webadmin.conf") 

하고 다음 사이트의 첫 번째 새로 고침 (403)가 금지하고있는 전체 웹 사이트, 그리고 두 번째 I을 시작

4 <VirtualHost *> 
    5   ServerAdmin [email protected] 
    6   ServerName pyth.madphoto.eu 
    7   DocumentRoot /development/webadmin-interface/ 
    8   # Indexes + Directory Root. 
    9   <Location /> 
10     PythonPath "sys.path+['/development/webadmin-interface']" 
11     SetHandler python-program 
12     PythonHandler cherrypy._cpmodpy::handler 
13     PythonOption cherrypy.setup main::start 
14     PythonDebug On 
15   </Location> 
16 
17   # Logfiles 
18   ErrorLog /www/madphoto.eu/pyth/logs/error.log 
19   CustomLog /www/madphoto.eu/pyth/logs/ccess.log combined 
20 </VirtualHost> 

이 cherrypy 코드 :

나는이 아파치 구성이 아파치 오류 로그에 도착하십시오

[21/May/2013:11:48:38] MOD_PYTHON Traceback (most recent call last): 
    File "/usr/lib/pymodules/python2.6/cherrypy/_cpmodpy.py", line 139, in handler 
    setup(req) 
    File "/usr/lib/pymodules/python2.6/cherrypy/_cpmodpy.py", line 84, in setup 
    func() 
    File "/development/webadmin-interface/main.py", line 49, in start 
    cherrypy.engine.start() 
    File "/usr/lib/pymodules/python2.6/cherrypy/process/wspbus.py", line 184, in start 
    self.publish('start') 
    File "/usr/lib/pymodules/python2.6/cherrypy/process/wspbus.py", line 147, in publish 
    output.append(listener(*args, **kwargs)) 
    File "/usr/lib/pymodules/python2.6/cherrypy/_cpserver.py", line 90, in start 
    ServerAdapter.start(self) 
    File "/usr/lib/pymodules/python2.6/cherrypy/process/servers.py", line 53, in start 
    wait_for_free_port(*self.bind_addr) 
    File "/usr/lib/pymodules/python2.6/cherrypy/process/servers.py", line 251, in wait_for_free_port 
    raise IOError("Port %r not free on %r" % (port, host)) 
IOError: Port 8080 not free on '127.0.0.1' 

그러나 작동하지 않으며 많은 m이 뒤 따른다. anuals (나는 다른 설정을 시도하지만 여전히 작동하지 않습니다)

나는 cherrypy 3.1.2-1, apache2 서버를 가지고 있습니다.

cherrypy의 독립 실행 형 시작 내장 서버에서 완벽하게 작동합니다.

도와 주실 수 있습니까? 감사!

답변

0

당신은 아파치와 함께 cherrypy 서버를 시작, 시작 기능은 구성 및 응용 프로그램을 탑재하지만 서버를 시작하지 않는 것, 그것은 다음과 같아야합니다

def start(): 
    cherrypy.tree.mount(Main(), 
         config="/development/webadmin-interface/webadmin.conf") 

모듈을 _cpmodpy 더 많은 정보를 와 쉽게 읽을 수 : 당신은 mod_wsgi에를 사용하는 것이 좋습니다 일반적인 권장 사항으로

python -m pydoc cherrypy._cpmodpy 

, mod_python을가 전혀 관리가되지 않고 및 mod_wsgi에 찬성되지 않는 것으로 간주됩니다.

+0

감사합니다 cyraxjoe, 멀티플 시작과 함께 내 문제가 해결되었지만 지금은 아파치 로그 (가상 호스트와 글로벌 용 로컬)에 오류가없는 서버의 흰색 페이지 (절대적으로 빈 데이터) 만 표시됩니다. 이유는 알지 못합니다. – Levi

+0

--- 업데이트 - HEAD 요청을 보내려 할 때 텔넷을 사용하면 400 오류가 발생하고/GET으로 바이너리 쓰레기를받습니다 W ߟ7 외부 호스트가 연결을 닫습니다 – Levi

+0

문제가 해결되었습니다. 이 문제는 시스템의 경로와 관련이 있습니다. cherrypy와 mako는 템플릿 경로를 찾지 못했습니다. 절대 경로를 사용했는데 이제는 괜찮습니다. – Levi

관련 문제