2017-09-28 7 views
0

Webエクスプローラで唯一のIPまたはサーバ名でリクエストを発行した後、apacheはデフォルトの静的ホームページをエクスプローラに返します。 mod_wsgiでdjangoとapacheを使用してサイトを展開しています(つまり、Apache Webサーバーにdjangoアプリケーション)。 view.pyで定義されたdjangoマッピングルールに処理をルーティングして、Apacheを実行しているサーバーにリクエストを発行したときにそのサイトのホームページ(インデックスページ)を動的に生成する方法前もって感謝します!djangoがApacheの代わりにデフォルトのホームページをレンダリングする方法

私は、メインのApacheの 'httpd.confの' で、次の構成を追加しました:myapp.wsgiに

<VirtualHost 127.0.0.1:80> 

    ServerName 127.0.0.1 
    ServerAlias example.com 
    ServerAdmin [email protected] 

    DocumentRoot /usr/local/www/documents 

    Alias /robots.txt /usr/local/www/documents/robots.txt 
    Alias /favicon.ico /usr/local/www/documents/favicon.ico 

    Alias /media/ /usr/local/www/documents/media/ 

    <Directory /usr/local/www/documents> 
    Require all granted 
    </Directory> 

    WSGIDaemonProcess 127.0.0.1 processes=2 threads=15 display-name=%{GROUP} 
    WSGIProcessGroup 127.0.0.1 

    WSGIScriptAlias//usr/local/www/wsgi-scripts/myapp.wsgi 

    <Directory /usr/local/www/wsgi-scripts> 
    Order allow,deny 
    Allow from all 
    </Directory> 

</VirtualHost> 

コード:

def application(environ, start_response): 
    status = '200 OK' 
    output = b'Hello World!' 

    response_headers = [('Content-type', 'text/plain'), 
         ('Content-Length', str(len(output)))] 
    start_response(status, response_headers) 

    return [output] 

をその後、私は127.0.0.1を発行し、エクスプローラで「表示それは動作します! '、これはapacheによって生成されるデフォルトのページですが、代わりに' Hello world! 'この場合返されます。私はちょうどIPアドレスまたはサイトアドレスを発行したばかりのときに、デフォルトホームページを生成する作業がdjangoに直接委譲され、Apacheによって静的index.htmlを返すのではなく、動的に処理することを望みます。私はWSGIScriptAlias//usr/local/www/wsgi-scripts/myapp.wsgiを設定しましたが、これはまだ動作していないようです。

+0

いいえ、*知られていません。特に指定しない限り、「デフォルトの静的なホームページ」は表示されません。どのようにmod_wsgiを最初に設定しましたか? –

+0

@DanielRosemanが尋ねるように、使用している設定を指定します。 WSGIScriptAlias/some/path/to/wsgi.py'と適切な他の設定を追加して適切な場所でそのリソースにアクセスできるようにすると、WSGIアプリケーションはサイトのルートに対する要求を引き継ぐはずです。そうでない場合は、仮想ホスト構成を掘り下げてしまった可能性があります。 –

+0

@GrahamDumpleton設定と必要な情報が提供されています。 –

答えて

0

バーチャルホストは、127.0.0.1ではそのように動作しません。特別な扱いをします。あなたの設定に唯一のものがVirtualHostでない限り、Apacheは最初に発見したVirtualHostの定義(通常はデフォルトサイト)を使用することに戻ります。

ので、通常、あなたが持っているでしょう:

ある
<VirtualHost *:80> 
    ServerName my.fqdn.host.name 
    ... 
</VirtualHost> 

は、VirtualHostディレクティブとServerNameにはIPはURL、IPアドレスではなく、中に表示される実際のホスト名ではありません。この1に取って代わるVirtualHostにつながること、

httpd.confで前VirtualHostあったのか、それはextra/httpd-vhosts.conf含め含めましたか?

+0

Dumpleton氏に感謝します。 –

関連する問題