Виртуальный хост Apache показывает страницу "index of" вместо веб-сайта

При вводе имени домена в браузере отображается страница "index of /" вместо содержимого моего веб-сайта. Я использую django, mod-wsgi и apache на ec2.

Мой файл apache conf выглядит так:

<VirtualHost 52.79.**.**:80>
ServerAdmin webmaster@localhost
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 webmaster@localhost
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 что-то не так. Я провел последние четыре дня на этом, пытался все решить, но ничего не решил.

Я предполагаю, что с настройкой WSGI что-то не так, потому что apache не понимает django. Файл settings.py находится в / var / www / qna.

Django 1.8.8 и Python 2.7.6, на Amazon ec2 Ubuntu. Заранее спасибо. Пожалуйста помоги.

Я попытался изменить и добавил ServerName mysite.com, а также ServerAlias, но в этом случае я получаю 500 Internal Server Error.

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 работает нормально без проблем. Я могу зайти на сайт, набрав доменное имя.

3 ответа

Решение

Вот ваши конфиги; переформатировал меня для удобства чтения

<VirtualHost 52.79.**.**:80>
    ServerAdmin webmaster@localhost
    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 webmaster@localhost
    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>

Я предполагаю, что если у вас есть настройка виртуального хоста, если вы пытаетесь получить доступ к веб-сайту через IP-адрес 52.79.**.**:80 все хорошо, но если вы обращаетесь к нему через имя хоста / имя домена, как example.com тогда это задыхается, правильно? Если это так, то вам нужно установить строки виртуального хоста следующим образом:

<VirtualHost *:80>

И это для HTTPS:

<VirtualHost *:443>

Затем внутри этих блоков конфигурации вы бы установить ServerName ценность как это; конечно, это не полный конфиг, а всего лишь пример того, что вы должны изменить:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/qna

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

Выполнение чего-либо подобного позволило бы конфигурации виртуального хоста корректно работать с www.example.com быть фактическим именем сервера, подключенного к этой конфигурации, а затем ServerAlias позволяет конфиг захватывать другие варианты www.example.com такие как example.com или же www.example.net,

JakeGould решение благодаря 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`

Как предложено здесь, я сделал новый каталог /usr/local/pylons и отредактировано django.wsgi в /var/www/qna как показано ниже:

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

И это исправлено! Теперь я вижу свой сайт, а не страницу "index of".

Вам нужно добавить DirectoryIndex для вашего узла.

См. https://httpd.apache.org/docs/2.4/mod/mod_dir.html.

ниндзя редактировать: я не видел многочисленные комментарии, уже подробно это

Другие вопросы по тегам