2013-08-02 11 views
8

私は既にDjango Webアプリケーションを動作させています。インターネット経由で表示できるようにしたかったのです。私は誰かに見せたいだけのプロトタイプであるため、Djangoを単独で使うことも考えています。セキュリティは私にとって今の優先事項ではありません。しかし、これは実現不可能に見えるので(少なくとも私はそれをやり遂げることができませんでした)、私はApacheに移ります。ApacheでDjangoをデプロイする

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

今まで私が持っている: を - インストール済みのApache(および作品) - インストール済みのmod_wsgi(およびモジュールは、Apacheにロードされる) を - 私のDjangoのWebアプリケーションが入っているので、/ホーム/ myuserの/ WWW/myappの/(または、少なくとも私はmanage.pyファイルを保存していますが、アプリケーションの残りの部分は/ home/myuser/www/myapp/myapp /にあります)、そこにポイントを置くようにしました。だから私は、次の内容(自宅/ 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() 

ところで私は、ホーム/ myuserの/で新しいプロジェクトを作成するときにDjangoが自動的に生成WSGIを持っています。。/www/myapp/myapp/wsgi.pyたぶん私はこのいずれかを使用する必要がありますが、私は今まで発見したチュートリアルのどれもが、このファイルに言及行わない任意の方法を、その内容は次のとおりです。

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 [email protected] 

    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を参照して、 'It works!'と表示します。

お願いします。私は何が欠けていますか?

答えて

8

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

a2ensite myapp 

どうやらあなただけの「サイト利用可能/」で設定ファイルを作成し、それが十分ではありませんので。)

EDIT:あなたはおそらく、上記のコマンドを入力する前に、デフォルトのサイトを無効にしたいです:

a2dissite default 

これが役に立ちます。

0

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

関連する問題