8

すでに Django Web アプリケーションが動作しており、インターネット経由で表示できるようにしたいと考えていました。Django を単独で使用することも検討します。これは、誰かに見せたいプロトタイプにすぎず、セキュリティは今のところ優先事項ではないためです。しかし、これを達成するのは不可能に見えるので (少なくとも私は達成できていません)、私は Apache に移行しています。

問題は、多くのチュートリアルがあり、それぞれが異なることを行うことです。

- Apache をインストール (および動作) - mod_wsgi をインストール (およびモジュールを Apache にロード) manage.py ファイル、残りのアプリケーションは /home/myuser/www/myapp/myapp/ にあります)、そこに apache ポイントを作成しようとしました。そこで、次の内容で (home/myuser/www/myapp/apache.conf/web.wsgi を作成しました。

import os, sys
sys.path.append('/home/myuser/www/myapp/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'

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

ところで、/home/myuser/www/myapp/myapp/wsgi.py に新しいプロジェクトを作成するときに、Django が自動的に生成する wsgi もあります。おそらくこれを使用する必要がありますが、これまでに見つけたチュートリアルでこのファイルについて言及しているものはありません。いずれにせよ、その内容は次のとおりです。

import os
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix this, use
# mod_wsgi daemon mode with each site in its own daemon process, or use
# os.environ["DJANGO_SETTINGS_MODULE"] = "myapp.settings"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Apply WSGI middleware here.
# from myapp.wsgi import MyAppApplication
# application = MyAppApplication(application)

最後に、デフォルトのファイルをテンプレートとして使用して、ファイル /etc/apache2/sites-available/myapp を作成しました。次のようになります。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/myuser/www/myapp/

    <Directory />
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler mod_python .py
        PythonHandler mod_python.publisher | .py
        PythonDebug On
    </Directory>

    <Directory /home/myuser/www/myapp/>
        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 /home/myuser/www/myapp/error.log

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

    CustomLog /home/myuser/www/myapp/access.log combined
</VirtualHost>

説明した努力にもかかわらず、localhost に移動すると、デフォルトの Apache Web が表示され、「動作します!」と表示されます。

何か助けてください。私は何が欠けていますか?

4

2 に答える 2

8

Apache で「myapp」サイトを有効にしましたか?

a2ensite myapp

どうやら「sites-available /」に設定ファイルを作成しただけなので、それだけでは不十分です;)

編集: 上記のコマンドを入力する前に、おそらくデフォルトのサイトを無効にする必要があります:

a2dissite default

お役に立てれば。

于 2013-08-02T10:01:28.570 に答える
0

デフォルトのサイトが有効になっているようです。/etc/apache2/sites-available/000-default (またはそのようなもの、ATM を思い出せませんが、デフォルトの何か) を削除して、apache を再起動します。

于 2013-08-02T09:20:32.217 に答える