it-swarm-ja.com

Apache仮想ホストはウェブサイトの代わりに「インデックス」ページを表示します

ブラウザーにドメイン名を入力すると、私のWebサイトのコンテンツではなく、「/のインデックス」ページが表示されます。 ec2でDjango、mod-wsgi、Apacheを使用しています。

私のApacheconfファイルは次のようになります。

<VirtualHost 52.79.**.**:80>
ServerAdmin [email protected]
DocumentRoot /var/www/qna
Alias /m/ /var/www/qna/static/
Alias /upfiles/ /var/www/qna/askbot/upfiles/
<DirectoryMatch “/var/www/qna/askbot/skins/([^/]+)/media”>
Require all granted
</DirectoryMatch>
<Directory “/var/www/qna/askbot/upfiles”>
Require all granted
</Directory>
WSGIDaemonProcess qna
WSGIProcessGroup qna
WSGIScriptAlias / /var/www/qna/Django.wsgi
<LocationMatch “(?!/m)/admin(?!/media)”>
RewriteEngine on
RewriteRule /admin(.*)$ https://mywebsite.com/admin$1 [L,R=301]
</LocationMatch>
CustomLog /var/log/Apache2/t_access_log common
ErrorLog /var/log/Apache2/qna_error_log
LogLevel debug
</VirtualHost>
<VirtualHost 52.79.**.**:443>
ServerAdmin [email protected]
DocumentRoot /var/www/qna
<LocationMatch "^(?!/admin)">
RewriteEngine on
RewriteRule Django.wsgi(.*)$ http://mywebsite.com$1 [L,R=301]
</LocationMatch>
SSLEngine on
SSLCertificateFile /etc/ssl/private/qna.crt
SSLCertificateKeyFile /etc/ssl/private/qna.key
Alias /admin/media/ /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/static/media/
Alias /m/ /var/www/qna/static/
WSGIScriptAlias / /var/www/qna/Django.wsgi
CustomLog /var/log/Apache2/qna_access_log common
ErrorLog /var/log/Apache2/qna_error_log
</VirtualHost>

私は初心者ですが、Apacheの設定に根本的な問題があると思います。私はこれに過去4日間を費やし、これを解決するためにあらゆることを試みましたが、何も解決しませんでした。

ApacheはDjangoを理解していないため、WSGIの設定に問題があると思います。 settings.pyファイルは/ var/www/qnaにあります。

Django1.8.8およびPython 2.7.6、Amazon ec2Ubuntu。よろしくお願いします。助けてください。

ServerName mysite.comとServerAliasに変更して追加しようとしましたが、この場合、500内部サーバーエラーが発生します。

VirtualHost configuration:
*:80                   mysite.com (/etc/Apache2/sites-enabled/qna.conf:1)
*:443                  mysite.com (/etc/Apache2/sites-enabled/qna.conf:31)
ServerRoot: "/etc/Apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/Apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/Apache2" mechanism=fcntl 
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/Apache2/Apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used

しかし、私が実行するとpython maange.py runserver 0.0.0.0:80問題なく動作します。ドメイン名を入力してウェブサイトにアクセスできます。

1
SJ H

これがあなたの設定です。読みやすさのために私の私を再フォーマットしました:

<VirtualHost 52.79.**.**:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/qna

    Alias /m/ /var/www/qna/static/
    Alias /upfiles/ /var/www/qna/askbot/upfiles/

    <DirectoryMatch “/var/www/qna/askbot/skins/([^/]+)/media”>
        Require all granted
    </DirectoryMatch>

    <Directory “/var/www/qna/askbot/upfiles”>
        Require all granted
    </Directory>

    WSGIDaemonProcess qna
    WSGIProcessGroup qna
    WSGIScriptAlias / /var/www/qna/Django.wsgi

    <LocationMatch “(?!/m)/admin(?!/media)”>
        RewriteEngine on
        RewriteRule /admin(.*)$ https://mywebsite.com/admin$1 [L,R=301]
    </LocationMatch>

    CustomLog /var/log/Apache2/t_access_log common
    ErrorLog /var/log/Apache2/qna_error_log

    LogLevel debug

</VirtualHost>

<VirtualHost 52.79.**.**:443>
    ServerAdmin [email protected]
    DocumentRoot /var/www/qna

    <LocationMatch "^(?!/admin)">
        RewriteEngine on
        RewriteRule Django.wsgi(.*)$ http://mywebsite.com$1 [L,R=301]
    </LocationMatch>

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/qna.crt
    SSLCertificateKeyFile /etc/ssl/private/qna.key

    Alias /admin/media/ /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/static/media/
    Alias /m/ /var/www/qna/static/

    WSGIScriptAlias / /var/www/qna/Django.wsgi

    CustomLog /var/log/Apache2/qna_access_log common
    ErrorLog /var/log/Apache2/qna_error_log

</VirtualHost>

仮想ホストが設定されている場合、52.79.**.**:80のIPアドレスを介してWebサイトにアクセスしようとすると、すべて問題ないと思いますが、example.comのようなホスト名/ドメイン名を介してアクセスしている場合は、窒息しています。 ?その場合は、次のように仮想ホストラインを設定する必要があります。

<VirtualHost *:80>

そしてこれはHTTPSの場合:

<VirtualHost *:443>

次にwithinこれらの構成ブロックでは、次のようにServerName値を設定します。もちろん、これは完全な構成ではありませんが、変更する必要があるものの単なる例です。

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/qna

    ServerName www.example.com
    ServerAlias www example.* www.example.*

このようなことを行うと、仮想ホスト構成が正しく機能し、www.example.comがその構成に接続された実際のサーバー名になり、ServerAliasにより、構成はwww.example.comexample.comなどのwww.example.netの他のバリアントをキャプチャできます。

1
JakeGould

DirectoryIndexをノードに追加する必要があります。

https://httpd.Apache.org/docs/2.4/mod/mod_dir.html#directoryindex を参照してください

忍者編集:私はすでにこれを詳述している多くのコメントを見ませんでした

0
jc_ryan

JakeGould のおかげで解決策が見つかりました。どうもありがとう、あなたは私の日を救った!それはかなり単純で、許可の問題でした。

提案されたように、私は/var/log/Apache2/qna_error_logをチェックしました、そしてそれはIOError: [Errno 13] Permission denied: '/var/www/qna/log/askbot.log'と言いました

そこで、/var/www/qna/logを使用してSudo chmod -R 777 /var/www/の権限を変更しました(777を設定することが良い解決策だとは思いませんが、変更しました)。

今、私は次のエラーが発生しました:

ExtractionError: Can't extract file(s) to Egg cache

The following error occurred while trying to extract file(s) to the Python Egg
cache:

  [Errno 13] Permission denied: '/var/www/.python-eggs'

The Python Egg cache directory is currently set to:

  /var/www/.python-eggs`

here で提案されているように、新しいディレクトリ/usr/local/pylonsを作成し、Django.wsgi/var/www/qnaを次のように編集しました。

import os
os.environ['PYTHON_Egg_CACHE'] = '/usr/local/pylons/python-eggs'

そしてそれは修正されました!これで、「インデックス」ページではなく、自分のWebサイトが表示されます。

0
SJ H