1

При вводе имени домена в браузере отображается страница «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 ответа3

0

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

<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 .

0

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

См. Https://httpd.apache.org/docs/2.4/mod/mod_dir.html#directoryindex.

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

0

Найденное решение благодаря 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 pylons и отредактировал django.wsgi в /var/www/qna как показано ниже:

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .