1

私は Django を使用した Web 開発は初めてなので、ご容赦ください。よろしくお願いします。

Django 独自の Web サーバーと SQLite を学習しながら使用しています。ただし、次のプロジェクトでより複雑なセットアップを機能させるのに苦労しています。

私のセットアップ (Apache、Python、mod_wsgi、PostgreSQL サーバー、psycopg、および Django) は、私の知る限りでは正常に動作するはずです。Django プロジェクトを作成し、ブラウザーで localhost にアクセスしたところ、「Django へようこそ! うまくいきました!」というメッセージが表示されました。ページ。ただし、管理者を有効にしようとして localhost/admin/ にアクセスすると、次のエラーが表示されます (Django 独自の Web サーバーを使用すると、エラーなしでこのページにアクセスできることに注意してください)。

OperationalError at /admin/
FATAL: Role "_www" does not exist
Request Method: GET
Request URL: http://localhost/admin/
Django Version: 1.4.3
Exception Type: OperationalError
Exception Value: FATAL:  role "_www" does not exist
Exception Location: /Library/Python/2.7/site-packages/psycopg2/__init__.py in connect, line 178

PostgreSQL または psycopg で何かが正しくないと推測していますが、正確にはわかりません。これが私がここに来た方法です:

  1. Mac OS X Mountain Lion (10.8.2) の新規インストール。
  2. Mac App Store から Xcode をインストールし、Xcode の設定からコマンド ライン ツールをインストールしました。
  3. Apache または Python を更新しませんでした。デフォルトでインストールされているもの (Apache 2.2.22 および Python 2.7.2) を使用しています。
  4. ソースから mod_wsgi 3.4 をインストール

    $ curl -O http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
    $ tar xvfz mod_wsgi-3.4.tar.gz
    $ cd mod_wsgi-3.4
    $ ./configure
    $ make
    

    (注:「make」を機能させるには、次の行を入力する必要がありました:)

    $ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain
    $ make install
    
  5. httpd.conf を編集し、以下を追加して Apache を再起動します。

    LoadModule wsgi_module libexec/apache2/mod_wsgi.so
    
  6. Postgres.app ( http://postgresapp.com ) をダウンロードし、アプリケーション フォルダーにコピーして、PostgreSQL 9.2.2 をインストールしました。
  7. アプリを実行し、 ~/.bash_profile に以下を追加し (ターミナルが Mac OS X にプリインストールされているものではなく、デフォルトで Postgres.app の psql を使用するように)、django で使用する新しいデータベースを作成しました事業:

    PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
    
  8. ソースからpsycopg 2.4.6をインストールしました。ファイルをダウンロードして解凍し、解凍したディレクトリから:

    $ python setup.py install
    
  9. ソースから Django 1.4.3 をインストールしました。新しいプロジェクトと新しいアプリを作成しました。settings.py を編集して管理アプリのコメントを外し、データベース設定を入力しました (Postgres.app の Web サイト: http://postgresapp.com/documentation#toc_3で説明されているように)。データベース設定は次のようになります。

    DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'my_db_name',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
        }
    }
    
  10. urls.py を編集して、管理者関連の行のコメントを外しました。

    from django.conf.urls import patterns, include, url
    
    from django.contrib import admin
    admin.autodiscover()
    
    urlpatterns = patterns('',
        url(r'^admin/', include(admin.site.urls)),
    )
    
  11. https.conf の末尾に次のテキストを追加しました。

    WSGIScriptAlias / /Users/antubel/Projects/Django/antubel_com/antubel_com/wsgi.py
    WSGIPythonPath /Users/antubel/Projects/Django/antubel_com
    
    <Directory /Users/antubel/Projects/Django/antubel_com>
        <Files wsgi.py>
            Order deny,allow
            Allow from all
        </Files>
    </Directory>
    
  12. アパッチを再起動しました。ブラウザに localhost/admin/ を読み込もうとしたところ、上記のエラーが発生しました。

助けてください :)

ありがとう、ダスエビア

4

1 に答える 1

3

設定ファイルでは Postgres に接続するユーザーが指定されていないため、コードを実行しているユーザー アカウントを使用して接続しようとしています (また、Apache の下で mod_wsgi によって実行されているため、そのユーザーは です_www)。

Postgres.app を使用して Postgres を実行している場合は、データベースUSERNAMEの値をシステム上のアカウントのユーザー名にfoo設定USERNAMEする必要がありますfoo

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'my_db_name',
    'USER': 'foo',
    'PASSWORD': '',
    'HOST': '',
    'PORT': '',
    }
}

別のユーザーとしてコードを実行するように apache 構成を更新することもできます。代わりにそれを実行したい場合は、mod_wsgi ドキュメントのWSGIDaemonProcessを参照してください。

于 2013-02-13T23:31:41.200 に答える