Виртуальный хост 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.
ниндзя редактировать: я не видел многочисленные комментарии, уже подробно это