2013-05-14 4 views
0

apache2와 mod_wsgi가 설치된 우분투 12.04를 사용합니다. 로컬 컴퓨터에서 bottlepy 및 PHP를 사용하고 싶습니다.. 다른 사람이 이미 Apache mod_wsgi and php in the same domain과 같은 문제를 제기 한 것을 알고 있습니다. 하지만 누군가 내 문제가 다르기 때문에 새로운 질문을하라고 제안합니다.동일한 컴퓨터에서 bottlepy와 php를 사용하십시오.

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /var/www 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 
    <Directory /var/www/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride None 
     Order allow,deny 
     allow from all 
    </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> 

    ErrorLog ${APACHE_LOG_DIR}/error.log 

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

    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    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> 

</VirtualHost> 

<VirtualHost *> 
    DocumentRoot /home/gofrendi/workspace/kokoropy 
    ServerName oraiso 
    WSGIDaemonProcess kokoropy user=www-data group=www-data processes=1 threads=5 
    WSGIScriptAlias /kokoropy /home/gofrendi/workspace/kokoropy/kokoro.wsgi 
    <Directory /home/gofrendi/workspace/kokoropy> 
     WSGIProcessGroup kokoropy 
     WSGIApplicationGroup %{GLOBAL} 
     Order deny,allow 
     Allow from all 
    </Directory> 
</VirtualHost> 

첫 번째 가상 호스트는 PHP를 위해, 그리고 두 번째는 bottlepy입니다 :

나는이에 변화 /etc/apache2/sites-available/default을했습니다. 내 bottlepy 응용 프로그램을 /home/gofrendi/workspace/kokoropy에 넣습니다. 예상대로 여전히 작동하는

sudo a2ensite default 
sudo service apache2 restart 

내 PHP 스크립트를 사용하여

import os 
sys.path = [os.path.dirname(__file__)] + sys.path 

from kokoropy import kokoro_init 
PWD = os.path.dirname(os.path.abspath(__file__)) 
APP_DIRECTORY = 'applications' 
APPLICATION_PATH = os.path.join(PWD, APP_DIRECTORY)  
application = kokoro_init(application_path = APPLICATION_PATH, run = False) 

나는했습니다 구성을 가능하게 할 : 그리고이 스크립트가 들어있는 같은 디렉토리에 kokoro.wsgi 있습니다. 하지만, 내 bottlepy 스크립트에 액세스하는 방법을 모르면 언제든지.

단지

<VirtualHost *> 
    DocumentRoot /home/gofrendi/workspace/kokoropy 
    ServerName oraiso 
    WSGIDaemonProcess kokoropy user=www-data group=www-data processes=1 threads=5 
    WSGIScriptAlias /kokoropy /home/gofrendi/workspace/kokoropy/kokoro.wsgi 
    <Directory /home/gofrendi/workspace/kokoropy> 
     WSGIProcessGroup kokoropy 
     WSGIApplicationGroup %{GLOBAL} 
     Order deny,allow 
     Allow from all 
    </Directory> 
</VirtualHost> 

구성 있도록 또한, /etc/apache2/sites-available/default의 PHP 부분을 제거하려고했습니다하지만 난 여전히 bottlepy 작업을 얻을 수 없습니다. 단지 404가 없다는 것을 보여줍니다.

누구나 같은 경험이 있습니까? 어떻게 작동 시키는가? 감사합니다. .

+0

어떤 URL을 사용하여 PHP 사이트에 액세스 했습니까? 표시 한 내용에 따라 Python 사이트는'http : // oraiso/kokoropy'로 액세스해야합니다. 그게 당신이 사용하고있는 것입니까? 'oraiso'가 호스트에 대해 해결되는지 또는 실제로 ServerName에 대해 FQDN을 사용해야하는지 여부. –

+0

나는 파이썬을 위해서 php와 oraiso를 위해 localhost를 원한다. – goFrendiAsgard

+0

그러나 정확한 URL은 파이썬 사이트를 위해 사용하고 있는가? 너는 그 질문에 대답하지 않았다. –

답변

0

문제가 해결되었습니다.

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName localhost 

    DocumentRoot /var/www 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 
    <Directory /var/www/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride None 
     Order allow,deny 
     allow from all 
    </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> 

    ErrorLog ${APACHE_LOG_DIR}/error.log 

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

    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    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> 


    # THIS IS WHERE I START TO EDIT IT: 
    # It tells apache about wsgi existance 
    WSGIDaemonProcess kokoropy user=www-data group=www-data processes=1 threads=5 
    WSGIScriptAlias /kokoropy /home/gofrendi/workspace/kokoropy/kokoro.wsgi 
    <Directory /home/gofrendi/workspace/kokoropy> 
     WSGIProcessGroup kokoropy 
     WSGIApplicationGroup %{GLOBAL} 
     Options ExecCGI 
     Order deny,allow 
     Allow from all 
    </Directory> 

</VirtualHost> 

이 구성 localhost/kokoropy이 WSGI에 의해 처리되어야한다는 말 : 우선 나는이 NTO 설정 (또는 내 경우 /etc/apache2/sites-available/default에) httpd.conf를 변경합니다.

내 wsgi 스크립트는 /home/gofrendi/workspace/kokoropy/kokoro.wsgi에 있습니다. kokoro.wsgi 내용은 다음과 같다 : 당신이 WSGI에 bottlepy 접근하지만, PHP를 액세스 할 때 오류를 찾을 때, 내부 단절 오류를 발견하는 경우

import os, sys 
os.chdir(os.path.dirname(__file__)) 
sys.path = [os.path.dirname(__file__)] + sys.path 

from bottle import default_app 
@route('/') 
def index(): 
    return 'run with apache' 
application = default_app() 

, 그건 아마 실수입니다. 아파치 로그를 열면 (내 경우에는 여기에 : /var/log/apache2/error.log)

관련 문제