2009-10-12 4 views
0

이전 서버를 새로운 서버로 마이그레이션하려고했지만 mod_python에 몇 가지 문제가있었습니다. 어떤mod_python에서 apache 서버를 올바르게 실행하는 데 문제가 있습니다.

[Mon Oct 12 13:25:58 2009] [notice] mod_python: (Re)importing module 'mod_python.publisher' 
[Mon Oct 12 13:25:58 2009] [notice] [client 212.166.58.166] Publisher loading page /home/www/auction-in-europe.com/aie/index.py 

난 정말이 :

NameVirtualHost * 
<VirtualHost *> 


DocumentRoot /var/www/ 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride all 
</Directory> 
<Directory "/var/www/auction-in-europe.com/aie"> 
    Options Indexes FollowSymLinks MultiViews 
    #AddHandler mod_python .py 
    PythonOption mod_python.legacy.importer * 
    SetHandler mod_python 
       PythonHandler mod_python.publisher 
     PythonDebug On 
    AllowOverride all 
    Order allow,deny 
    allow from all 
    # This directive allows us to have apache2's default start page 
       # in /apache2-default/, but still have/go to the right place 
</Directory> 

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
<Directory "/usr/lib/cgi-bin"> 
    AllowOverride None 
    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch 
    Order allow,deny 
    Allow from all 
</Directory> 

ScriptAlias /bin/ /home/www/auction-in-europe.com/aie/bin/ 
ServerAdmin [email protected] 
ErrorLog /home/logs/auction-in-europe.com/error_log 
CustomLog /home/logs/auction-in-europe.com/access_log combined 
ServerName auction-in-europe.com 
ServerAlias www.auction-in-europe.com antique-in-europe.com www.antique-in-europe.com art-in-europe.com www.art-in-europe.com en.art-in-europe.com 
ServerAlias en.antique-in-europe.com en.auction-in-europe.com fr.antique-in-europe.com fr.art-in-europe.com fr.auction-in-europe.com auction.tinyerp.org 
#RewriteEngine on 
#RewriteRule ^/(.*)\.html /index.py [E=pg:$1] 

ErrorLog /var/log/apache2/error.log 

# Possible values include: debug, info, notice, warn, error, crit, 
# alert, emerg. 
LogLevel warn 

CustomLog /var/log/apache2/access.log combined 
ServerSignature On 

Alias /doc/ "/usr/share/doc/" 
<Directory "/usr/share/doc/"> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride None 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.0/255.0.0.0 ::1/128 
</Directory> 
<Directory /home/www/postfixadmin> 
</Directory> 

</VirtualHost> 

로그 꽤 비어 : 여기

http://auction.tinyerp.org/auction-in-europe.com/aie/

우리의 아파치 구성입니다 :

문제는이 웹 페이지 아래 아이디어를 어디에서 시작해야하는지.

도와주세요!

+0

"/var/www/auction-in-europe.com/aie"에 어떤 파일이 있습니까? 그것은 index.py를 포함합니까? 그 파일의 내용은 무엇입니까? – Mark

답변

0

index.py입니까? 나는 당신이 당신의 설치를 뒤섞고 있다고 생각합니다. 자체 처리기를 작성하고 싶지 않으면 "PythonHandler mod_python.publisher"를 사용하십시오.

def handler(req): 
    return app.run(apacheapp.Request(req)) 

이 문제-촬영에 다소 어렵지만 나는 당신의 아파치 설정이 가까이 있어야한다고 생각 :

<Directory "/var/www/auction-in-europe.com/aie"> 
    Order allow,deny 
    Allow from all 
    SetHandler python-program .py 
    PythonHandler index ## or what ever the above file is called without the .py 
    PythonDebug On 
    </Directory> 

이 모든 것 방금 게시 된 파일은 핸들러 라인을 포함 "/var/www/auction-in-europe.com/aie"에 대한 요청은 index.py에서 처리합니다.

0

#!/usr/bin/python 
import os, sys 
base_dir = "/home/www/auction-in-europe.com/aie/" 
sys.path.insert(0, base_dir) 
import albatross 
import sql_db 
from albatross.apacheapp import Request 
from albatross import apacheapp 
from albatross.template import Content, EmptyTag, EnclosingTag 
import string 
import common 
class AppContext(albatross.SessionFileAppContext): 
    def __init__(self, app): 
     albatross.SessionFileAppContext.__init__(self, app) 
