4

私が持っているもの:

異なるドメインを持つ 4 つの仮想サーバーを持つ Apache http サーバー:

www.mydomain.com points to /var/www/mydomain/htdocs (php code)

そしてそれは動作します。他のすべてのドメインは無関係です。

別のマシンで、2 つのアプリを含む django プロジェクトを設計しました。これは、django のビルトイン サーバーでうまく動作します。

必要なもの:

www.mydomain.com pointing to /var/www/mydomain/htdocs (php code)
www.mydomain.com/recsys pointing to /opt/repsys (django code)

PHP コードをルートに保持し、django を /repsys 内にインストールしたいと考えています。

django コードをルートに配置できますが、/repsys 内に配置しようとすると、2 つの問題が発生します。

  • settings.py ファイルのすべての URL に /repsys を配置する必要がありました (これは問題ではありませんが、私には奇妙です)。
  • そして、djangoコードからこのエラーがあります:

    引数 '(u'viewproject',)' およびキーワード引数 '{}' を持つ 'ajax' の逆が見つかりません

これはURLの変更によるものであることがわかります(現在は/ repsysが含まれています)。djangoはこのURLを逆にする方法を知りませんが、それを修正する方法がわかりません...

私のジャンゴは: 1.5.1

ここに私のwsgi.pyがあります

import os, sys
sys.path.append('/opt/repsys')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "repsys.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

そして、この仮想サーバーの apache conf ファイル:

LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix /var/run/wsgi
#WSGIPythonPath /opt/repsys/

<VirtualHost *:80>
    WSGIDaemonProcess repsyssite display-name=%{GROUP}
    WSGIProcessGroup repsyssite

    ServerAdmin blahhh@gmail.com
    ServerName  www.mydomain.com

    DocumentRoot "/var/www/mydomain/htdocs"

    WSGIScriptAlias /reprep /opt/repsys/repsys/wsgi.py
    Alias /reprep/static /opt/repsys/static_serve
    Alias /reprep/media /opt/repsys/media
    Alias /admin_media  /home/myuser/Django-1.5/django/contrib/admin/media

    <Directory opt/repsys>
        Order allow,deny
        Allow from all
    </Directory>

# Logfiles
    ErrorLog  /var/www/logs/glob/error.log
    CustomLog /var/www/logs/glob/access.log combined

</VirtualHost>

私のメインの url.py には以下が含まれます:

url(r'^report/', include('report.urls', namespace="report")),

そして私の report/url.py には以下が含まれます:

url(r'^(?P<fn>\w+)/ajax/$', views.ajax, name='ajax'),

そして、プロジェクトをルートに置くと機能するが、サブフォルダー内にあると失敗する行は次のとおりです。

$('#viewreportdiv').load("{% url 'report:ajax' 'viewproject' %}", {proj: id});

誰かがそれを修正する方法を指摘できますか?

4

1 に答える 1

3

あなたがまだこれに対する答えを探しているかどうかはわかりませんが、私はついにこれを自分で機能させたので、ここに投稿すると思いました.

Graham Dumpleton がhttp://blog.dscpl.com.au/2012/10/requests-running-in-wrong-django.htmlで行った記事を使用して、これを解決できました。

最終的に、私の/etc/httpd/conf.d/django.confファイルは次のようになりました

LoadModule wsgi_module modules/mod_wsgi.so

WSGIDaemonProcess mysite python-path=/var/www/html/mysite:/var/www/html/mysite/venv/lib/python2.7/site-packages
WSGISocketPrefix run/wsgi
WSGIScriptAlias /mysite /var/www/html/mysite/mysite_www/wsgi.py process-group=mysite

Alias /static/ /var/www/html/static/
Alias /docs/ /var/www/html/mysite/docs/_build/html/

<Directory /var/www/html/mysite/mysite_www>
<Files wsgi.py>
Allow from all
Order deny,allow
</Files>
</Directory>

WSGIScriptAliasここでは、 を使用するのではなく、 で指定された Apache サブディレクトリを使用してい<VirtualHost>ます。

そこから、次を介して php ページにアクセスhttp://myserver.com/し、django サイト vis にアクセスできますhttp://myserver.com/mysite/

Django (1.7) をブラウジングするときは必ず末尾のスラッシュを使用する必要があったことに注意してください。そうしないと、メイン ページにアクセスできますが、テンプレートの URL 反転が適切に処理されず、子ページにアクセスできません。

于 2015-01-30T21:26:34.407 に答える