3

私のコンピューターは Ubuntu 12.04 を実行しており、このチュートリアルに従って Django を使い始めました。 10-04/

このコマンドを実行し/srv/www/てプロジェクトを開始しようとしましたalexsudo django-admin.py startproject alex

次に、Apacheフォルダーとdjango.wsgiファイルを作成しました(/srv/www/alex/apache/django.wsgi

ツリー/srv/www/alex/

.
├── apache
│   └── django.wsgi
├── alex
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

2 directories, 6 files

アレックス Apache サイト:

<VirtualHost *:80>

    ServerName alex.djangoserver
    DocumentRoot /srv/www/alex

    <Directory /srv/www/alex>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIDaemonProcess alex.djangoserver processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup alex.djangoserver

    WSGIScriptAlias / /srv/www/alex/apache/django.wsgi

</VirtualHost>

Apache エラー ログの結果:

[error] [client 127.0.0.1] mod_wsgi (pid=28076): Exception occurred processing WSGI script '/srv/www/floqq/alex/django.wsgi'.
[error] [client 127.0.0.1] Traceback (most recent call last):
[error] [client 127.0.0.1]   File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 219, in __call__
[error] [client 127.0.0.1]     self.load_middleware()
[error] [client 127.0.0.1]   File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 39, in load_middleware
[error] [client 127.0.0.1]     for middleware_path in settings.MIDDLEWARE_CLASSES:
[error] [client 127.0.0.1]   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 184, in inner
[error] [client 127.0.0.1]     self._setup()
[error] [client 127.0.0.1]   File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup
[error] [client 127.0.0.1]     self._wrapped = Settings(settings_module)
[error] [client 127.0.0.1]   File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 95, in __init__
[error] [client 127.0.0.1]     raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[error] [client 127.0.0.1] ImportError: Could not import settings 'alex.settings' (Is it on sys.path?): No module named alex.settings

アップデート

Apache/Django.wsgi

import os
import sys

path = '/srv/www'
if path not in sys.path:
    sys.path.insert(0, '/srv/www')

os.environ['DJANGO_SETTINGS_MODULE'] = 'alex.settings'

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

4 に答える 4

3

wsgiファイルには次のものがあります。

sys.path.insert(0, '/srv/www')

os.environ['DJANGO_SETTINGS_MODULE'] = 'alex.settings'

で検索settings.py/srv/www/alex/ます。

投稿されたツリーによると、にあるため、これは失敗しsettings.pyます/srv/www/alex/alex/

したがって、3つのオプションがあります。

  1. 挿入されたパスを変更する
  2. ディレクトリ構造を変更する、または
  3. /srv/www/alex/を含むパッケージにリファクタリングしますalex.settings
于 2012-05-08T10:06:11.250 に答える
2

sudo開発中に必要なコマンドでは使用しないでください。ルートとして開発を行わないため、アクセス許可に関する他の問題が発生する可能性があります。

django を初めて使用する場合、従来の開発フレームワーク (PHP など) との最初の違いの 1 つは、開始するのに Web サーバーやデータベース サーバーが必要ないことです。Django には、コマンドで起動する Web サーバーなど、開発中に必要なものがすべて付属していますrunserver

開始するには、公式のチュートリアルも使用する必要があります。チュートリアルに慣れたら、プロジェクトを展開する方法をよりよく理解し、他の投稿を簡単にフォローできるようになります。

Apache でありmod_wsgi、プロジェクトをデプロイする場合には最適ですが、開発中は最適ではありません (または必要ではありません)。

次の手順から始めることをお勧めします。

  • まず、 を実行する必要がsudo apt-get install python-virtualenvあります。これにより、python/django の作業用に別の環境を作成できます。これは、root として実行する必要がある唯一のコマンドであり、1 回だけ実行されます。

  • では、始めましょう。ターミナルを開き、通常のユーザーとして次のように入力します。

    $ virtualenv --no-site-packages django_project

    これにより、最初のプロジェクトに使用できる新しい環境が作成されます。そのコマンドが実行されたら、次のように入力します。

    $ source django_project/bin/activate

    これにより、新しい仮想環境がアクティブになります。(django_project)プロンプトがリストされていることに気付くでしょう。これにより、仮想環境にいることがわかります。最後に、django をインストールする必要があります。

    (django_project) $ pip install django

django がインストールされたので、チュートリアルを開始できます。ターミナルを閉じる (または新しいタブまたはターミナル ウィンドウを開く) 場合は、 を実行して仮想環境を再アクティブ化できますsource django_project/bin/activatedeactivate仮想環境で入力すると、通常のシェルに戻ることができます。

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

于 2012-05-08T11:09:32.800 に答える
1

私は同じチュートリアルに従い、同じ問題を抱えていましたが、SOといくつかのwsgiドキュメントを見つけて、さらに先に進みました。重要なのは、wsgiファイル検索パスリストに2つのパスを追加することでしたが、settings.py他のアドバイスに従ってシャッフルした後のファイル構造によっては、実際には1つだけが右を指します...

base = os.path.dirname(os.path.dirname(__file__))
base_parent = os.path.dirname(base)
sys.path.append(base)
sys.path.append(base_parent)

私のページは今はうまく機能しています...cssと他の静的/メディアファイルを除いて。しかし、それはもう少し掘り下げることで簡単に修正できるはずです。

于 2012-07-07T05:03:40.030 に答える
1

あなたの wsgi.py を投稿できますか? 問題はそこにあるのかもしれません

私の wsgi.py、多分あなたを助けることができます。

import os
import sys

sys.path.append('/Applications/MAMP/htdocs/Django-1.4')
sys.path.append('/Applications/MAMP/htdocs/')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meishi.settings")
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
于 2012-05-08T09:59:00.050 に答える