#  path = os.environ.get('PATH_INFO','').split('/') 
#  path = filter(lambda x: x, path) 
#  self.module = path.pop(0) 
#  self.path = {} 
#  while path: 
#   val = path.pop() 
#   self.path[ path.pop() ] = val 
    def load_template_once(self, template): 
     new_template = os.path.join(self.lang_get(),template) 
     return albatross.SessionFileAppContext.load_template_once(new_template) 
    def load_template(self, template): 
      new_template = os.path.join(self.lang_get(),template) 
     return albatross.SessionFileAppContext.load_template(self,new_template) 
    def run_template_once(self, template): 
     new_template = os.path.join(self.lang_get(), template) 
     return albatross.SessionFileAppContext.run_template_once(self,new_template) 
    def run_template(self, template): 
     new_template = os.path.join(self.lang_get(), template) 
     return albatross.SessionFileAppContext.run_template(self,new_template) 
    def req_get(self): 
     return self.current_url()[len(self.base_url())+1:] 
    def args_calc(self): 
     path = self.current_url()[len(self.base_url())+1:].split('/') 
     path = filter(lambda x: x, path) 
     if not len(path): 
      path=['index'] 
     self.module = path.pop(0) 
     self.path = {} 
     while path: 
      val = path.pop() 
      self.path[ path.pop() ] = val 
    def lang_get(self): 
     if self.request.get_header('host')[:3] in ('fr.','en.'): 
      return self.request.get_header('host')[:2] 
     try: 
      language = self.request.get_header('Accept-Language') 
      if language: 
       new_lang = language[:2] 
       if new_lang in ('fr','en'): 
        return new_lang 
     except: 
      return 'en' 
     return 'en' 
    def hostname_get(self): 
     if self.request.get_header('host')[-17:]=='art-in-europe.com': 
      return 'art' 
     elif self.request.get_header('host')[-21:]=='antique-in-europe.com': 
      return 'antique' 
     else: 
      return 'auction' 
    def module_get(self): 
     self.args_calc() 
     return self.module 
    def path_get(self, key): 
     self.args_calc() 
     return self.path[key] 
class App(albatross.ModularSessionFileApp): 
    def __init__(self): 
     albatross.ModularSessionFileApp.__init__(self, 
      base_url = '/index.py', 
      module_path = os.path.join(base_dir, 'modules'), 
      template_path = os.path.join(base_dir, 'template'), 
      start_page = 'index', 
      secret = '(=-AiE-)', 
      session_appid='A-i-E', 
      session_dir='/var/tmp/albatross/') 
    def create_context(self): 
     return AppContext(self) 
class alx_a(albatross.EnclosingTag): 
    name = 'alx-a' 
    def to_html(self, ctx): 
     ctx.write_content('') 
     albatross.EnclosingTag.to_html(self, ctx) 
     ctx.write_content('') 
# Escape text for attribute values 
def escape_br(text): 
    text = str(text) 
    text = string.replace(text, '&', '&') 
    text = string.replace(text, '', '>',) 
    text = string.replace(text, '"', '"') 
    text = string.replace(text, "'", '') 
    text = string.replace(text, "\n", '
') return text class alx_value(EmptyTag): name = 'alx-value' def __init__(self, ctx, filename, line_num, attribs): EmptyTag.__init__(self, ctx, filename, line_num, attribs) #self.compile_expr() def to_html(self, ctx): value = ctx.eval_expr(self.get_attrib('expr')) format = self.get_attrib('date') if format: value = time.strftime(format, time.localtime(value)) ctx.write_content(value) return lookup_name = self.get_attrib('lookup') if lookup_name: lookup = ctx.get_lookup(lookup_name) if not lookup: self.raise_error('undefined lookup "%s"' % lookup_name) lookup.lookup_html(ctx, value) return if self.has_attrib('noescape'): ctx.write_content(str(value)) else: ctx.write_content(escape_br(value)) app = App() app.register_tagclasses(alx_a) app.register_tagclasses(alx_value) def handler(req): return app.run(apacheapp.Request(req))