O host virtual do Apache mostra a página “índice de” em vez do site

1

Digitar o nome do domínio em um brower mostra a página "index of /", em vez do conteúdo do meu website. Estou usando o django, mod-wsgi e apache no ec2.

Meu arquivo conf do apache se parece com isto:

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

Eu sou um novato e presumo que há algo fundamentalmente errado com a configuração do apache. Eu passei os últimos quatro dias nisso, tentei de tudo para resolver isso, mas não resolvi nada.

Eu suponho que há algo errado com a configuração do WSGI porque o apache não entende o django. O arquivo settings.py está em / var / www / qna.

Django 1.8.8 e Python 2.7.6, no Amazon ec2 Ubuntu. Agradeço antecipadamente. Por favor ajude.

Eu tentei mudar para e adicionei ServerName mysite.com e também ServerAlias mas, neste caso, recebo 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

Mas quando executo python maange.py runserver 0.0.0.0:80 , tudo funciona bem sem problemas. Eu posso acessar o site digitando o nome do domínio.

    
por SJ H 04.02.2016 / 04:47

3 respostas

0

Aqui estão suas configurações; reformatado meu eu para legibilidade:

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

Estou assumindo que, se você tiver uma configuração de host virtual, se tentar acessar o site por meio do endereço IP 52.79.**.**:80 , tudo estará bem, mas se você estiver acessando-a por meio de um nome de host / domínio como example.com então é asfixia, correto? Se for esse o caso, o que você precisa fazer é definir as linhas do host virtual da seguinte forma:

<VirtualHost *:80>

E isso para HTTPS:

<VirtualHost *:443>

Então dentro desses blocos de configuração, você deve definir um valor ServerName como este; claro que isso não é uma configuração completa, mas apenas um exemplo do que você deve mudar:

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

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

Fazer algo assim permitiria que a configuração do host virtual funcionasse corretamente com www.example.com sendo o nome real do servidor conectado a essa configuração e, em seguida, ServerAlias permite que a configuração capture outras variantes de www.example.com , como example.com ou www.example.net .

    
por 04.02.2016 / 05:10
0

Você precisa adicionar um DirectoryIndex ao seu nó.

Veja o link

ninja edit: Eu não vi os numerosos comentários já detalhando isso

    
por 04.02.2016 / 05:32
0

O encontrou a solução graças a JakeGould . Muito obrigado, você salvou meu dia! Foi bastante simples, foi a questão da permissão.

Como sugerido, verifiquei /var/log/apache2/qna_error_log e ele disse IOError: [Errno 13] Permission denied: '/var/www/qna/log/askbot.log'

Então eu mudei a permissão de /var/www/qna/log usando sudo chmod -R 777 /var/www/ (não acredito que configurar o 777 seja uma boa solução, mas acabei de fazer).

Agora recebi o seguinte erro:

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'

Como sugerido em aqui , Criei um novo diretório /usr/local/pylons e editei django.wsgi em /var/www/qna conforme abaixo:

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

E está consertado! Agora vejo meu site, não o "índice de" página.

    
por 04.02.2016 / 07:24