1

Debian マシンに apache2、mod_wsgi をインストールし、これをapache2.confファイルに追加しました。

WSGIScriptAlias /home/zurelsoft/Documents/workspace/genalytics/genalytics/wsgi.py
WSGIPythonPath /home/zurelsoft/Documents/workspace/genalytics

<Directory /home/zurelsoft/Documents/workspace/genalytics/genalytics>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

私のプロジェクト名はgenalytics. Django 1.5 を使用しています。すでに wsgi.py が利用可能です。mod_wsgi を使用して django を実行するにはどうすればよいですか。静的ファイルのパスはどこに指定すればよいですか。ありがとう

編集

私はこれを私のapache.confファイルに持っています:

Listen 8000

Alias /static/ /home/zurelsoft/Documents/workspace/genalytics/fileupload/static

<Directory /home/zurelsoft/Documents/workspace/genalytics/fileupload/static>
Order deny,allow
Allow from all
</Directory>


WSGIScriptAlias / /home/zurelsoft/Documents/workspace/genalytics/fileupload/static


<Directory /home/zurelsoft/Documents/workspace/genalytics/fileupload/static>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>

しかし、Apacheを起動しようとすると、次のエラーが発生します。

(98) アドレスは既に使用されています: make_sock: アドレス 0.0.0.0:80 にバインドできませんでした リッスンしているソケットがありません。シャットダウンしています ログを開くことができません アクション「開始」に失敗しました。

4

3 に答える 3

1

すべてを正しくセットアップしたと仮定すると、やるべきことはあまりありません。

アプリケーション ルートで、django.wsgi という名前のファイルを作成し、次のコードを記述します。

import os
import sys

sys.path.append('/path/to/your/app')

os.environ['PYTHON_EGG_CACHE'] = '/path/to/your/app/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

ここで、静的ファイルやその他のファイルを提供するために apache 構成に仮想ホストを追加し、次の行を追加します。

   WSGIScriptAlias / /path/to/your/app/django.wsgi

   <Directory /path/to/your/app>
      Order allow,deny
      Allow from all
   </Directory>

   Alias /robots.txt /path/to/your/app/robots.txt
   Alias /favicon.ico /path/to/your/app/favicon.ico
   Alias /images /path/to/your/app/images
   Alias /static /path/to/your/app/static

   ErrorLog /path/to/your/app/logs/error.log
   CustomLog /path/to/your/app/access.log combined

Apacheを再起動することを忘れないでください。完全な情報については、これこのリンクを確認してください。また、仮想ホストを追加する方法を知る必要がある場合は、こちらを確認してください。

それが役立つことを願っています。

于 2013-06-12T05:16:27.657 に答える
0

Web には多くのハウツーがあり、そのほとんどは現在の Django バージョンで動作しますが、Django の現在のドキュメントに準拠していないことに不満があり、次の手順に従う最も簡単な方法を見つけました。

https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/

そこには、「Django バージョン 1.4 以降、startproject によって wsgi.py が作成されます」と書かれています。これは次のようになります。

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

これで、aptitude でインストールした mod_wsgi に接続するのはwsgi.pyになり、 django.wsgiは非推奨になりました。

ここで、apache サイトを構成するdebian の方法を尊重したいので、次のコードを httpd.conf に入れる代わりに、django-docs が提案するように、/etc/apache2/sites-available にdj-myappファイルを作成し、それを有効にします。 a2ensite dj-myappa2dissite defaultでデフォルトを無効にします。WSGI ディレクティブは、virtualhost セクションの前に記述されます。

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com
<VirtualHost *:80>
    <Directory /path/to/mysite.com/mysite>
      <Files wsgi.py>
            Order deny,allow
            Allow from all
      </Files>
    </Directory>
</VirtualHost>

これは Apache 2.2x 用で、2.4 以降ではAllow from allの代わりにRequire all grant を使用します。

最後に、django ドキュメントで説明されているように、静的ファイル サービスを構成します。ディレクティブもdj-myappに配置されます。管理静的ファイルの場合、この行は私にとってはうまくいきました:

Alias /static/admin /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin
于 2014-02-15T19:44:56.910 に答える